版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件设计设计说明书 金飞腾 古龙 刘虎林 学生宿舍管理系统可行性研究报告1.引言1.1 编写目的 学生宿舍管理系统对于一个学校来说是必不可少的组成部分。由于大学院校的宿舍管理数据庞大,手工记录油太大的缺陷,因此为了代替“某某大学院校”繁琐的手工记录方法,方便宿舍管理员管理,我们设计了这款学生宿舍管理系统软件。1.2 背景说明:a.这款软件的名称为“宿舍管理系统”。b.本项目的提出者是班学生。 c.该软件系统应用于设备管理终端。1.3 定义SDMS:Student dormitory management system学生宿舍管理系统。SQL Sever 2005:所采用的数据库管理系统。Vis
2、ual Studio 2008:微软公司退出的开发环境,Visual Studio可以用来创建Windows平台下Windows应用程序和网络应用程序,也可以用来创建网络服务,智能设备应用程序和Office插件。B/S结构:浏览器和服务器结构,它是随着Internet技术的兴起,对B/S结构的一种变化或者改进结构。1.4 参考资料 软件工程,SQL sever数据库设计,ASP.NET2.0简明教程2. 可行性研究的前提:2.1开展宿舍管理系统项目的原因:由于现今大学生管理系统的繁琐性,舍管部人员需要付出大量的时间及精力去进行管理。为了提高管理效率以及减轻舍管部人员工作负担,所以开发大学生宿舍
3、管理系统2.2要求A.功能与性能:功能:每所大学的在读生都会有近万人,每个学生都有不同的学号,姓名,班级,出生日期宿舍楼 号等基本信息;每间寝室都有不同的床号等信息;学校需要对每个学生以及寝室的基本信息进行统一管理,以便对每个学生及寝室的信息进行查询.浏览和修改性能:管理系统性能可靠 数据保密性高。B.系统的输入与输出由管理员输入学生的学籍信息及寝室信息,对学生的宿舍寝室信息进行实时管理 。 输入:用户名称 宿舍编号 。输出:用户信息 宿舍信息 备注信息。C.处理流程进入宿舍管理系统界面,进入系统后,按照提示进行相应的操作即可D.安全保密要求于此系统较小,所以没有设置身份认可模块,能够使用系统
4、的人员均被鉴定为合法使用人员。2.3目标以最低的成本,在最短的时间内开发具有管理学校学生宿舍和用户信息功能的学生宿舍管理系统。系统实现后,可提高宿管部人员的管理程度及效率,降低管理中的错误发生,减少信息交流的繁琐过程以及设备费用,提高管理的准确率。2.4条件,假定和限制条件说明对这项开发中给出的条件,假定和所受到的限制。如:a建议该系统运行的最短寿命为6年;b进行系统方案选择比较的时间限一星期。2.5进行可行性研究的方法通过调查分析数据库管理系统现阶段所具备的能力及实现的方法,确定主体结构,利用现阶段所能达到的能力,以最简洁,最容易的办法,边开发边测试,实现这个应用软件 。2.6评价尺度在短时
5、间内开发出的具有改善管理漏洞的较简单的管理系统。3.技术可行性1.系统概述 该系统的应用可以方便学生宿舍对广大住宿学生信息的管理,可以科学的管理学校宿舍,优化宿舍资源的使用等,同时方便管理员对学生的安全管理,可以使用改系统方便的查询学生信息。开发目标系统实现后,大大提高后勤人员的服务效率。降低后勤管理中的错误发生率,减少信息交流的烦琐过程及其带来的开销。后勤人员工作得到精简,信息的准确率得到极大提升。2处理流程和数据流程学生宿舍管理系统主界面添加住户删除信息查询信息保存信息浏览信息读取写入数据库4.经济可行性4.1支出A.采购,开发及安装整套设施(包括房屋,数据通信设备,环境的保护设备,安全与
6、保密设备,操作系统以及软件和数据库软件)所需的金钱若干。B.研究开发数据库的建立以及软件的转换,和后期的维修和技术管理费用可忽略不计。C.若系统工作正常,每次采购及维护所降低的成本若干。D.系统升级所需费用,信息掌握情况的改进,硬件设施的提升或更替所需费用。4.2收益 本系统方便了人员的管理,节约了人力资源的成本,有利于宿舍管理人员查询注入信息,能够更好的统计宿舍人员的入住情况。极大地降低了管理人员人工管理学生信息的费用。4.3投资回收周期 若系统正常工作,本系统的生命期在25年,最大支出为X,最小收益Y,且YX,预计回收周期为2到4年。若负荷工作,硬件配置损坏,将降低使用时间,缩短收益及使用
7、时间。4.4敏感度分析设计系统周期为1周。处理速度普遍用户类型后勤宿管功能界面进入用户类型宿舍管理员功能界面进入用户类型宿舍单元管理员功能界面4.2运行控制连接数据库获取学生信息填充到主界面是否退出主界面信息模块注册信息模块删除信息模块查询信息模块浏览信息模块成功失败结束否4.3运行时间初步测试每种操作运行时间均在1秒以内。5系统数据结构设计5.1数据库数据结构设计序号字段名数据类型说明1Id文本学号2Studentname文本学生姓名3Sex文本性别4Startyear文本入学年份5Major文本专业6Roomtype文本宿舍类型7Buildingmum数字楼号8Bednum数字房间号9Ho
8、usetel文本宿舍电话10Remarks文本备注5.2物理结构设计要点1. 管理员信息2. 楼栋信息1楼栋号2宿舍类型3宿舍号4铺位号5宿舍电话3学生信息1. 姓名2. 性别3. 学号4. 入学年份5. 专业6. 电话7. 备注信息等5.3数据结构与程序的关系由于数据的存取是通过界面的接口和数据库进行连接的,所以在实现过程中必不可少的是应用程序实现它们的连接。常用的访问有:查询、删除、添加、修改等。6系统出错处理设计6.1出错信息查询信息不在数据库范围内,系统将静止不动。6.2补救措施关闭已打开窗口,重新进入该界面。6.3系统维护设计由于系统较小没有外加维护模块,仅靠数据库的一些基本维护措施
9、即可。为便于维护,应该设计了三种日志:系统运行日志、操作日志、出错日志。三种日志根据不同的重要程度采取存放在文件和数据库的方式,系统管理员可以很轻松的监控系统运行情况,数据表的建立和删除有数据系统管理员予以维护。详细设计说明书1.引言: 1、1编写目的: 在前一阶段(概要设计说明书)中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。在本阶段中,确定应该如何具体地实现所要求的系统,从而在编码阶段可以把这个描述直接翻译成用具
10、体的 程序语言书写的程序。主要的工作有:根据在需求分析说明书中所描述的数据、功能、运行、性能需求,并依照概要设计说明书所确定的处理流程、总体结构和模块外部设计,设计软件系统的结构设计、逐个模块的程序描述(包括各模块的功能、性能、输入、输出、算法、程序逻辑、接口等等),解决如何1 添加住户:向数据库中添加住户,并实时显示。2 删除住户:根据输入条件判断要删除的住户。3 查询住户2.总体设计: 软件结构: 学生宿舍管理系统主界面模块添加住户模块删除信息模块查询信息模块保存信息模块浏览信息模块读取写入数据库功能模块分析:主界面模块:连接数据库获取学生信息填充到主界面是否退出主界面信息模块注册信息模块
11、删除信息模块查询信息模块浏览信息模块成功失败结束否查询模块输入新学生信息查询数据库主界面是选择添加学生功能否写入数据库提示错误重新输入是否有同名记录?继续添加?是否删除模块选择要删除的住宿记录删除成功?到数据库中执行返回主界面主界面否选择删除住户功能是显示剩余记录给出提示数据库表的设计:数据库文件StuDormMS.mdb序号字段名数据类型说明1Id文本学号2Studentname文本学生姓名3Sex文本性别4Startyear文本入学年份5Major文本专业6Roomtype文本宿舍类型7Buildingmum数字楼号8Bednum数字房间号9Housetel文本宿舍电话10Remarks文
12、本备注各类代码及函数代码:CAboutDlg:类视图:如右图,IDD具体名为IDD_ABOUTBOX,该类关联的是软件的“关于”对话框:CAddUserDlg:类视图如右图,IDD具体名为IDD_DIALOG_ADDUSER,该类对应的是”添加住户”对话框:对话框中每个控件ID为:学生姓名:IDC_EDIT_STUDENTNAME性别:IDC_EDIT_SEX入学时间:IDC_EDIT_NATIONAL学号:IDC_EDIT_ID专业:IDC_EDIT_MAJOR宿舍类型:IDC_EDIT_ROOMTYPE楼号:IDC_EDIT_BUILDINGNUM房间号:IDC_EDIT_ROOMNUM床
13、铺号:IDC_EDIT_BED宿舍电话:IDC_EDIT_HOMETEL备注:IDC_EDIT_REMARKS在本类中添加的成员变量:public继承:CStringm_strMajor;/专业intm_nBuildingNum;/楼号intm_nRoomNum;/房间号CStringm_strRemarks;/备注CStringm_strHomeTel;/宿舍电话CStringm_strStudentname;/学生姓名CStringm_strId;/学号CStringm_strSex;/性别CStringm_strNationNal;/入学时间intm_nBedNum;/床号CString
14、m_strStudentName;/宿舍类型消息处理函数:OnOK()为添加住户对话框的按下OK键的消息处理函数: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
15、_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 = (CE
16、dit*)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;/增加学生到数据库中STUDENT user;user.strRoomtype
17、 = 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_str
18、Remarks;switch(pDoc-AddUser(user)case 0:/已经存在该学生了CString 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_s
19、trStudentName,m_nBuildingNum,m_nRoomNum,m_nBedNum);break;default:return;break;CDialog:OnOK();CHouseAccessor:类视图如右图,该类是OLEDB数据源类,定义了数据库中存储的学生信息class CHouseAccessorpublic:TCHAR m_major51;/专业LONG m_buildingnum;/楼号LONG m_roomnum; /房间号TCHAR m_remarks51;/备注TCHAR m_studentname51;/学生姓名TCHAR m_housetel51;/宿舍
20、电话TCHAR m_id51;/学号TCHAR m_sex51;/性别TCHAR m_national51;/入学时间LONG m_bednum;/床铺号TCHAR m_roomtype51;/宿舍类型BEGIN_COLUMN_MAP(CHouseAccessor)/定义显示方式COLUMN_ENTRY(1, m_studentname)COLUMN_ENTRY(2, m_roomtype)COLUMN_ENTRY(3, m_buildingnum)COLUMN_ENTRY(4, m_roomnum)COLUMN_ENTRY(5, m_bednum)COLUMN_ENTRY(6, m_hous
21、etel)COLUMN_ENTRY(7, m_sex)COLUMN_ENTRY(8, m_national)COLUMN_ENTRY(9, m_major)COLUMN_ENTRY(10, m_id)COLUMN_ENTRY(11, m_remarks)END_COLUMN_MAP()DEFINE_COMMAND(CHouseAccessor, _T( SELECT studentname, roomtype, buildingnum, roomnum, bednum, housetel, sex, national, major, id, remarks FROM house)/ You m
22、ay wish to call this function if you are inserting a record and wish to/ initialize all the fields, if you are not going to explicitly set all of them.void ClearRecord()memset(this, 0, sizeof(*this);CHouse类:类视图如右图,继承于CHouseAccessor类,用于对数据库进行操作。class CHouse : public CCommandCAccessor public:HRESULT O
23、pen()/打开数据库HRESULThr;hr = OpenDataSource();/打开数据源,并返回结果集if (FAILED(hr)return hr;return OpenRowset();/打开所有行记录的结果集HRESULT OpenDataSource()HRESULThr;CDataSource db;CDBPropSetdbinit(DBPROPSET_DBINIT);/定义数据库连接字串/设置数据库连接字串的属性dbinit.AddProperty(DBPROP_AUTH_CACHE_AUTHINFO, true);dbinit.AddProperty(DBPROP_AU
24、TH_ENCRYPT_PASSWORD, false);dbinit.AddProperty(DBPROP_AUTH_MASK_PASSWORD, false);dbinit.AddProperty(DBPROP_AUTH_PASSWORD, OLESTR();dbinit.AddProperty(DBPROP_AUTH_USERID, OLESTR(Admin);dbinit.AddProperty(DBPROP_INIT_DATASOURCE, OLESTR(StuDormMS.mdb);/打开的数据源文件文件名dbinit.AddProperty(DBPROP_INIT_MODE, (l
25、ong)16);dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR();dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033);hr = db.Open(_T(Microsoft.Jet.OLEDB.4.0), &dbinit);/打开数据库文件if (FAILED(hr)return hr;return m_session.Open(db);HRESULT OpenRowset()/ Set pro
26、perties for openCDBPropSetpropset(DBPROPSET_ROWSET);propset.AddProperty(DBPROP_IRowsetChange, true);propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);return CCommandCAccessor :Open(m_session, NULL, &propset);CSessionm_session;CInhabitantsApp类:应
27、用程序类,派生于CWinApp,负责管理整个程序,是整个程序的入口,用于初始化整个应用程序和完成程序结束的收尾工作。主要函数:ExitInstance()退出程序函数InitInstance()初始化程序函数InitATL()初始化ATL函数OnAppAbout()程序运行时函数CInhabitantsDoc类:文档类,派生于CDocument,管理程序的文档BOOL CInhabitantsDoc:OnNewDocument()if (!CDocument:OnNewDocument()return FALSE;/打开数据库HRESULT result = m_dbHouse.Open();
28、if(FAILED(result)AfxMessageBox(open database failed!);/设置程序标题SetTitle(学生宿舍管理系统);return TRUE;AddUser()函数,添加用户int CInhabitantsDoc:AddUser(STUDENT &user)/*返回值:0已经存在-1添加失败1添加成功*/判断是否存在该学生了CString strSql;strSql.Format(select * from house where roomtype = %s and buildingnum = %d and roomnum = %d and bednu
29、m = %d,user.strRoomtype,user.nBuildingnum,user.nRoomnum,user.nBednum);CCommandCAccessor dbHouse;long* pCount = new long;if(dbHouse.Open(m_dbHouse.m_session,strSql,NULL,pCount) != S_OK)AfxMessageBox(error);delete pCount;return -1;if(dbHouse.MoveFirst() = S_OK)delete pCount;dbHouse.Close();return 0;de
30、lete pCount;dbHouse.Close();/增加学生到数据库中m_dbHouse.MoveLast();_tcscpy( m_dbHouse.m_roomtype,user.strRoomtype );m_dbHouse.m_buildingnum = user.nBuildingnum;m_dbHouse.m_roomnum = user.nRoomnum;m_dbHouse.m_bednum = user.nBednum;_tcscpy(m_dbHouse.m_studentname,user.strName);_tcscpy(m_dbHouse.m_major,user.s
31、trMajor);_tcscpy(m_dbHouse.m_remarks,user.strRemarks);_tcscpy(m_dbHouse.m_housetel,user.strHouseTel);_tcscpy(m_dbHouse.m_id,user.strId);_tcscpy(m_dbHouse.m_sex,user.strSex);_tcscpy(m_dbHouse.m_national,user.strNationNal);HRESULT hResult = m_dbHouse.Insert(); if( FAILED( hResult ) )AfxMessageBox( _T(
32、 Error inserting the current record ) );return -1;return 1;/删除符合条件的学生BOOL CInhabitantsDoc:DeleteUser(CString strSql)CCommandCAccessor dbHouse;long* pCount = new long;if(dbHouse.Open(m_dbHouse.m_session,strSql,NULL,pCount,DBGUID_DEFAULT,FALSE) != S_OK)AfxMessageBox(error);delete pCount;return FALSE;d
33、elete pCount;dbHouse.Close();return TRUE;void CInhabitantsDoc:DeleteContents() /关闭数据库m_dbHouse.Close();m_dbHouse.m_session.Close();CDocument:DeleteContents();CInhabitantsModule类:ATL类。CInhabitantView类:程序视图类CLeftTreeView类:树视图类,用于显示程序左边的树视图添加的成员变量:protected继承:HTREEITEM m_hHitItem;CImageList m_ImageList
34、;添加的成员函数:/将数据库中的所有学生到加到树中void CLeftTreeView:AddUsersToTree()CInhabitantsDoc* pDoc = (CInhabitantsDoc*)GetDocument();if(pDoc=NULL)return;/清空树GetTreeCtrl().DeleteAllItems();/取数据库中得所有记录CString strSql = select * from house;CCommandCAccessor dbHouse;long* pCount = new long;if(dbHouse.Open(pDoc-m_dbHouse.
35、m_session,strSql,NULL,pCount) != S_OK)AfxMessageBox(error);delete pCount;return;delete pCount;if(dbHouse.MoveFirst() = S_OK)doAddUserToTree(dbHouse.m_roomtype,dbHouse.m_buildingnum,dbHouse.m_roomnum,dbHouse.m_bednum);while( dbHouse.MoveNext() = S_OK );dbHouse.Close();void CLeftTreeView:OnInitialUpda
36、te() CTreeView:OnInitialUpdate();/设置树风格:SetWindowLong(m_hWnd,GWL_STYLE,WS_VISIBLE | WS_TABSTOP | WS_CHILD | WS_BORDER| TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES| TVS_DISABLEDRAGDROP|TVS_SHOWSELALWAYS);/为树视图创建图标连表CInhabitantsApp* pApp = (CInhabitantsApp*)AfxGetApp();CTreeCtrl* pTreeCtrl = &GetT
37、reeCtrl();m_ImageList.Create(16,16,ILC_COLOR16,4,4);m_ImageList.Add(pApp-LoadIcon(IDI_ICON_SECTION);m_ImageList.Add(pApp-LoadIcon(IDI_ICON_BUILDING);m_ImageList.Add(pApp-LoadIcon(IDI_ICON_CELL);m_ImageList.Add(pApp-LoadIcon(IDI_ICON_USER);pTreeCtrl-SetImageList(&m_ImageList,TVSIL_NORMAL);/将学生加入树中AddUsersToTree();pTreeCtrl-SortChildren(TVI_ROOT);void CLeftTreeView:AddUserToTree(CString strStudentName,int nBuildingNum,int nRoomNum,int nB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度国际金融衍生品交易合同的信用风险管理2篇
- 2024年度音响设备出租质量保证合同3篇
- 2024年房产开发项目用地测绘与权属确认合同3篇
- 2024年物业租赁合同调整条款3篇
- 2024年度文化旅游产业项目开发、建设与运营合同
- 2024年水库生态环境修复合同
- 2024版企业员工福利方案策划与实施合同3篇
- 2024年摩托车赛事直播权转让合同3篇
- 2024年度消防栓系统设计与施工合同6篇
- 2024版地产公司房地产项目工程总承包合同3篇
- 《犬猫牙科学》课件
- 《ehr系统培训》课件
- 品质部年终总结报告2022
- 库尔勒香梨行业分析
- 易燃液体罐车装卸作业操作规程模版
- 六年级上册必读书目《童年》阅读测试题(附答案)
- 头痛的鉴别诊断
- 机械工程测试技术课后习题
- 人工智能辅助命题
- 麻醉药相关项目营销策略方案
- 30题战略规划岗位常见面试问题含HR问题考察点及参考回答
评论
0/150
提交评论