软件工程大作业及软件工程复习范围_第1页
软件工程大作业及软件工程复习范围_第2页
软件工程大作业及软件工程复习范围_第3页
软件工程大作业及软件工程复习范围_第4页
软件工程大作业及软件工程复习范围_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

软件工程大作业设计题目:宿舍管理系统学院:计算机科学与信息工程学院学生姓名:刘振帅学号业班级:计算机科学与技术(嵌入式)13-12015年12月28日宿舍管理系统摘要:本系统根据安阳工学院宿舍管理的实际情况而设计,采用VisualC++为开发工具,数据库采用的是最为普及的小型数据库管理系统Access,能实现宿舍管理中的添加信息、修改信息、删除信息、查询信息等必不可少的功能。学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步摆脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包括宿舍学生基本信息管理、楼道工人基本信息管理、宿舍楼基本信息管理、宿舍基本信息管理、宿舍事故基本信息管理、宿舍楼物品出入基本信息管理、宿舍楼保卫处基本信息管理、宿舍配备物品及处理管理等八大功能模块,并提供了对各功能模块的查询和更新功能,且这两种功能基本上是通过存储过程来实现的,其中宿舍学生基本信息管理、宿舍基本信息管理是系统开发的重点。该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、数据库实施阶段、系统调试和测试阶段、参考文献、附录等阶段组成。关键字:C++;宿舍管理系统;Access;数据库;MFC编程目录TOC\o"1-3"\u1.引言 12.设计依据及框图 22.1设计平台 22.2设计思想 32.3设计框图用户界面 52.4数据库表结构 53模块功能及流程图 53.1各模块功能简介 63.2主要流程图 84.软件调试分析 95.结语及参考文献 91引言宿舍,是大学生在高校校园里一个重要的学习、生活、交往的空间环境。随着高校办学规模的扩大,学生人数不断增多,高校学生宿舍管理信息量日益庞大,如果仍采用传统的工作方式——纸媒介的账本化工作模式,会存在获取信息慢、查阅困难、准确性差等问题,很难适应高水平宿舍管理的需要。而采用计算机软件来实现信息的管理能很好的解决传统工作方式存在的问题。因此,我们设计开发了学生宿舍管理系统,旨在提高宿舍管理的效率和准确性,减少工作的盲目性,对后勤管理的现代化建设有一定的指导意义。2设计依据及框图2.1设计平台开发本系统的过程中所用到的主要软件开发工具有:VisualC++6.0、Access2000、Photoshop。现将使用情况分别介绍如下:VisualC++6.0:MFC方式设计系统界面,采用OLEDB方式访问数据库。Access2000:采用Access设计本系统中的数据库。

Photoshop:用于添加学生、删除学生、查询学生等等按钮图标的美工设计。2.2设计思想(1)应用原型方法进行开发。原型方法将系统分析、设计、实施三个阶段融为一体,使操作者更便于使用该系统,由中南民族大学宿舍管理的实际情况出发,讲宿舍信息分层设计,有宿舍类型到楼号,由楼号到宿舍号,在找到床铺号,便于层次化管理。(2)选用灵活、方便、友好的用户界面。采用操作简单的树型图设计,便于查找学生信息,操作快捷方便;(3)数据库采用的是比较流行的小型数据库管理软件Access,与C++程序的连接方式为OLEDB,该方式可以让开发人员不直接向数据源发出指令,而是通过OLEDB接口与数据提供者进行交互,只需要对接口进行操作,这样简化了程序的设计。2.3设计框图、用户界面本系统“宿舍管理”的设计框图如下:

主界面“查看学生详细信息”界面“添加学生”界面“学生查询”界面2.4数据库表结构本系统采用Access作为数据库,使用OLEDB访问数据库。根据系统功能与需求分析,只需要创建一个数据表House,该表包含学生姓名,性别,入学时间,学号,专业,宿舍类型,楼号,房间号,床铺号,宿舍电话,备注等信息项,自然的形成了一个树型结构。不设置主键(PRIMARYKEY),由程序根据地址唯一确定用户信息的不二性。表结构如右所示:3各模块功能及主要模块的流程图3.1各模块功能简介1、罗列学生信息在左边的树试图中,通过鼠标或者键盘选择宿舍类型、楼号或者房间号等树项,右边的列表视图就会罗列出相应宿舍类型、楼或者房间中的所有学生的简要信息。对这些罗列出来的学生可以对它们进行删除或者查看详细信息的操作。2、查看学生详细信息选择左边树视图中的房间号,或者双击右边列表视图中的某一学生,右边的视图就会显示该用户的详细信息(见“查看学生详细信息”界面)。

