宿舍管理系统毕业论文.docx
《宿舍管理系统毕业论文.docx》由会员分享,可在线阅读,更多相关《宿舍管理系统毕业论文.docx(43页珍藏版)》请在冰点文库上搜索。
宿舍管理系统毕业论文
宿舍管理系统
摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统胡实施在技术上已渐渐成熟。
管理信息系统是一个不断发展胡新型学科,任何一个单位要生存要发展,要高效率得把部活动有机的组织起来,就必须建立与自身特点相适应胡管理信息系统。
本系统根据大学生宿舍管理的实际情况而设计,采用VisualC++为开发工具,数据库采用的是最为普与的小型数据库管理系统Access,能实现宿舍管理中的添加信息、修改信息、删除信息、查询信息等必不可少的功能。
关键字:
VC++,宿舍管理系统,Access,数据库,MFC编程。
1.前言……………………………………………………………………………………3
2.系统需求分析…………………………………………………………………………4
2.1设计目标…………………………………………………………………………4
2.2设计平台…………………………………………………………………………4
2.3设计思想…………………………………………………………………………4
2.4可行性分析………………………………………………………………………5
3.设计框架和界面………………………………………………………………………6
3.1设计框架…………………………………………………………………………6
3.2设计界面…………………………………………………………………………7
3.3数据库表结构……………………………………………………………………10
4.环境简介………………………………………………………………………………11
5.系统用到技术简介……………………………………………………………………14
5.1数据库简介………………………………………………………………………14
5.2MFC简介…………………………………………………………………………16
5.3ADO技术简介……………………………………………………………………18
6.各模块功能与主要模块的流程图……………………………………………………20
6.1各模块功能简介…………………………………………………………………20
6.2主要流程图………………………………………………………………………21
7.软件调式分析…………………………………………………………………………23
结论…………………………………………………………………………………24
致…………………………………………………………………………………25
参考文献…………………………………………………………………………………26
附录…………………………………………………………………………………27
前言
宿舍,是大学生在高校校园里一个重要的学习、生活、交往的空间环境。
随着高校办学规模的扩大,学生人数不断增多,高校学生宿舍管理信息量日益庞大,如果仍采用传统的工作方式——纸媒介的账本化工作模式,会存在获取信息慢、查阅困难、准确性差等问题,很难适应高水平宿舍管理的需要。
而采用计算机软件来实现信息的管理能很好的解决传统工作方式存在的问题。
因此,我们设计开发了学生宿舍管理系统,旨在提高宿舍管理的效率和准确性,减少工作的盲目性,对后勤管理的现代化建设有一定的指导意义。
2.系统需求分析
2.1设计目标
<<宿舍管理系统>>为了方便学校宿舍管理者对学生宿舍管理(增加,删除,查询)进行制定的。
相应的需求有:
1.系统维护需求有:
a.增加住户:
对宿舍学生进行增加,主要增加学生的各个信息。
b.删除住户:
对宿舍学生进行删除,主要删除学生信息。
c.查询住户:
对宿舍学生进行查询,主要查询学生信息。
d.退出:
退出系统。
2.查看选项栏这主要包括:
a.工具栏:
对工具栏显示或隐藏。
b.状态栏:
对状态栏显示或隐藏。
3.信息栏中包括:
a.关于作者:
查看信息。
2.2设计平台
开发本系统的过程中所用到的主要软件开发工具有:
VisualC++6.0、Access2000、Photoshop。
现将使用情况分别介绍如下:
VisualC++6.0:
MFC方式设计系统界面,采用OLEDB方式访问数据库。
Access:
采用Access设计本系统中的数据库。
Photoshop:
用于添加学生、删除学生、查询学生等等按钮图标的美工设计。
2.3设计思想
1.应用原型方法进行开发。
原型方法将系统分析、设计、实施三个阶段融为一体,使操作者更便于使用该系统,由中南民族大学宿舍管理的实际情况出发,讲宿舍信息分层设计,有宿舍类型到楼号,由楼号到宿舍号,在找到床铺号,便于层次化管理。
2.选用灵活、方便、友好的用户界面。
采用操作简单的树型图设计,便于查找学生信息,操作快捷方便;
3.数据库采用的是比较流行的小型数据库管理软件Access,与C++程序的连接方式为OLEDB,该方式可以让开发人员不直接向数据源发出指令,而是通过OLEDB接口与数据提供者进行交互,只需要对接口进行操作,这样简化了程序的设计。
2.4可行性分析
技术上的可行性:
技术方面的可行性就是根据现有的技术条件,能否实现系统的各项要求。
设备:
该系统对所需的硬件设备,现有设备的性能完全能够满足系统功能的要求。
开发环境:
WinXP+VC6.0+Access。
首先,对操作系统进行分析。
目前,大部分用户使用的操作系统是Microsoft公司的Windows视窗系统。
界面友好,各种操作比较方便,它完全支持同样属于VC6.0。
其次,对开发工具进行分析。
面向对象、可视化开发大大简化了程序员的编程工作,提高了模块的可重用性。
帮助用户直观的、可视地设计程序的用户界面,可以方便的编写和管理各种类,维护程序源代码,从而提高了开发效率。
最后,对功能实现的分析。
对于本程序,可以用VC进行界面设计,用Access建立数据库,在程序的实现过程中使用VC中ADO技术进行对数据库访问,并使用SQL语句进行增加、删除、修改、查询等操作。
3.设计框架和界面
3.1设计框架
本系统“宿舍管理”的设计框图如下:
“宿舍管理”的设计框图
3.2设计界面
1.执行程序进入住页面,如下图所示:
主界面
2.点击宿舍床铺,查询次床铺的学生信息,如下图所示:
“查看学生详细信息”界面
3.点击添加学生按钮,进入添加学生信息页面,如下图所示:
“添加学生”界面
4.点击删除按钮,弹出是否删除对话框,如下图所示:
“删除学生”界面
5.点击学生查询按钮,进入学生查询页面,如下图所示:
“学生查询”界面
6.点击关于作者按钮,进入信息页面,如下图所示:
“信息”界面
3.3数据库表结构
本系统采用Access作为数据库,使用OLEDB访问数据库。
根据系统功能与需求分析,只需要创建一个数据表House,该表包含学生,性别,入学时间,学号,专业,宿舍类型,楼号,房间号,床铺号,宿舍,备注等信息项,自然的形成了一个树型结构。
不设置主键(PRIMARYKEY),由程序根据地址唯一确定用户信息的不
二性。
表结构如右所示:
数据库表结构图
4环境简介
C++简介 我们已看到用COM服务器组件对于建立一个基于网络的应用程序的重要性,但问题不在于是否建立它们,而在于用什么语言去创建。
一种选择是用C++。
人们对C++有许多不同的看法,保守的C++程序员坚持用其他语言创建COM组件,他们认为只有真正的程序员使用C++。
另一方面,VB程序员认为C++是一种很难掌握和使用的语言,没有必要增加编程时间和进行艰难的尝试。
Java程序员认为他们比C++程序员强,因为JamesGosling(Java的发明者)吸收了许多语言(包括C++)的优点发明了Java,本章和下一章的目的就是消除对C++的偏见和错误概念。
本章集中介绍用C++建立服务器组件,不讲述C++语言,如果想学C++,请参阅Ivor.Horton著的《BeginningVisualC++6》,Wrox出版,书号为ISBN1-861000-88-X。
本章的主要容有:
1.C++简史。
2.使用C++原因。
3.从VB移植到C++。
4.ATL、STL和MFC介绍。
5.建立一个COM组件。
6.错误处理与调试。
更重要的是应该记住,现在,不只是在用C++建立组件,可以使用VisualC++中可用的任何工具,使得建立过程更加容易。
先从C++的起源谈起。
1.C++语言 在决定是否使用C++语言之前,最好是搞清楚这种语言的实质,让我们看一下C++的历史和现状。
2.C++简史 刚开始形成的是C语言,那些想建立更快更有效的代码的程序员非常欣赏C语言,有一位名叫BjarneStroustrup的人却不满足于仅仅是生产快速代码,他想创建面向对象的C语言编程。
他开始对C语言的核进行必要的修改,使其能满足面向对象模型的要求。
C++从此产生。
BjarneStroustrup是C++的最初设计者和实现者。
它自诞生以来,经过开发和扩充已成一种完全成熟的编程语言。
现在C++已由ANSI、BSI、DIN、其他几个国家标准机构和ISO定为标准。
ISO标准于1997年11月4日经投票正式通过。
C++标准演变了许多年。
C++模板是近几年来对此语言的一种扩展,模板是根据类型参数来产生函数和类的机制,有时也称模板为“参数化的类型”。
使用模板,可以设计一个对许多类型的数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。
标准模板库(StandardTempalteLibrary,STL)和微软的活动模板库(ActiveTempalteLibrary,ATL)都基于这个C++语言扩展。
C++标准可分为两部分,C++语言本身和C++标准库。
C++标准库对于VisualC++是相当新的,实际上微软只是在发布VisualC++5.0时去除了一些“bug”。
标准库提供了标准的输入/输出、字符串、容器(如矢量、列表和映射等)、非数值运算(如排序、搜索和合并等)和对数值计算的支持。
应该说,C/C++包含了相对少的关键字,而且很多最有用的函数都来源于库,C++标准库实现容器和算法的部分就是STL。
STL是数据结构和算法的一个框架,数据结构包括矢量、列表和映射等,算法包括这些数据结构的查找、拷贝和排序等。
1994年7月,ANSI/ISOC++标准委员会投票决定接受STL为C++标准库的一部分,这个建议是根据AlexStepanov、MengLee和DavidMusser这三人的编程和软件库研究提出的。
STL的产生是为了满足通用性的设计目标,而不是为了提高性能。
那么微软对C++标准的态度怎什么样?
微软运行VC++与Plum-HallC++,想比较得到的分数在92%和93%之间。
为什么不是100%的一个原因是跟踪这个标准并同时建立一个编译器比较困难,微软也考虑了对现有编码兼容的重要性,有时他们不得不偏离标准以保持这个兼容性。
3.使用C++的原因
应该有充分的理由使用C++创建服务器组件,而不只是为了给上司一个好印象才使用C++。
如果以前没用过C++,你必须要尽力学习。
a.性能
性能有个两方面,算法速度和机器代码效率。
一个算法可以定义为数据通过系统的概念化的路径,它描述一些点,在这些点上,数据能够被操作并可转换产生某个结果。
例如,一个算法定义为获取一个字符串,计算字符串中的字符个数,并作为结果返回的过程。
算法与
语言是独立的,所以在编程之前必须设计算法,编写一个快速程序的第一个步骤是设计良好的算法,能以最少的操作步骤得出问题的答案。
第二个步是选择语言,这也影响程序的速度。
从性能的角度考虑,用汇编语言编写程序是最佳的选择,它是计算机能理解的自然语言。
但是,几乎没有人用汇编语言编写完整的程序,因为这样做极其乏味。
另一个最佳的选择是C语言。
然而,由VC++提供的所有工具都产生C++,而不是C。
使用VC++的向导可以生成大量的使用代码,而不必人工地编写代码。
从编写程序的难易程度和程序的性能综合考虑,C++是最佳的选择。
C++性能良好,因为它被编译为机器代码。
对于VBScript和Java等语言,代码在运行时由程序解释,而且每次运行程序时都要将代码转换为机器码,这样做效率比较低,不仅仅是已编译过的C++程序运行得较快,而且微软C++编译器已存在多年。
这意味着微软的编译器程序员已经把许多优点集中到编译器上,以致于它能产生非常高效的机器码。
因为C++是编译语言,而且非常自然,比VB更接近机器代码,所以由C++编译器产生的代码一定比VB的编译代码效率更高。
b.错误处理
一个好的程序与一个伟大的程序的区别就是其是否具有良好的错误处理支持。
实际上,如果在实现中首先进行错误处理,而不是在最后才进行,那么整个程序的开发和测试过程会更加完美。
但是,错误处理只能与语言所支持的容相一致。
VBScript具有基本的错误处理支持功能。
在默认情况下,不能捕获VBScript中的错误。
每次怀疑产生错误时,要调用OnErrorResumeNext功能,并检查Error对象。
而C++中的错误处理比较好,这是因为有“异常处理”,本章的后面部分将详细介绍。
4.最小的依赖性
正如上面所说,C++是一种编译语言,即C++代码在执行之前已转换为机器码。
只要此代码不依赖于外部的动态库(DLL),C++就可以在不需要安装额外程序的情况下移动到运行同样操作系统的其他机器和微处理器上,而移动Java程序时需要先安装Java运行期库。
5.利用现有的代码 由于C和C++已经存在许多年了,现在有许多可利用的代码,你的服务器组件可以使用现有的C/C++代码或库。
例如统计库和到老系统的C接口。
6.最大化COM特征
COM与C++很接近,实际上,DonBox(COM的权威)在他的《EssentialCOM》一书的第一章写道:
“COM就是更好的C++”。
他说明了COM规是如何从C++语言规律中产生出来的。
通过理解C++,会对COM有更深的理解。
某些语言不能利用所有的COM特征,而在C++中,几乎可以使用所有的COM特征。
7.面向对象编程 如果你在VB中使用过类(class),则对任何COM对象和文档对象模型(DocumentObjectModel,DOM)都应
5.系统用到技术简介
5.1数据库简介
ACCESS数据库简介
MicrosoftAccess是一种关系式数据库,关系式数据库由一系列表组成,表又由一系列行和列组成,每一行是一个记录,每一列是一个字段,每个字段有一个字段名,字段名在一个表中不能重复。
Access数据库以文件形式保存,文件的扩展名是MDB。
Access数据库由七种对象组成,它们是表、查询、窗体、报表、宏、页和模块。
表(Table)——表是数据库的基本对象,是创建其他5种对象的基础。
表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。
查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并
能连接若干个表的字段组成新表。
窗体(Form)——窗体提供了一种方便的浏览、输入与更改数据的窗口。
还可以创建子窗体显示相关联的表的容。
窗体也称表单。
报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。
宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。
Access列出了一些常用的操作供用户选择,使用起来十分方便。
模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。
模块使用VisualBasic编程。
页——是一种特殊的直接连接到数据库中数据的一种WEB页。
通过数据访问页将数据发布到Internet或Intranet上,并可以适用浏览器进行数据的维护和操作。
ACCESS缺点
安全性不够,加了用户级密码容易破解,如果做为服务器的话,对服务器要求很高,否则容易造成MDB损坏.
并发数255,但是对高强度操作适应性差,如果服务器不够好,网络不够好,编程的方法不够好,多人同时访问就能导致MDB损坏.
不能将VBA代码开发的软件系统直接编译成EXE可执行文件,不能脱离ACCESS或者ACCESSRUNTIME环境,该环境相对其他软件体积较大(50M左右)。
每个数据库文件最大限制只有2G,对于大型显然不能够胜任。
5.2MFC简介
1.MFC框架
MFC库是开发Windows应用程序的C++接口。
MFC提供了面向对象的框架,采用面向对象技术,将大部分的Windows API 封装到C++类中,以类成员函数的形式提供给程序开发人员调用。
API 封装到C++类图如下图所示:
API 封装到C++类图
CWnd类是MFC中一个非常重要的类,它封装了与窗口相关的操作。
在前面中,曾经有构建一个Windwos程序的几个部分:
blog.163./zhoumhan_0351/blog/static/15721
MFC中的WinMain函数实际上是调用AfxWinMain函数来实现的。
在VC给我们MFC向导生成的代码中,我们发现,在AfxWinMain函数中,调用了三个函数:
a.pApp->InitApplication()//完成存管理方面的工作
b.pApp->InitInstance()//此函数是虚函数,调用派生类的InitInstance函数,完成窗口类的创建,注册,更新等操作。
窗口类的注册是由AfxEndDeferRegisterClass完成。
如果该窗口类已经注册,则直接返回一个真值;如果尚未注册,就调用RegisterClass函数注册该窗口类。
其中,函数PreCreateWindow是为程序员修改窗口类参数准备的。
其参数是CREATESTRUCT的引用,如果其值发生了变化,在调用CreateWindowEx函数时,其参数会发生相应的改变。
在MFC中,窗口的创建功能由Cwnd类的CreateEx函数实现(从父类继承来的,调用CWnd:
:
CreateEx())。
2.MFC程序的运行过程如下:
a.利用全局应用程序对象theApp启动应用程序。
b.调用全局应用程序对象的构造函数,从而调用基类(CWinApp)的构造函数,完成应用程序的一些初始化工作,并将应用程序对象的指针保存起来。
c.进入WinMain函数。
在AfxWinMain函数中获取子类的指针,利用指针实现上述的三个函数,从而完成窗口的创建注册等工作。
d.进入消息循环,一直到WM_QUIT。
5.3.ADO技术简介
ADO组件的使用需要利用支持COM的高级语言,例如ASP中的VBScript或者VisualBasic,甚至Delphi,微软的竞争对手Borland的一个产品,现在也支持使用ADO来访问数据库。
在新的编程框架.NETFramework中,微软也提供了一个面向Internet的版本的ADO,称为ADO.NET。
其对象模型和传统ADO差别很大。
ADO是一种面向对象的编程接口,微软介绍说,与其同IBM和Oracle提倡的那样,创建一个统一数据库,不如提供一个能够访问不同数据库的统一接口,这样会更加实用一些。
为实现这一目标,微软在数据库和微软的OLEDB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。
开发人员在使用ADO时,其实就是在使用OLEDB,不过OLEDB更加接近底层。
ADO的一项属性远程数据服务,支持“数据仓库”ActiveX组件以与高效的客户端缓存。
作为ActiveX的一部分,ADO也是COM组件的一部分。
ADO是由早期的微软数据接口?
?
远程数据对象RDO演化而来的。
RDO同微软的ODBC一同连接关系数据库,不过不能连接非关系数据库。
ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation封装接口。
对那些熟悉RDO的程序员来说,你可以把OLEDB比作是ODBC驱动程序。
如同RDO对象是ODBC驱动程序接口一样,ADO对象是OLEDB的接口;如同不同的数据库系统需要它们自己的ODBC驱动程序一样,不同的数据源要求它们自己的OLEDB提供者(OLEDBprovider)。
目前,虽然OLEDB提供者比较少,但微软正积极推广该技术,并打算用OLEDB取代ODBC。
ADO向VB程序员提供了很多好处。
包括易于使用,熟悉的界面,高速度以与较低的存占用(已实现ADO2.0的Msado15.dll需要占用342K存,比RDO的Msrdo20.dll的368K略小,大约是DAO3.5的Dao350.dll所占存的60%)。
同传统的数据对象层次(DAO和RDO)不同,ADO可以独立创建。
因此你可以只创建一个"Connection"对象,但是可以有多个,独立的"Recordset"对象来使用它。
ADO针对客户/服务器以与WEB应用程序作了优化。
ADO(ActiveXDataObjects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。
例如,如果您希望编写应用程序从DB2或Oracle数据库中向网页提供数据,可以将ADO程序包括在作为活动服务器页(ASP)的HTML文件中。
当用户从请求网页时,返回的网页也包括了数据中的相应数据,这些是由于使用了ADO代码的结果。
象Microsoft的其它系统接口一样,ADO是面向对象的。
它是Microsoft全局数据访问(UDA)的一部分,Microsoft认为与其自己创建一个数据,不如利用UDA访问已有的数据库。
为达到这一目的,Microsoft和其它数据库公司在它们的数据库和Microsoft的OLE数据库之间提供了一个“桥”程序,OLE数据库已经在使用ADO技术。
ADO的一个特征(称为远程数据服务)支持网页中的数据相关的ActiveX控件和有效的客户端缓冲。
作为ActiveX的一部分,ADO也是Microsoft的组件对象模式(COM)的一部分,它的面向组件的框架用以将程序组装在一起。
ADO从原来的Microsoft数据接口远程数据对象(RDO)而来。
RDO与ODBC一起工作访问关系数据库,但不能访问如ISAM和VSAM的非关系数据库。
ADO是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,它是一种功能强大的数据访问编程模式,从而使得大部分数据源可编程的属性得以直接扩展到你的ActiveServer页面上。
可以使用ADO去编写紧凑简明的脚本以便连接到OpenDatabaseConnectivity(ODBC)兼容的数据库和OLEDB兼容的数据源,这样ASP程序员就可以访问任何与ODBC兼容的数据库,包括MSSQLSERVER、Access、Oracle等等。
比如,如果开发人员需要让用户通过访问网页来获得存在于IBMDB2或者Oracle数据库中的数据,那么就可以在ASP页面中包含ADO程序,用来连接数据库。
于是,当用户在上浏览网页时,返回的网页将会包含从数据库中获取的数据。
而这些数据都是由ADO代码做到的。
6各模块功能与主要模块的流程图
6.1各模块功能