数据库课程设计学生宿舍管理系统.docx
- 文档编号:30565115
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:41
- 大小:379.27KB
数据库课程设计学生宿舍管理系统.docx
《数据库课程设计学生宿舍管理系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计学生宿舍管理系统.docx(41页珍藏版)》请在冰豆网上搜索。
数据库课程设计学生宿舍管理系统
课程设计
课题名称:
数据库课程设计
设计课题:
学生公寓管理系统
专业:
班级:
姓名:
学号:
同组人:
指导教师:
1、管理系统设计的背景、意义及目标
●设计背景
●设计意义
●设计目标
2、系统开发环境
3、系统需求分析
●基本功能需求
●功能模块
●数据字典
4、概念结构设计
●概念设计
●E_R模型设计
5、逻辑结构设计
●将E_R图转换为关系模型
●各表关系模型图
6、数据实施和维护
●功能实现代码
●系统实现效果
7、个人实现的功能
8、总结
1、管理系统设计的背景、意义及目标
●设计背景
随着IT事业的发展,如今,我们已经全面跨入信息时代。
计算机被广泛的应用于各个行业,人工战略已经转化为信息战略,如何在短时间内获取大量信息并整合信息,成为立足于时代的关键。
为了适应考生人数的急剧增长,当今社会各大高校都在进行扩招政策,学生数量的急剧增加带来信息量的成倍增长,由于信息管理的不善与疏忽,各大高校大小事故时有发生。
进行正确的信息管理,对于信息及时处理和反应,能够最大程度的减少学校以及在校学生的损失,减小潜在危机。
学生宿舍是学生生活的基本单位,是同学休息与学习的地方,为了保障同学入住学生宿舍的安全性,信息的处理和管理极为重要。
据了解,本校的宿舍信息管理仍然使用传统的手工方式,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。
数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。
学校的宿舍管理缺乏系统,规范的信息管理手段。
建立学生宿舍管理系统,使宿舍管理工作系统化,规范化,便捷化,程序化,避免宿舍管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改宿舍情况。
●设计的意义
高校规模的扩大,在校学生的基本情况随之层次化、多样化、复杂化,相应的,学生管理工作面临严峻的挑战。
高校学生信息日渐庞大,相应的宿舍管理工作变得复杂而困难。
传统的账本化工作模式,手工记录学生信息并存档,这样的人工管理方式费时、费事、费力,信息获取慢,更新滞后,查阅困难,容易出错。
为了给学生提供一个安全舒适的工作、生活、学习环境,方便宿舍管理工作的同时为学生、教师提供准确实时的信息至关重要。
本校的宿舍信息管理,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。
数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。
以上的管理缺陷对学生宿舍管理造成了相当大的阻力,工作进展困难,问题解决的周期过长,资料整改工作量过大。
为了改善学生宿舍管理情况,运用数据库技术对学生信息进行处理和统一管理,在校园内实现宿舍无纸化办公。
利用计算机的特点,利用互联网进行远程操作,制定学生客户端,教师客户端,管理员客户端,实现有针对性信息化管理,充分发挥计算机的高效性、可靠性、保密性、大容量、低成本等特点,建立学生宿舍管理系统,对宿舍相关信息进行统一管理。
新型管理方式——学生宿舍管理系统,将帮助宿舍管理人员提高工作效率,全面地掌握宿舍情况,提高宿舍安全系数,快速解决学生入住学生宿舍遇到的问题,帮助管理人员与教师及时掌握学生情况。
●设计目标
开发设计学生宿舍管理系统,运用简单的计算机操作实现快速检索和快速查找,方便信息录入和更新,本系统仅针对管理员进行使用。
实现信息查询、日常管理、宿舍管理、信息维护几个方面的系统化管理:
1、信息查询:
a)宿舍信息:
包括宿舍楼编号、寝室编号、入住人数、寝室入住人员学号、用水量、用电量、水费、电费。
b)学生信息:
包括学生姓名、学号、宿舍号
c)宿舍基本配置:
包括床、柜子、灯、风扇、电视机
2、宿舍管理:
学生管理(入住、更换宿舍、);房间管理(增加、删除、查询)
3、信息维护:
学生个人信息更新、宿舍信息更新、宿舍设备信息更新。
2、系统开发环境
开发所使用数据库系统:
MySql
开发环境:
windows7
开发工具:
MicrosoftVisualStudio2010
开发语言:
C++、SQL
3、系统需求分析
●基本功能需求
学生宿舍管理系统为了更好的进行宿舍管理而设计。
用户的需求具体体现在各种信息的输入、修改和查询。
系统功能实现如下:
1、提供学生的入住信息的录入,更换宿舍信息登记。
提供各宿舍的具体信息,如宿舍楼栋、宿舍号、水费、电费等。
并可通过查询宿舍号得到宿舍的具体信息、入住的学生信息、宿舍的设备信息等。
2、提供管理员增加、删除各信息的功能。
●功能模块
本宿舍管理系统的主要功能为:
学生管理、宿舍信息管理、宿舍设备信息管理、信息查询、息更新、信息维护。
●数据字典
(1)宿舍设备情况数据字典
(2)宿舍信息情况数据字典
(3)学生信息情况数据字典
4、概念结构设计
●概念设计
(1)学生实体:
用于显示学生的属性,包括姓名、学号、宿舍编号。
(2)宿舍实体:
用于显示宿舍的属性,包括楼号、宿舍号、入住学生学号、可住人数、已住人数、用水量、水费、用电量、电费。
(3)宿舍设备实体:
用于显示宿舍设备的属性,包括床、柜子、风扇、灯、电视机。
●E_R模型设计
(1)学生实体E_R图
(2)宿舍实体E_R图
(3)宿舍物品设备实体E_R图
(4)各实体关系E_R图
5、逻辑结构设计
●将E-R图转换为关系模型:
(1)Student:
(num、name、dormitoryCat);
(2)Room:
(dormitoryCat、dormitory、room、studentNum、water、waterCharge、electricity、electricityCharge);
(3)Item:
(dormitoryCat、bed、cabinet、light、fan、tv)
●各表关系模型图:
(1)Item表外键设计:
(2)Student表外键设计:
(3)各表之间的关系模型图,Item表与Student表通过外键与Room
联系:
6、数据实施和维护
●功能实现的代码
//dbstruct.h
#pragmaonce
classdbStruct
{
public:
MYSQLmy;
charerrMsg[300];
//学生表
charStudentNum[9];
charStudentName[20];
//宿舍
chardormitoryCat[6];
chardormitory[3];
charroom[4];
doublewater;
doubleelectricity;
doublewaterCharge;
doubleelectricityCharge;
unsignedintmembers;
//物件
boolbed;
boolcabinet;
boollight;
boolfan;
booltv;
dbStruct();
~dbStruct();
boolInit();
boolGetStruct();
//添加学生表一项
boolInsertStudentTable();
//改变一项
boolSetStudentTable(charnum[9]);//主键为num,vachar(8)
//获取一项
boolGetStudent(charnum[9]);
//******************删除一项
boolDeleteStudent(charnum[9]);
//添加宿舍表一项
boolInsertDormitoryTable();
//改变一项
boolSetDormitoryTable(chardormitoryCat[6]);//主键为dormitoryCat,varchar(6)
//获得一项
boolGetDormitory(chardormitoryCat[6]);
//删除一项
boolDeleteDormitory(chardormitoryCat[6]);
//添加物品表一项
boolInsertItemTable();
//改变一项
boolSetItemTable(chardormitoryCat[6]);//主键为dormitoryCat,varchar(6)
//获得一项
boolGetItem(chardormitoryCat[6]);
//******************删除一项
boolDeleteItem(chardormitoryCat[6]);
voidErrMB();
};
//dbStruct.cpp
#include"stdafx.h"
dbStruct:
:
dbStruct()
{
this->water=0.0;
this->electricity=0.0;
this->waterCharge=0.0;
this->electricityCharge=0.0;
this->members=4;
this->bed=TRUE;
this->cabinet=TRUE;
this->light=TRUE;
this->fan=TRUE;
this->tv=TRUE;
}
dbStruct:
:
~dbStruct()
{
mysql_close(&my);
}
booldbStruct:
:
Init()
{
mysql_init(&this->my);
if(!
mysql_real_connect(&this->my,"localhost","root","fast","dormitory",0,NULL,0))
{
StringCchPrintfA(errMsg,300,"获取寝室物件信息错误:
%s\n",mysql_error(&this->my));
returnfalse;
}
mysql_query(&this->my,"SETNAMESgbk");
returntrue;
}
////////////////////////////////////////////////////////
booldbStruct:
:
InsertStudentTable()
{
if(this->dormitoryCat==NULL||
this->StudentName==NULL||this->StudentNum==NULL)
{
StringCchPrintfA(errMsg,100,"添加学生信息错误:
值不完整\n");
returnFALSE;
}
charquery[300];
//获得该寝室已住人数数
StringCchPrintfA(query,300,
"SELECTcount(dormitoryCat)FROMstudentWHEREdormitoryCat=\"19425\"",
this->dormitoryCat);
mysql_query(&this->my,query);//可以确保在数据库工作正常的情况下,能够查询到惟一的一条数据
MYSQL_RES*res;
res=mysql_use_result(&this->my);
MYSQL_ROWrow;
inti;//i为已住人数
while((row=mysql_fetch_row(res))!
=NULL)
{
i=row[0][0]-'0';
}
mysql_free_result(res);
if(++i>4)
{
//超过了寝室最大人员数量
StringCchPrintfA(errMsg,300,"添加学生信息错误:
此寝室已满\n");
//**********是否自动添加宿舍信息
returnFALSE;
}
//可以添加学生信息
StringCchPrintfA(query,300,
"INSERTINTOstudent(num,name,dormitoryCat)VALUES(\"%s\",\"%s\",\"%s\")",
this->StudentNum,this->StudentName,this->dormitoryCat);
if(mysql_query(&this->my,query)!
=0)
{
StringCchPrintfA(errMsg,300,"添加学生信息错误:
%s\n",mysql_error(&this->my));
//**********是否需要自动添加宿舍信息
returnFALSE;
}
returnTRUE;
}
booldbStruct:
:
DeleteStudent(charnum[9])
{
charquery[300];
StringCchPrintfA(query,300,
"DELETEFROMstudentWHEREnum=\"%s\"",num);
if(mysql_query(&this->my,query)!
=0)
{
StringCchPrintfA(errMsg,300,"删除学生信息错误:
%s\n",mysql_error(&this->my));
//**********是否需要自动添加宿舍信息
returnFALSE;
}
returnTRUE;
}
booldbStruct:
:
GetStudent(charnum[9])
{
charquery[300];
StringCchPrintfA(query,300,"SELECT*FROMstudentWHEREnum=\"%s\"",num);
if(mysql_query(&this->my,query)!
=NULL)
{
StringCchPrintfA(errMsg,300,"获取学生信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
MYSQL_RES*res;
MYSQL_ROWrow;
res=mysql_use_result(&this->my);
while((row=mysql_fetch_row(res))!
=NULL)
{
StringCchPrintfA(this->StudentNum,9,row[0]);
StringCchPrintfA(this->StudentName,20,row[1]);
StringCchPrintfA(this->dormitoryCat,6,row[2]);
}
mysql_free_result(res);
returnTRUE;
}
////////////////////////////////////////////////////////
booldbStruct:
:
InsertDormitoryTable()
{
if(this->dormitoryCat==NULL||this->room==NULL||this->dormitory==NULL)
{
StringCchPrintfA(errMsg,300,"添加宿舍信息错误:
值不完整\n");
returnFALSE;
}
charquery[300];
StringCchPrintfA(query,300,
"INSERTINTOroom(dormitoryCat,dormitory,room,\
studentsNum,water,electricity,waterCharge,\
electricityCharge)VALUES(\"%s\",\"%s\",\"%s\",%d,%.2lf,%.2lf,%.2lf,%.2lf)",
this->dormitoryCat,this->dormitory,this->room,
this->members,this->water,this->electricity,
this->waterCharge,this->electricityCharge);
if(mysql_query(&this->my,query)!
=0)
{
StringCchPrintfA(errMsg,300,"添加宿舍信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
this->InsertItemTable();
returnTRUE;
}
booldbStruct:
:
DeleteDormitory(chardormitoryCat[6])
{
//由于外键约束,删除此寝室时,相应的student和item表中的此寝室信息自动删除.
charquery[300];
StringCchPrintfA(query,300,"DELETEFROMroomWHEREdormitoryCat=\"%s\"",dormitoryCat);
if(mysql_query(&this->my,query)!
=0)
{
StringCchPrintfA(errMsg,300,"删除宿舍信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
returnTRUE;
}
booldbStruct:
:
GetDormitory(chardormitoryCat[6])
{
charquery[300];
StringCchPrintfA(query,300,"SELECT*FROMroomWHEREdormitoryCat=\"%s\"",dormitoryCat);
if(mysql_query(&this->my,query)!
=NULL)
{
StringCchPrintfA(errMsg,300,"获取寝室信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
MYSQL_RES*res;
MYSQL_ROWrow;
res=mysql_use_result(&this->my);
while((row=mysql_fetch_row(res))!
=NULL)
{
StringCchPrintfA(this->dormitoryCat,6,row[0]);
StringCchPrintfA(this->dormitory,3,row[1]);
StringCchPrintfA(this->room,4,row[2]);
this->members=atoi(row[3]);
this->water=atof(row[4]);
this->electricity=atof(row[5]);
this->waterCharge=atof(row[6]);
this->electricityCharge=atof(row[7]);
}
mysql_free_result(res);
returnTRUE;
}
////////////////////////////////////////////////////////
booldbStruct:
:
InsertItemTable()
{
if(this->dormitoryCat==NULL)
{
StringCchPrintfA(errMsg,300,"添加宿舍信息错误:
值不完整\n");
returnFALSE;
}
charquery[300];
StringCchPrintfA(query,300,
"INSERTINTOitem(dormitoryCat,bed,cabinet,light,fan,tv)VALUES(\"%s\",%d,%d,%d,%d,%d)",
this->dormitoryCat,this->bed,this->cabinet,this->light,
this->fan,this->tv);
if(mysql_query(&this->my,query)!
=0)
{
StringCchPrintfA(errMsg,300,"添加宿舍物件信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
returnTRUE;
}
booldbStruct:
:
GetItem(chardormitoryCat[6])
{
charquery[300];
StringCchPrintfA(query,300,"SELECT*FROMitemWHEREdormitoryCat=\"%s\"",dormitoryCat);
if(mysql_query(&this->my,query)!
=NULL)
{
StringCchPrintfA(errMsg,300,"获取寝室物件信息错误:
%s\n",mysql_error(&this->my));
returnFALSE;
}
MYSQL_RES*res;
MYSQL_ROWrow;
res=mysql_use_result(&this->my);
while((row=mysql_fetch_row(res))!
=NULL)
{
StringCchPrintfA(this->dormitoryCat,6,row[0]);
this->bed=(atoi(row[3])==1?
true:
false);
this->cabinet=(atof(row[4])==1?
true:
false);
this->light=(atof(row[5])==1?
true:
fals
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 学生宿舍 管理 系统