数据库课程设计-学生宿舍管理系统(共31页)_第1页
数据库课程设计-学生宿舍管理系统(共31页)_第2页
数据库课程设计-学生宿舍管理系统(共31页)_第3页
数据库课程设计-学生宿舍管理系统(共31页)_第4页
数据库课程设计-学生宿舍管理系统(共31页)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理课程设计说明书学生宿舍管理系统学 院: 计算机与信息科学学院专 业: 网络工程 班 级: 网络1402 姓名学号: 吴琳琳 1420140231 姓名学号: 周岐浪 1420140217 指导教师: 高金华 职称 讲师完成时间: 2016年12月 1、管理系统设计的背景、意义及目标l 设计背景l 设计意义l 设计目标2、系统开发环境3、系统需求分析l 基本功能需求l 功能模块l 数据字典4、概念结构设计l 概念设计l E_R模型设计5、逻辑结构设计l 将E_R图转换为关系模型l 各表关系模型图6、数据实施和维护l 功能实现代码l 系统实现效果7、个人实现的功能8、总结1、管理系统设计

2、的背景、意义及目标l 设计背景随着IT事业的发展,如今,我们已经全面跨入信息时代。计算机被广泛的应用于各个行业,人工战略已经转化为信息战略,如何在短时间内获取大量信息并整合信息,成为立足于时代的关键。为了适应考生人数的急剧增长,当今社会各大高校都在进行扩招政策,学生数量的急剧增加带来信息量的成倍增长,由于信息管理的不善与疏忽,各大高校大小事故时有发生。进行正确的信息管理,对于信息及时处理和反应,能够最大程度的减少学校以及在校学生的损失,减小潜在危机。学生宿舍是学生生活的基本单位,是同学休息与学习的地方,为了保障同学入住学生宿舍的安全性,信息的处理和管理极为重要。据了解,本校的宿舍信息管理仍然使

3、用传统的手工方式,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。学校的宿舍管理缺乏系统,规范的信息管理手段。建立学生宿舍管理系统,使宿舍管理工作系统化,规范化,便捷化,程序化,避免宿舍管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改宿舍情况。l 设计的意义高校规模的扩大,在校学生的基本情况随之层次化、多样化、复杂化,相应的,学生管理工作面临严峻的挑战。高校学生信息日渐庞大,相应的宿舍管理工作变得复杂而困难。传统

4、的账本化工作模式,手工记录学生信息并存档,这样的人工管理方式费时、费事、费力,信息获取慢,更新滞后,查阅困难,容易出错。为了给学生提供一个安全舒适的工作、生活、学习环境,方便宿舍管理工作的同时为学生、教师提供准确实时的信息至关重要。 本校的宿舍信息管理,主要方式是基于文本、表格等纸介质的手工处理,用人工手抄对男女生信宿信息进行处理登记。数据信息处理工作量大,容易出错且不易修改;由于数据繁多,容易丢失,逐条查找记录的方式不易操作,浪费了大量的时间,效率极低。以上的管理缺陷对学生宿舍管理造成了相当大的阻力,工作进展困难,问题解决的周期过长,资料整改工作量过大。为了改善学生宿舍管理情况,运用数据库技

5、术对学生信息进行处理和统一管理,在校园内实现宿舍无纸化办公。利用计算机的特点,利用互联网进行远程操作,制定学生客户端,教师客户端,管理员客户端,实现有针对性信息化管理,充分发挥计算机的高效性、可靠性、保密性、大容量、低成本等特点,建立学生宿舍管理系统,对宿舍相关信息进行统一管理。新型管理方式学生宿舍管理系统,将帮助宿舍管理人员提高工作效率,全面地掌握宿舍情况,提高宿舍安全系数,快速解决学生入住学生宿舍遇到的问题,帮助管理人员与教师及时掌握学生情况。l 设计目标开发设计学生宿舍管理系统,运用简单的计算机操作实现快速检索和快速查找,方便信息录入和更新,本系统仅针对管理员进行使用。实现信息查询、日常

6、管理、宿舍管理、信息维护几个方面的系统化管理:1、信息查询:a)宿舍信息:包括宿舍楼编号、寝室编号、入住人数、寝室入住人员学号、用水量、用电量、水费、电费。b)学生信息:包括学生姓名、学号、宿舍号c)宿舍基本配置:包括床、柜子、灯、风扇、电视机2、宿舍管理:学生管理(入住、更换宿舍、);房间管理(增加、删除、查询)3、信息维护:学生个人信息更新、宿舍信息更新、宿舍设备信息更新。2、系统开发环境 开发所使用数据库系统:MySql开发环境:windows 7开发工具:Microsoft VisualStudio 2010开发语言:C+、SQL3、系统需求分析l 基本功能需求学生宿舍管理系统为了更好