3、添加学生单击工具条的【添加学生】按钮,或者选择菜单【系统维护】->【添加学生】,弹出“添加学生”对话框,见“添加学生”界面。在该对话框中填写完相应的信息,单击【确定】按钮完成添加。其中“学生姓名”和“宿舍地址”是必须填写完整的,如果不完整单击【确定】按钮后系统会提示用户。4、删除学生当程序的输入焦点在左边的树视图时,选择要删除的项,单击工具条的【删除学生】按钮,或者选择菜单【系统维护】->【删除学生】,弹出询问用户确认删除操作的对话框,见“删除学生”界面。如果删除的是宿舍类型,则该宿舍类型中的所有学生都被删除;如果删除是楼号,则该楼中的所有学生被删除,如果删除的是房间号,则该房间中的所有学生都被删除;如果删除的是学生,则该学生信息被删除。当主窗口的右边是学生的列表视图时,并且输入焦点在其中,选择其中要删除的学生(可以选择多个),单击工具条的【删除学生】按钮,或者选择菜单【系统维护】->【删除学生】,弹出询问用户确认删除操作的对话框,单击【是】按钮删除选择的学生信息。5、学生查询单击工具条中的【学生查询】按钮,或者选择菜单【系统维护】->【学生查询】,弹出“查询学生”对话框,见“学生查询”界面。在该对话框中填写完查询条件,单击【确定】按钮。如果有符合条件的学生,在右边的学生列表中就会全部罗列出来,可以对这些学生进行删除或者查看详细信息的操作。3.2主要流程图本软件系统对学生信息的管理主要流程图:在树视图中罗列学生信息的程序流程,如图所示:查询和罗列的程序流程,如图所示:填充树视图的程序流程查询和罗列的程序流程增加学生的程序流程,如下图所示:4软件调试分析本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行。调试前须做好以下准备工作:(1)需要文件MFC42.DLL、MSVCRT.DLL,如果没有,则安装VisualC++6.0环境;(2)需要安装Access2000的OLEDB驱动,如果没有,可以安装Access2000以上版本;(3)需要将StuDormMS.mdb数据库文件与可执行文件StuDormMS.exe放在同一目录下,才能运行成功。配置好之后,在VisualC++6.0环境下进行软件的调试。调试分析如下:

(1)首先进行数据库的导入,加入ATL产生的模板类,生成包含数据库的House.H[见附]头文件,该头文件是与数据库的接口,经过测试,数据库链接成功;

(2)实现界面框架,使用类CSplitterWnd切分视图和动态切换视图的类型,通过包含该类的单文件调试发现无错误后,整体系统运行能成功切换试图。

