lhvAAA软件工程大作业

上传人:每**** 文档编号:57848890 上传时间:2022-02-25 格式:DOC 页数:16 大小:745KB
返回 下载 相关 举报
lhvAAA软件工程大作业_第1页
第1页 / 共16页
lhvAAA软件工程大作业_第2页
第2页 / 共16页
lhvAAA软件工程大作业_第3页
第3页 / 共16页
点击查看更多>>
资源描述
授课:XXX 软件工程大作业设计题目: 宿舍管理系统 学 院: 计算机科学与信息工程学院 学生姓名: 刘振帅 学 号: 13031010127 专业班级: 计算机科学与技术(嵌入式)13-1 2015 年 12 月 28 日授课:XXX宿舍管理系统宿舍管理系统摘要摘要:本系统根据安阳工学院宿舍管理的实际情况而设计,采用 Visual C+为开发工具,数据库采用的是最为普及的小型数据库管理系统 Access,能实现宿舍管理中的添加信息、修改信息、删除信息、查询信息等必不可少的功能。学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步摆脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包括宿舍学生基本信息管理、楼道工人基本信息管理、宿舍楼基本信息管理、宿舍基本信息管理、宿舍事故基本信息管理、宿舍楼物品出入基本信息管理、宿舍楼保卫处基本信息管理、宿舍配备物品及处理管理等八大功能模块,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中宿舍学生基本信息管理、宿舍基本信息管理是系统开发的重点。该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、数据库实施阶段、系统调试和测试阶段、参考文献、附录等阶段组成。关键字关键字:C+;宿舍管理系统;Access;数据库;MFC 编程授课:XXX目目 录录1. 引言引言.12. 设计依据及框图设计依据及框图.22.1 设计平台设计平台.22.2 设计思想设计思想.32.3 设计框图设计框图 用户界面用户界面.52.4 数据库表结构数据库表结构.53 模块功能及流程图模块功能及流程图.53.1 各模块功能简介各模块功能简介.63.2 主要流程图主要流程图.84.软件调试分析软件调试分析.95. 结语及参考文献结语及参考文献.9授课:XXX1 1 引言引言宿舍,是大学生在高校校园里一个重要的学习、生活、交往的空间环境。随着高校办学规模的扩大,学生人数不断增多,高校学生宿舍管理信息量日益庞大,如果仍采用传统的工作方式纸媒介的账本化工作模式,会存在获取信息慢、查阅困难、准确性差等问题,很难适应高水平宿舍管理的需要。而采用计算机软件来实现信息的管理能很好的解决传统工作方式存在的问题。因此,我们设计开发了学生宿舍管理系统,旨在提高宿舍管理的效率和准确性,减少工作的盲目性,对后勤管理的现代化建设有一定的指导意义。2 2 设计依据及框图设计依据及框图2.1 设计平台开发本系统的过程中所用到的主要软件开发工具有:Visual C+ 6.0、Access 2000、Photoshop。现将使用情况分别介绍如下:Visual C+ 6.0: MFC 方式设计系统界面,采用 OLE DB 方式访问数据库。Access 2000:采用 Access 设计本系统中的数据库。Photoshop:用于添加学生、删除学生、查询学生等等按钮图标的美工设计。2.2 设计思想(1) 应用原型方法进行开发。原型方法将系统分析、设计、实施三个阶段融为一体,使操作者更便于使用该系统,由中南民族大学宿舍管理的实际情况出发,讲宿舍信息分层设计,有宿舍类型到楼号,由楼号到宿舍号,在找到床铺号,便于层次化管理。(2) 选用灵活、方便、友好的用户界面。采用操作简单的树型图设计,便于查找学生信息,操作快捷方便; (3) 数据库采用的是比较流行的小型数据库管理软件Access,与C+程序的连接方式为OLE DB,该方式可以让开发人员不直接向数据源发出指令,而是通过OLE DB接口与数据提供者进行交互,只需要对接口进行操作,这样简化了程序的设计。2.3 设计框图、用户界面本系统“宿舍管理”的设计框图如下:授课:XXX主界面 “查看学生详细信息”界面授课:XXX“添加学生”界面“学生查询”界面授课:XXX2.4 数据库表结构本系统采用 Access 作为数据库,使用 OLE DB 访问数据库。根据系统功能与需求分析,只需要创建一个数据表 House,该表包含学生姓名,性别,入学时间,学号,专业,宿舍类型,楼号,房间号,床铺号,宿舍电话,备注等信息项,自然的形成了一个树型结构。不设置主键(PRIMARY KEY),由程序根据地址唯一确定用户信息的不二性。表结构如右所示:3 各模块功能及主要模块的流程图3.1 各模块功能简介1、罗列学生信息在左边的树试图中,通过鼠标或者键盘选择宿舍类型、楼号或者房间号等树项,右边的列表视图就会罗列出相应宿舍类型、楼或者房间中的所有学生的简要信息。对这些罗列出来的学生可以对它们进行删除或者查看详细信息的操作。2、查看学生详细信息选择左边树视图中的房间号,或者双击右边列表视图中的某一学生,右边的视图就会显示该用户的详细信息(见“查看学生详细信息”界面)。3、添加学生单击工具条的【添加学生】按钮,或者选择菜单【系统维护】-【添加学生】,弹出“添加学生”对话框,见“添加学生”界面。在该对话框中填写完相应的信息,单击【确定】按钮完成添加。其中“学生姓名”和“宿舍地址”是必须填写完整的,如果不完整单击【确定】按钮后系统会提示用户。4、删除学生当程序的输入焦点在左边的树视图时,选择要删除的项,单击工具条的【删除学生】按钮,或者选择菜单【系统维护】-【删除学生】,弹出询问用户确认删除操作的对话框,见“删除学生”界面。如果删除的是宿舍类型,则该宿舍类型中的所有学生都被删除;如果删除是楼号,则该楼中的所有学生被删除,如果删除的是房间号,则该房间中的所有学生都被删除;如果删除的是学生,则该学生信息被删除。当主窗口的右边是学生的列表视图时,并且输入焦点在其中,选择其中要删除的学生(可以选择多个),单击工具条的【删除学生】按钮,或者选择菜单【系统维护】-【删除学生】,弹出询问用户确认删除操作的对话框,单击【是】按钮删除选择的学生信息。5、学生查询授课:XXX单击工具条中的【学生查询】按钮,或者选择菜单【系统维护】-【学生查询】,弹出“查询学生”对话框,见“学生查询”界面。在该对话框中填写完查询条件,单击【确定】按钮。如果有符合条件的学生,在右边的学生列表中就会全部罗列出来,可以对这些学生进行删除或者查看详细信息的操作。3.2 主要流程图本软件系统对学生信息的管理主要流程图:(1)在树视图中罗列学生信息的程序流程,如图所示:(2)查询和罗列的程序流程,如图所示:填充树视图的程序流程 查询和罗列的程序流程(3)增加学生的程序流程,如下图所示:4 软件调试分析本软件是基于 Windows 的编程开发,所以,软件调试必须在 Windows 环境下进行。调试前须做好以下准备工作:授课:XXX(1)需要文件 MFC42.DLL、MSVCRT.DLL,如果没有,则安装 Visual C+6.0 环境;(2)需要安装 Access 2000 的 OLE DB 驱动,如果没有,可以安装 Access2000 以上版本;(3)需要将 StuDormMS.mdb 数据库文件与可执行文件 StuDormMS.exe 放在同一目录下,才能运行成功。配置好之后,在 Visual C+6.0 环境下进行软件的调试。调试分析如下:(1)首先进行数据库的导入,加入 ATL 产生的模板类,生成包含数据库的House.H见附头文件,该头文件是与数据库的接口,经过测试,数据库链接成功;(2)实现界面框架,使用类 CSplitterWnd 切分视图和动态切换视图的类型,通过包含该类的单文件调试发现无错误后,整体系统运行能成功切换试图。(3)系统框架的左侧为树视图,采用 CLeftTreeView 类来实现;右侧学生信息罗列采用类 CUsersListView 来实现,成功调试后能正常显示信息。(4)“增加学生”模块,单模块调试通过后,需要在整理系统编写完后,再进行操作测试,添加一条记录后,发现在数据库中有保存该记录,如果错误输入,观察是否能正常提示信息。否则修改程序再进行调试。(5)“查询学生”模块,该模块可以实现单项查询和组合查询,单项查询调试通过后,编写组合查询的代码,再进行调试,看是否能满足要求,并且能正常提示非法查询请求。(6)“删除学生”模块,可以进行不同层次的删除操作,例如删除宿舍将会删除该宿舍的所有成员,如果只删除某一学生,不会影响到其他成员。本模块测试通过。经过调试,以上各部分运行正常,能实现预期的功能。5 结语5.1 结论与讨论结论:本文介绍的宿舍管理系统具有界面友好、操作简单、实用性强等特点,并已开发完毕,使用效果良好,初步取得了以下效果: (1) 操作简单,实用性强,能够快速地提供住宿学生的各种基本信息供管理者参考和使用,大大提高了工作效率; (2) 浏览、查询、添加实现数据库管理,纸质文件的流转被电子邮件代替,节约了办公经费; (3) 实现了对数据的智能处理,为领导决策起到了一定的辅助作用; (4) 使宿舍管理工作更加科学化和规范化。讨论:本文介绍的实现方法适合与小型的数据管理,而且功能比较简单,在一定程度上能解决实际中宿舍管理中的问题。但也存在一些不完善的地方,如需要保存更多的信息,实现更多的功能,需要采用较大型的数据库管理系统,而且未来的管理以网络化为趋势,开发一套可以联网管理的软件系统能给宿舍管理工作带来更大的方便。参考文献1 求是科技. Visual C+ 6.0 数据库开发技术与工程实践.北京:人民邮电出版社,20042 郑莉,董渊,张瑞丰.C+语言程序设计.北京:清华大学出版社,20033 (美)Paul J.Fortier 等著.数据库技术大全.林瑶等译.北京:电子工业出版社,1999附录附录授课:XXX各功能函数的核心代码文件列表如下:文件名称功能说明AddUserDlg.cpp添加学生信息LeftTreeView.cpp显示树视图,完成删除操作UsersListView.cpp实现单项、组合查询功能UserinfoView.cpp学生详细信息显示由于篇幅限制,现只列举部分代码,完整源代码见电子文档。-Beganing of AddUserDlg.cpp-void CAddUserDlg:OnOK() /判断输入信息的合法性UpdateData(TRUE);CEdit* p;if( m_strStudentname = )AfxMessageBox(请填学生姓名);p = (CEdit*)GetDlgItem(IDC_EDIT_STUDENTNAME);p-SetFocus();return;if( m_strStudentName = )AfxMessageBox(请填宿舍类型);p = (CEdit*)GetDlgItem(IDC_EDIT_ROOMTYPE);p-SetFocus();return;if( m_nBuildingNum = 0 )AfxMessageBox(楼号不能为零);p = (CEdit*)GetDlgItem(IDC_EDIT_BUILDINGNUM);p-SetFocus();return;if( m_nRoomNum = 0 )AfxMessageBox(房间号不能为零);p = (CEdit*)GetDlgItem(IDC_EDIT_ROOMNUM);授课:XXXp-SetFocus();return;if( m_nBedNum = 0 )AfxMessageBox(床铺号不能为零);p = (CEdit*)GetDlgItem(IDC_EDIT_BED);p-SetFocus();return;CMainFrame* pFrame = (CMainFrame*)AfxGetApp()-m_pMainWnd;CInhabitantsDoc* pDoc = (CInhabitantsDoc*)pFrame-GetActiveDocument();/让用户确认操作if(this-MessageBox(你真的要添加这条记录?,安阳工学院宿舍管理系统,MB_YESNO)=IDNO)CDialog:OnCancel();return;/增加学生到数据库中USER user;user.strRoomtype = m_strStudentName;user.nBuildingnum = m_nBuildingNum;user.nRoomnum = m_nRoomNum;user.nBednum = m_nBedNum;user.strName = m_strStudentname;user.strHouseTel = m_strHomeTel;user.strSex = m_strSex;user.strNationNal = m_strNationNal;user.strMajor = m_strMajor;user.strId = m_strId;user.strRemarks = m_strRemarks;switch(pDoc-AddUser(user)case 0:/已经存在该学生了授课:XXXCString str;str.Format( %s%d 号楼%d 号房间%d 号床铺已有学生入住!,m_strStudentName,m_nBuildingNum,m_nRoomNum,m_nBedNum );AfxMessageBox( str );CEdit* p = (CEdit*)GetDlgItem(IDC_EDIT_BED);p-SetFocus();return;break;case 1:/增加成功后刷新左边的树视图pFrame-m_pLeftView-AddUserToTree(m_strStudentName,m_nBuildingNum,m_nRoomNum,m_nBedNum);break;default:return;break;CDialog:OnOK();-ENDING of AddUserDlg.cpp-Beganing of UsersListView.cpp-void CUsersListView:ShowUsers(CString strSql)CListCtrl* p = &GetListCtrl();/清空列表p-DeleteAllItems();if(strSql = )return;CInhabitantsDoc* pDoc = (CInhabitantsDoc*)GetDocument();CCommandCAccessor dbHouse;long* pCount = new long;/按照 strSql 查询符合条件的学生if(dbHouse.Open(pDoc-m_dbHouse.m_session,strSql,NULL,pCount) != S_OK)AfxMessageBox(error);delete pCount;授课:XXXreturn;int iItem = 0;LV_ITEM lvitem;int iActualItem = 0;/将查询得到的学生都逐个加入列表中if(dbHouse.MoveFirst() = S_OK)dofor(int iSubItem=0;iSubItem5;iSubItem+)lvitem.mask = LVIF_TEXT|(iSubItem = 0? LVIF_IMAGE : 0);lvitem.iItem = (iSubItem = 0)? iItem : iActualItem;lvitem.iSubItem = iSubItem;lvitem.iImage = (iItem%2)?0:2;CString str = ;switch(iSubItem)case 0:/学生str = dbHouse.m_studentname;lvitem.pszText =(LPTSTR)(LPCTSTR)str;break;case 1:/宿舍类型str = dbHouse.m_roomtype;lvitem.pszText = (LPTSTR)(LPCTSTR) str;break; case 2:/楼号str.Format(%d,dbHouse.m_buildingnum);lvitem.pszText = (LPTSTR)(LPCTSTR) str;break;case 3:/房间号str.Format(%d,dbHouse.m_roomnum);lvitem.pszText = (LPTSTR)(LPCTSTR)str;授课:XXXbreak;case 4:/床铺号str.Format(%d,dbHouse.m_bednum);lvitem.pszText = (LPTSTR)(LPCTSTR)str; if (iSubItem = 0)iActualItem = GetListCtrl().InsertItem(&lvitem);elseGetListCtrl().SetItem(&lvitem);iItem +;while( dbHouse.MoveNext() = S_OK );dbHouse.Close();-ENDING of UsersListView.cpp.cpp-Beganing of UserinfoView.cpp.cpp-/显示住址为 strStudentName 宿舍类型 nBuildingNum 号楼 nRoomNum 房间号nBedNum 床铺的住户的详细信息void CUserinfoView:UpdateUserInfo(CString strStudentName,int nBuildingNum,int nRoomNum,int nBedNum)/查询该学生CString strSql;strSql.Format(select * from house where roomtype = %s and buildingnum = %d and roomnum = %d and bednum = %d,strStudentName,nBuildingNum,nRoomNum,nBedNum);CInhabitantsDoc* pDoc = (CInhabitantsDoc*)GetDocument();CCommandCAccessor dbHouse;long* pCount = new long;if(dbHouse.Open(pDoc-m_dbHouse.m_session,strSql,NULL,pCount) != S_OK)AfxMessageBox(error);delete pCount;return;授课:XXX/显示信息if(dbHouse.MoveFirst() = S_OK)m_strStudentname = dbHouse.m_studentname;m_strRoomtype = dbHouse.m_roomtype;m_nBuildingnum = dbHouse.m_buildingnum;m_nRoomnum = dbHouse.m_roomnum;m_nBednum = dbHouse.m_bednum;m_strHouseTel = dbHouse.m_housetel;m_strSex = dbHouse.m_sex;m_strNationNal = dbHouse.m_national;m_strMajor = dbHouse.m_major;m_strId = dbHouse.m_id;m_strRemarks = dbHouse.m_remarks;dbHouse.Close();UpdateData(FALSE);void CUserinfoView:OnChangeEditRemarks() / TODO: If this is a RICHEDIT control, the control will not/ send this notification unless you override the CFormView:OnInitDialog()/ function and call CRichEditCtrl().SetEventMask()/ with the ENM_CHANGE flag ORed into the mask./ TODO: Add your control notification handler code here-ENDING of UserinfoView.cpp.cpp- (注:可编辑下载,若有不当之处,请指正,谢谢!) 授课:XXX
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!