7、的进行宿舍管理而设计。用户的需求具体体现在各种信息的输入、修改和查询。系统功能实现如下:1、提供学生的入住信息的录入,更换宿舍信息登记。 提供各宿舍的具体信息,如宿舍楼栋、宿舍号、水费、电费等。并可通过查询宿舍号得到宿舍的具体信息、入住的学生信息、宿舍的设备信息等。2、提供管理员增加、删除各信息的功能。l 功能模块本宿舍管理系统的主要功能为:学生管理、宿舍信息管理、宿舍设备信息管理、信息查询、息更新、信息维护。l 数据字典 (1)宿舍设备情况数据字典(2)宿舍信息情况数据字典(3)学生信息情况数据字典4、概念结构设计l 概念设计(1)学生实体:用于显示学生的属性,包括姓名、学号、宿舍编号。(2

8、)宿舍实体:用于显示宿舍的属性,包括楼号、宿舍号、入住学生学号、可住人数、已住人数、用水量、水费、用电量、电费。(3)宿舍设备实体:用于显示宿舍设备的属性,包括床、柜子、风扇、灯、电视机。l E_R模型设计(1) 学生实体E_R图 (2)宿舍实体E_R图 (3)宿舍物品设备实体E_R图 (4)各实体关系E_R图5、逻辑结构设计l 将E-R图转换为关系模型:(1)Student:(num、name、dormitoryCat);(2)Room:(dormitoryCat、dormitory、room、studentNum、water、waterCharge、electricity、electric

9、ityCharge);(3)Item:(dormitoryCat、bed、cabinet、light、fan、tv)l 各表关系模型图:(1) Item表外键设计:(2) Student表外键设计:(3) 各表之间的关系模型图,Item表与Student表通过外键与Room联系:6、数据实施和维护l 功能实现的代码/dbstruct.h#pragma onceclass dbStructpublic:MYSQL my;char errMsg300;/学生表charStudentNum9;charStudentName20;/宿舍chardormitoryCat6;chardormitory3;

10、charroom4;doublewater;doubleelectricity;doublewaterCharge;doubleelectricityCharge;unsigned int members;/物件boolbed;boolcabinet;boollight;boolfan;booltv;dbStruct();dbStruct();bool Init();bool GetStruct();/添加学生表一项bool InsertStudentTable();/改变一项bool SetStudentTable(char num9);/主键为num, vachar(8)/获取一项bool