(3)系统框架的左侧为树视图,采用CLeftTreeView类来实现;右侧学生信息罗列采用类CUsersListView来实现,成功调试后能正常显示信息。(4)“增加学生”模块,单模块调试通过后,需要在整理系统编写完后,再进行操作测试,添加一条记录后,发现在数据库中有保存该记录,如果错误输入,观察是否能正常提示信息。否则修改程序再进行调试。(5)“查询学生”模块,该模块可以实现单项查询和组合查询,单项查询调试通过后,编写组合查询的代码,再进行调试,看是否能满足要求,并且能正常提示非法查询请求。(6)“删除学生”模块,可以进行不同层次的删除操作,例如删除宿舍将会删除该宿舍的所有成员,如果只删除某一学生,不会影响到其他成员。本模块测试通过。经过调试,以上各部分运行正常,能实现预期的功能。 5结语5.1结论与讨论结论:本文介绍的宿舍管理系统具有界面友好、操作简单、实用性强等特点,并已开发完毕,使用效果良好,初步取得了以下效果:(1)操作简单,实用性强,能够快速地提供住宿学生的各种基本信息供管理者参考和使用,大大提高了工作效率;(2)浏览、查询、添加实现数据库管理,纸质文件的流转被电子邮件代替,节约了办公经费;(3)实现了对数据的智能处理,为领导决策起到了一定的辅助作用;(4)使宿舍管理工作更加科学化和规范化。讨论:本文介绍的实现方法适合与小型的数据管理,而且功能比较简单,在一定程度上能解决实际中宿舍管理中的问题。但也存在一些不完善的地方,如需要保存更多的信息,实现更多的功能,需要采用较大型的数据库管理系统,而且未来的管理以网络化为趋势,开发一套可以联网管理的软件系统能给宿舍管理工作带来更大的方便。参考文献求是科技.VisualC++6.0数据库开发技术与工程实践.北京:人民邮电出版社,2004郑莉,董渊,张瑞丰.C++语言程序设计.北京:清华大学出版社,2003(美)PaulJ.Fortier等著.数据库技术大全.林瑶等译.北京:电子工业出版社,1999附录各功能函数的核心代码文件列表如下:文件名称功能说明AddUserDlg.cpp添加学生信息LeftTreeView.cpp显示树视图,完成删除操作UsersListView.cpp实现单项、组合查询功能UserinfoView.cpp学生详细信息显示由于篇幅限制,现只列举部分代码,完整源代码见电子文档。BeganingofAddUserDlg.cppvoidCAddUserDlg::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); p->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; } //增加学生到数据库中 USERuser; 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)) { case0: { //已经存在该学生了 CStringstr; 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; } case1: { //增加成功后刷新左边的树视图 pFrame->m_pLeftView->AddUserToTree(m_strStudentName, m_nBuildingNum,m_nRoomNum,m_nBedNum); break; } default: return; break; } CDialog::OnOK();}ENDINGofAddUserDlg.cppBeganingofUsersListView.cppvoidCUsersListView::ShowUsers(CStringstrSql){ CListCtrl*p=&GetListCtrl(); //清空列表 p->DeleteAllItems(); if(strSql=="") return; CInhabitantsDoc*pDoc=(CInhabitantsDoc*)GetDocument(); CCommand<CAccessor<CHouseAccessor>>dbHouse; long*pCount=newlong; //按照strSql查询符合条件的学生 if(dbHouse.Open(pDoc->m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK) { AfxMessageBox("error"); deletepCount; return; } intiItem=0; LV_ITEMlvitem; intiActualItem=0; //将查询得到的学生都逐个加入列表中 if(dbHouse.MoveFirst()==S_OK) { do { for(intiSubItem=0;iSubItem<5;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; CStringstr=""; switch(iSubItem) { case0://学生 str=dbHouse.m_studentname; lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; case1://宿舍类型 { str=dbHouse.m_roomtype; lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case2://楼号 { str.Format("%d",dbHouse.m_buildingnum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case3://房间号 { str.Format("%d",dbHouse.m_roomnum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; break; } case4://床铺号 { str.Format("%d",dbHouse.m_bednum); lvitem.pszText=(LPTSTR)(LPCTSTR)str; } } if(iSubItem==0) iActualItem=GetListCtrl().InsertItem(&lvitem); else GetListCtrl().SetItem(&lvitem); } iItem++; } while(dbHouse.MoveNext()==S_OK); } dbHouse.Close();}ENDINGofUsersListView.cpp.cppBeganingofUserinfoView.cpp.cpp//显示住址为strStudentName宿舍类型nBuildingNum号楼nRoomNum房间号nBedNum床铺的住户的详细信息voidCUserinfoView::UpdateUserInfo(CStringstrStudentName,intnBuildingNum,intnRoomNum,intnBedNum){ //查询该学生 CStringstrSql; strSql.Format("select*fromhousewhereroomtype='%s'andbuildingnum=%dandroomnum=%dandbednum=%d", strStudentName,nBuildingNum,nRoomNum,nBedNum); CInhabitantsDoc*pDoc=(CInhabitantsDoc*)GetDocument(); CCommand<CAccessor<CHouseAccessor>>dbHouse; long*pCount=newlong; if(dbHouse.Open(pDoc->m_dbHouse.m_session,strSql,NULL,pCount)!=S_OK) { AfxMessageBox("error"); deletepCount; return; } //显示信息 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);}voidCUserinfoView::OnChangeEditRemarks(){ //TODO:IfthisisaRICHEDITcontrol,thecontrolwillnot //sendthisnotificationunlessyouoverridetheCFormView::OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO:Addyourcontrolnotificationhandlercodehere }ENDINGofUserinfoView.cpp.cpp《软件工程》复习范围注意事项:每个学生必须写上本人的学号、任课教师姓名、姓名、班级,另外所有的答案必须全部写在答卷纸上请不要写的试卷上,试题及答卷一同交上。第一部分: 选择题(请选择最合适的一个答案)。(1*15=15)1.从功能角度来定义,软件是D。为人类提供普适计算的逻辑产品为人类提供逻辑计算的逻辑产品为人类提供数值计算的逻辑产品为人类提供计算服务的逻辑产品2.关于软件危机描述不正确的是D。软件危机是软件开发和维护过程中所遇到的一系列严重问题软件危机的表现是开发成本高、软件质量不高、软件交付经常延期软件工程是为了解决软件危机而产生的软件工程的出现彻底解决了软件危机3.下列属于瀑布型方法缺点的是A。a)将软件过程进行僵化划分、缺少灵活性b)强调了文档的作用,保护了软件开发商的利益c)促进了软件开发的工程化d)加强了软件开发的管理过程4.下面关于软件描述不对的是A。软件不同于硬件,不存在磨损,可以永久使用,不需要升级也不存在报废软件是客观世界中问题空间与解空间的具体描述,是追求表达能力强、更符合人类思维模式的计算模型软件是具有构造性和演化性的逻辑产品软件是由程序、构造数据和相关文档组成的5.关于软件工程描述不正确的是D。软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则软件工程是指导计算机软件开发和维护的工程学科软件工程是指导计算机软件构造和演化的工程学科软件工程是从方法和工具两个方面来研究如何提高软件生产效率和质量,降低生产成本6.下列关于瀑布型方法描述不正确的是D。a)瀑布型方法是一种软件过程的固化,也称为软件生命周期模型b)在众多的软件开发方法中,瀑布型方法是最著名和最有影响力的模型,其他模型往往是对它的补充或者改进c)瀑布型方法是一种文档驱动的模型,每个阶段结束之后形成文档,待文档经过双方签字确认后,再进入下一个阶段的活动d)瀑布型方法是一种柔性灵活的软件开发方法第二部分: 判断题(对的打√,错的打×)(1*15=15)客户通常难以清楚地描述需求,在没有实际系统呈现在客户面前的时候,客户无法表达细致的需求。瀑布模型的阶段是软件工程早期的重要发展成果,高校以瀑布模型来组织教材,企业以瀑布型模型来设置部门和岗位,使得软件工程同其他传统工程一样得到发展和认可。快速原型方法可以诱导用户的需求和验证用户的需求。软件的模块化就是尽可能地将模块设计小。X人机界面的设计质量对整个软件的竞争力影响不大。X第三部分: 填空题:(1*15=15)1.根据我国国家标准《计算机软件开发规范》(GB8566-8),软件过程包含:软件定义、软件开发、软件运行维护2.软件维护可具体分为改正性维护、适应性维护、完善性维护、预防性维护这几项活动。3.只用3种基本的控制结构就能实现任何单入口单出口的程序,这三种结构是顺序、选择、循环。4.为屏蔽计算机硬件之间的异构性发展了操作系统,为屏蔽之间的异构性出现了支撑软件和中间件,为屏蔽不同中间件之间的异构性发展了SOA。5.由于软件项目具有一定程度的不确定性,天生具有很高的风险。因此软件项目必须进行风险管理具体包括:风险识别、风险分析、风险规划、风险监控。模块间的耦合可分为:数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合软件项目管理是一个庞大的系统工程,它是为了使软件项目能够按照预定的成本、进度、质量顺利完成,软件项目管理的主要内容包括:人员管理、进度管理、成本管理、质量管理、风险管理第四部分 简答题(5*4=20)为什么要进行软件需求分析?请叙述软件需求分析的主要过程。 软件需求分析在软件开发过程中具有举足轻重的地位,它是开发出正确的高质量的软件系统的保证。有数据表明,更正需求分析阶段的一个错误所花费的是工作量是更正测试阶段的一个错误的一百倍。 软件需求分析的主要过程为获取用户需求、分析用户需求、编写需求文档、需求评审衡量模块独立性的两个标准是什么?它们各表示什么含义?这两个标准分别是耦合性和内聚性。(1)耦合性,也称块间联系,指软件系统结构

温馨提示

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

评论

0/150

提交评论