11、 GetStudent(char num9);/*删除一项bool DeleteStudent(char num9);/添加宿舍表一项bool InsertDormitoryTable();/改变一项bool SetDormitoryTable(char dormitoryCat6);/主键为dormitoryCat, varchar(6)/获得一项bool GetDormitory(char dormitoryCat6);/删除一项bool DeleteDormitory(char dormitoryCat6);/添加物品表一项bool InsertItemTable();/改变一项bool

12、 SetItemTable(char dormitoryCat6);/主键为dormitoryCat, varchar(6)/获得一项bool GetItem(char dormitoryCat6);/*删除一项bool DeleteItem(char dormitoryCat6);void ErrMB();/dbStruct.cpp#include "stdafx.h"dbStruct:dbStruct()this->water = 0.0;this->electricity = 0.0;this->waterCharge = 0.0;this->

13、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);bool dbStruct:Init()mysql_init(&this->my);if(!mysql_real_connect(&this->my, "localhost"

14、;, "root", "fast", "dormitory", 0, NULL, 0)StringCchPrintfA(errMsg, 300, "获取寝室物件信息错误: %sn", mysql_error(&this->my);return false;mysql_query(&this->my, "SET NAMES gbk");return true;/bool dbStruct:InsertStudentTable()if(this->dormitory

15、Cat = NULL |this->StudentName = NULL | this->StudentNum = NULL)StringCchPrintfA(errMsg, 100, "添加学生信息错误: 值不完整n");return FALSE;char query300;/获得该寝室已住人数数StringCchPrintfA(query, 300, "SELECT count(dormitoryCat) FROM student WHERE dormitoryCat = "19425"",this->dormi

16、toryCat);mysql_query(&this->my, query);/可以确保在数据库工作正常的情况下,能够查询到惟一的一条数据MYSQL_RES * res;res = mysql_use_result(&this->my);MYSQL_ROW row;int i; /i为已住人数while(row = mysql_fetch_row(res) != NULL)i = row00 - '0'mysql_free_result(res);if(+i > 4)/超过了寝室最大人员数量StringCchPrintfA(errMsg, 30

17、0, "添加学生信息错误: 此寝室已满n");/*是否自动添加宿舍信息return FALSE;/可以添加学生信息StringCchPrintfA(query, 300,"INSERT INTO student(num, name, dormitoryCat) VALUES("%s", "%s", "%s")",this->StudentNum, this->StudentName, this->dormitoryCat);if(mysql_query(&this-&g

18、t;my, query) != 0)StringCchPrintfA(errMsg, 300, "添加学生信息错误: %sn", mysql_error(&this->my);/*是否需要自动添加宿舍信息return FALSE;return TRUE;bool dbStruct:DeleteStudent(char num9)char query300;StringCchPrintfA(query, 300, "DELETE FROM student WHERE num = "%s"", num);if(mysql_q

19、uery(&this->my, query) != 0)StringCchPrintfA(errMsg, 300, "删除学生信息错误: %sn", mysql_error(&this->my);/*是否需要自动添加宿舍信息return FALSE;return TRUE;bool dbStruct:GetStudent(char num9)char query300;StringCchPrintfA(query, 300, "SELECT * FROM student WHERE num = "%s"",

20、 num);if(mysql_query(&this->my, query) != NULL)StringCchPrintfA(errMsg, 300, "获取学生信息错误: %sn", mysql_error(&this->my);return FALSE;MYSQL_RES * res;MYSQL_ROW row;res = mysql_use_result(&this->my);while(row = mysql_fetch_row(res) != NULL)StringCchPrintfA(this->StudentN

21、um, 9, row0);StringCchPrintfA(this->StudentName, 20, row1);StringCchPrintfA(this->dormitoryCat, 6, row2);mysql_free_result(res);return TRUE;/bool dbStruct:InsertDormitoryTable()if(this->dormitoryCat = NULL | this->room = NULL | this->dormitory = NULL)StringCchPrintfA(errMsg, 300, &quo

22、t;添加宿舍信息错误: 值不完整n");return FALSE;char query300;StringCchPrintfA(query, 300,"INSERT INTO room(dormitoryCat, dormitory, room, studentsNum, water, electricity, waterCharge, electricityCharge) VALUES("%s", "%s", "%s", %d, %.2lf, %.2lf, %.2lf, %.2lf)",this->

23、;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, "添加宿舍信息错误: %sn", mysql_error(&this->my);return FALSE;

24、this->InsertItemTable();return TRUE;bool dbStruct:DeleteDormitory(char dormitoryCat6)/由于外键约束,删除此寝室时,相应的student和item表中的此寝室信息自动删除.char query300;StringCchPrintfA(query, 300, "DELETE FROM room WHERE dormitoryCat = "%s"", dormitoryCat);if(mysql_query(&this->my, query) != 0)S

25、tringCchPrintfA(errMsg, 300, "删除宿舍信息错误: %sn", mysql_error(&this->my);return FALSE;return TRUE;bool dbStruct:GetDormitory(char dormitoryCat6)char query300;StringCchPrintfA(query, 300, "SELECT * FROM room WHERE dormitoryCat = "%s"", dormitoryCat);if(mysql_query(&am

26、p;this->my, query) != NULL)StringCchPrintfA(errMsg, 300, "获取寝室信息错误: %sn", mysql_error(&this->my);return FALSE;MYSQL_RES * res;MYSQL_ROW row;res = mysql_use_result(&this->my);while(row = mysql_fetch_row(res) != NULL)StringCchPrintfA(this->dormitoryCat, 6, row0);StringCch

27、PrintfA(this->dormitory, 3, row1);StringCchPrintfA(this->room, 4, row2);this->members = atoi(row3);this->water = atof(row4);this->electricity = atof(row5);this->waterCharge = atof(row6);this->electricityCharge = atof(row7);mysql_free_result(res);return TRUE;/bool dbStruct:Insert

28、ItemTable()if(this->dormitoryCat = NULL)StringCchPrintfA(errMsg, 300, "添加宿舍信息错误: 值不完整n");return FALSE;char query300;StringCchPrintfA(query, 300,"INSERT INTO item(dormitoryCat,bed, cabinet, light, fan, tv) VALUES("%s", %d, %d, %d, %d, %d)",this->dormitoryCat, this-

29、>bed, this->cabinet, this->light,this->fan, this->tv);if(mysql_query(&this->my, query) != 0)StringCchPrintfA(errMsg, 300, "添加宿舍物件信息错误: %sn", mysql_error(&this->my);return FALSE;return TRUE;bool dbStruct:GetItem(char dormitoryCat6)char query300;StringCchPrintfA(

30、query, 300, "SELECT * FROM item WHERE dormitoryCat = "%s"", dormitoryCat);if(mysql_query(&this->my, query) != NULL)StringCchPrintfA(errMsg, 300, "获取寝室物件信息错误: %sn", mysql_error(&this->my);return FALSE;MYSQL_RES * res;MYSQL_ROW row;res = mysql_use_result(&am

31、p;this->my);while(row = mysql_fetch_row(res) != NULL)StringCchPrintfA(this->dormitoryCat, 6, row0);this->bed = (atoi(row3) = 1? true: false);this->cabinet = (atof(row4) = 1? true: false);this->light = (atof(row5) = 1? true: false);this->fan = (atof(row6) = 1? true: false);this->

32、tv = (atof(row7) = 1? true: false);mysql_free_result(res);return TRUE;void dbStruct:ErrMB()MessageBoxA(GetActiveWindow(), this->errMsg, "发生错误!", MB_ICONERROR);/stdafx.h#pragma once#include "targetver.h"/ Windows 头文件:#include <windows.h>#include <mysql.h>#include &l

33、t;WindowsX.h>#include <CommCtrl.h>/ C 运行时头文件#include <stdlib.h>#include <malloc.h>#include <memory.h>#include <tchar.h>#include <strsafe.h>/ TODO: 在此处引用程序需要的其他头文件#include "dbStruct.h"#pragma comment(lib, "libmysql.lib")#pragma comment(lib, &

34、quot;comctl32.lib")/stdafx.cpp/ stdafx.cpp : 只包括标准包含文件的源文件/ DormitoryMng.pch 将作为预编译头/ stdafx.obj 将包含预编译类型信息#include "stdafx.h"/dormitoryMng.h#pragma once#include "resource.h"#define MAX_LOADSTRING 100/dormitoryMng.cpp(部分代码)bool QueryStart(bool flag)char query300;if(flag = tr

35、ue)/查询寝室信息GetWindowTextA(GetDlgItem(g_hWndQuery, IDC_EDITBUILD), m_db.dormitory, 3);GetWindowTextA(GetDlgItem(g_hWndQuery, IDC_EDITROOM), m_db.room, 4);if(strcmp(m_db.dormitory, "") = 0 && strcmp(m_db.room,"") = 0)StringCchCopyA(query, 300,"SELECT room.dormitoryCat,d

36、ormitory, room, studentsNum, count(student.dormitoryCat), water, electricity, waterCharge, electricityCharge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat GROUP BY room.dormitoryCat");else if(strcmp(m_db.dormitory, "") != 0 && strcmp(m_db.room,"&

37、quot;) = 0)StringCchPrintfA(query, 300,"SELECT room.dormitoryCat,dormitory, room, studentsNum, count(student.dormitoryCat), water, electricity, waterCharge, electricityCharge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat WHERE dormitory = "%s" GROUP BY room.d

38、ormitoryCat",m_db.dormitory);else if(strcmp(m_db.dormitory, "") = 0 && strcmp(m_db.room,"") != 0)StringCchPrintfA(query, 300,"SELECT room.dormitoryCat,dormitory, room, studentsNum, count(student.dormitoryCat), water, electricity, waterCharge, electricityCharge F

39、ROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat WHERE room = "%s" GROUP BY room.dormitoryCat",m_db.room);elseStringCchPrintfA(query, 300,"SELECT room.dormitoryCat,dormitory, room, studentsNum, count(student.dormitoryCat), water, electricity, waterCharge, el

40、ectricityCharge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat WHERE dormitory = "%s" AND room = "%s" GROUP BY room.dormitoryCat",m_db.dormitory, m_db.room);if(true != QueryInput(L"寝室号.楼栋号.寝室号.可住人数.当前人数.用水量.用电量.水费.电费", 9, query)m_db.ErrMB()

41、;else/查询学生信息GetWindowTextA(GetDlgItem(g_hWndQuery, IDC_EDITSTUNO), m_db.StudentNum, 9);GetWindowTextA(GetDlgItem(g_hWndQuery, IDC_EDITSTUNAME), m_db.StudentName, 20);if(strcmp(m_db.StudentNum, "") = 0 && strcmp(m_db.StudentName, "") = 0)StringCchCopyA(query, 300,"SEL

42、ECT num, name, dormitoryCat FROM student");else if(strcmp(m_db.StudentNum, "") != 0 && strcmp(m_db.StudentName, "") = 0)StringCchPrintfA(query, 300,"SELECT num, name, dormitoryCat FROM student WHERE num = "%s"",m_db.StudentNum);else if(strcmp(m_db

43、.StudentNum, "") = 0 && strcmp(m_db.StudentName, "") != 0)StringCchPrintfA(query, 300,"SELECT num, name, dormitoryCat FROM student WHERE name = "%s"",m_db.StudentName);elseStringCchPrintfA(query, 300,"SELECT num, name, dormitoryCat FROM student WH

44、ERE name = "%s" AND num = "%s"",m_db.StudentName, m_db.StudentNum);if(true != QueryInput(L"学号.姓名.所住寝室", 3, query)m_db.ErrMB();return TRUE;LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)int wmId, wmEvent;PAINTSTRUCT ps;HDC hdc;switch

45、(message)case WM_CREATE:if(!m_db.Init()m_db.ErrMB();/*填写错误信息break;/创建列表CreateList(hWnd);/查询填充if(false = QueryInput(L"寝室号.楼栋号.寝室号.可住人数.当前人数.用水量.用电量.水费.电费", 9,"SELECT room.dormitoryCat,dormitory, room, studentsNum,count(student.dormitoryCat),water,electricity, waterCharge,electricityCha

46、rge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat GROUP BY room.dormitoryCat")m_db.ErrMB();break;case WM_NOTIFY:LPNMITEMACTIVATE nc = (LPNMITEMACTIVATE)lParam;if(nc->hdr.code = NM_RCLICK && nc->iSubItem != 0)HMENU hMenu = CreatePopupMenu();InsertMenu(hMen

47、u, 0, MF_ENABLED, 10023, _T("删除");InsertMenu(hMenu, 0, MF_ENABLED, 10024, _T("详细信息");ClientToScreen(hWnd, &nc->ptAction);int result = TrackPopupMenu(hMenu, TPM_RETURNCMD | TPM_LEFTBUTTON| TPM_NOANIMATION,nc->ptAction.x + 5, nc->ptAction.y + 30, 0, hWnd, NULL);if(resu

48、lt = 10023)wchar_t str9;ListView_GetItemText(g_hWndList, nc->iItem, 2, str, 9);int iSize;char * szMultiByte;/宽字符转换成多字节型iSize = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, NULL, NULL);szMultiByte = new chariSize;WideCharToMultiByte(CP_ACP, 0, str, -1, szMultiByte, iSize, NULL, NULL);if(iSize

49、= 6)if(!m_db.DeleteDormitory(szMultiByte)m_db.ErrMB();delete szMultiByte;break;/刷新ListView_DeleteAllItems(g_hWndList);while(ListView_DeleteColumn(g_hWndList, 1)if(true != QueryInput(L"寝室号.楼栋号.寝室号.可住人数.当前人数.用水量.用电量.水费.电费", 9,"SELECT room.dormitoryCat,dormitory, room, studentsNum,count(

50、student.dormitoryCat),water,electricity, waterCharge,electricityCharge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat GROUP BY room.dormitoryCat")m_db.ErrMB();elseif(!m_db.DeleteStudent(szMultiByte)m_db.ErrMB();delete szMultiByte;break;/刷新ListView_DeleteAllItems(g_hWndL

51、ist);while(ListView_DeleteColumn(g_hWndList, 1)if(true != QueryInput(L"学号.姓名.所住寝室", 3, "SELECT * FROM student")m_db.ErrMB();delete szMultiByte;RedrawWindow(g_hWnd, NULL, NULL, RDW_INVALIDATE);break;case WM_COMMAND:wmId = LOWORD(wParam);wmEvent = HIWORD(wParam);/ 分析菜单选择:switch (wm

52、Id)case IDC_REFRESH:/刷新ListView_DeleteAllItems(g_hWndList);while(ListView_DeleteColumn(g_hWndList, 1)if(true != QueryInput(L"寝室号.楼栋号.寝室号.可住人数.当前人数.用水量.用电量.水费.电费", 9,"SELECT room.dormitoryCat,dormitory, room, studentsNum,count(student.dormitoryCat),water,electricity, waterCharge,electricityCharge FROM room LEFT JOIN student ON room.dormitoryCat = student.dormitoryCat GROUP BY room.dormitoryCat")m_db.ErrMB();RedrawWindow(g_hWn

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论