摘 要
随着计算机技术的不断提高,数据信息处理技术有了空前的发展,人工管理方式逐渐向计算机管理方式转变。高校是科研的阵地,宿舍管理也应该变得更加信息化、时代化,节省人力物力,从而提高工作效率。本学生宿舍信息管理系统具有一定的社会和经济效益,对提高巢湖学院的宿舍管理水平具有重要意义。
本系统主要用Microsoft公司的经典开发工具VC6.0,它能够很好的开发出具有友好性和交互性的界面,并使用Microsoft Access2003作为后台数据库。在数据库结构的设计过程中,先后对巢湖学院宿舍管理系统进行需求分析、功能模块划分、数据库模式分析。在设计过程中对系统进行需求迭代,最终形成可行性系统。本系统包括宿舍管理人员的信息管理、学生信息管理、宿舍信息管理、外来人员信息管理、奖罚信息管理、申请报修信息管理、高级查询等。 关键词:宿舍管理系统;奖罚信息管理;申请报修信息管理
目 录
第1章 绪论 ........................................................ 1
1.1 论文背景及课题来源 .......................................... 1 1.2 本课题在国内外的发展状况 .................................... 1 1.3 应解决的问题及系统开发意义 .................................. 1 第2章 开发工具及相关技术介绍 ...................................... 3
2.1 C++语言的特点 ............................................... 3 2.2 Microsoft Access 2003的特点 ................................. 3 2.3 MFC技术介绍 ................................................. 3 第3章 系统需求分析 ................................................ 4
3.1系统可行性分析 ............................................... 4 3.2 系统任务描述 ................................................ 5 3.3系统功能分析 ................................................. 5
3.3.1 系统的功能需求 ......................................... 5 3.3.2 系统数据流图 ........................................... 7 3.3.3 系统数据分析 ........................................... 8
第4章 系统设计 ................................................... 13
4.1 系统总体结构设计 ........................................... 13 4.2 系统数据库设计 ............................................. 15 4.3系统部分功能模块设计 ........................................ 19
4.3.1超级管理员登录模块 .................................... 19 4.3.2添加学生模块 .......................................... 20
第5章 功能实现 ................................................... 21
5.1 系统主要模块代码 ........................................... 21
5.1.1超级管理员登陆界面及其主功能界面 ...................... 21 5.1.2宿舍管理员登陆界面及其主功能界面 ...................... 26 5.2 系统测试 ................................................... 29
5.2.1 系统测试的特点 ........................................ 29 5.2.2系统测试的步骤 ........................................ 29
第6章 结论 ........................................................ 32 参考文献 ........................................................... 33 致 谢 ........................................................... 34
第1章 绪论
1.1 论文背景及课题来源
随着时代的发展,计算机技术逐渐深入各行各业,为广大的用户提供了更为人性和便捷的服务。目前各行各业广泛使用专用系统,其内容跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用的系统对一个机构(或部门)的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,为用户提供的服务将越来越丰富,越来越人性化[1]。
随着巢湖学院教学质量的不断提高,吸引越来越多的学子来这里学习,于是巢湖学院的规模不断扩大,然而目前巢湖学院宿舍管理人员仍然采用手工记录数据的方式完成一些工作,比如学生出入宿舍记录、宿舍人员信息、宿舍奖罚信息等,尤其是宿舍财产安全,只靠人工记录已经不能快速处理外来人员以及被访问学生的信息,不能有效的遏制盗窃事件的发生。
为了提高巢湖学院宿舍管理部门的工作效率,充分利用资源,减少不必要的人力物力和财力的支出,借此为巢湖学院宿舍管理部门开发一个系统来进行管理学生宿舍信息,使学生宿舍信息实现标准化是十分必要的。
1.2 本课题在国内外的发展状况
宿舍管理系统是高校管理宿舍不可缺少的部分,开发出这样的系统对于高校的宿舍管理人员和学校管理人员来说都至关重要,因此宿舍管理系统应该能够为宿舍管理人员提供充足的信息和快捷的查询手段。但长时间以来,人们使用传统人工的方式管理文件信息,这种方式存在着许多的缺点,例如:效率低、保密性差、时间长,这将会产生大量的文件和数据,不便于用户的查找、更新和维护。
目前国内外都认识到教育的重要性,在高校建设方面都投入了大量的人力物力,很多知名的高校也都开发出适合自己的宿舍管理系统,而巢湖学院也一直在迎头赶上,为此开发出适合巢湖学院的宿舍管理系统也是十分迫切的。
1.3 应解决的问题及系统开发意义
对于学校而言,学生宿舍管理是必不可少的组成部分。目前有许多学校的宿舍管理部门仍停留在手工记录数据的阶段,对于规模小的学校来说勉强可以接受,但对于比较庞大的学生信息量,需要记录存档的数据比较多的高校来说,手工记录是相当麻烦的,而且当查找某条记录时,由于数据量的庞大,只靠人员一
1
条一条地查找,不仅麻烦而且浪费时间,且工作效率较低。
为了提高学校宿舍管理部门的工作效率,充分利用资源,减少不必要的人力、物力和财力的支出;方便宿舍管理部门的工作人员全面地掌握学生住宿情况;提高学生对宿舍管理的互动性等目的,为学校开发设计专用的系统--学生宿舍管理系统来管理学生的宿舍信息,使学生宿舍信息实现管理的标准化和制度的规范化是十分必要的。此系统将针对巢湖学院宿舍管理的具体情况进行设计与实现。本系统针对目前宿舍管理人员在工作时存在的各种问题,提供一个较为方便的解决方案,使管理人员在日常管理工作过程中,提高工作效率,并使得学校宿舍资源得以有效配置,从而提高我们学校高效的日常管理水平,也让学校更好的为学生提供便利的服务。
2
第2章 开发工具及相关技术介绍
2.1 C++语言的特点
本系统采用了程序设计语言C++,它是一种优秀的面向对象程序设计语言,是在C语言的基础上发展而来的,但它比C语言更易被人们学习和掌握。C++以其独特的语言机制在计算机科学的各个领域中得到了广泛的应用[2]。面向对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃,C++完美地体现了面向对象的各种特性。C++的设计原则是:C++可设计成静态类型机制,有着与C语言同样高效且可移植的多用途程序设计语言,C++可设计成有着直接和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计),C++尽可能的设计成与C语言兼容,从而提供一个从C语言到C++的平滑过渡[4]。
2.2 Microsoft Office Access 2003的特点
Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统,MS ACCESS用它自己的格式将数据存储在基于Access Jet的数据库引擎里,它还可以直接导入或者链接数据(这些数据存储在其他应用程序和数据库),Access有强大的数据处理、统计分析能力,利用Access的查询功能,可以方便地进行各类汇总、平均等统计[1],并可灵活设置统计的条件。Access用来开发软件,比如生产管理、销售管理、库存管理等各类企业管理软件,其最大的优点是:易学[6]。
2.3 MFC技术介绍
MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),是以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量[9]。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC的主要优点是可以用面向对象的方法来调用Windows API,且便于应用程序的开发。MFC将很多应用程序开发中常用的功能自动化,并且提供了文档框架视图结构和像活动文档这样的便于自定义的应用程序框架[5]。同时,在Visual C++内部也内建了很多对MFC的例如类向导这样的支持以减少软件开发的时间,使用类向导可以生成从hello world这样的简单程序到活动文档服务器这样的复杂程序。MFC的消息映射机制也避免了使用性能较低的庞大虚函数表[7]。
3
第3章 系统需求分析
软件需求分析包括对需求进行推敲和润色以保证所有的涉众人都能够理解需求,以及自习检查并找出其中的错误、漏洞以及其他缺陷。分析包括将高层的需求分解成具体细节、创建开发原型,以及评估可行性和协商需求优先级。其目的是开发高质量、内容详细的需求,让管理者能够对项目做出实绩的评估,使技术人员能够继续进行设计、开发和测试[8]。
3.1系统可行性分析
系统的可行性分析是建立在用户的要求和系统调研的基础上进行的,可行性分析的主要工作包括:
(1) 组织管理可行性
本宿舍管理系统是由学校的宿舍管理部门提出的,在计算机与信息工程学院老师的带领下,开发人员及学院学生利用自己的时间而设计实现的。在开发过程中,学院学生大都拥有自己的电脑,而且学院也能够提供计算机用于开发系统项目。因此,从组织形式及管理层面上来说,设计实现巢湖学院宿舍管理系统是可行的。
(2) 技术可行性分析
本系统开发主要包括前端应用程序的开发和后台数据库的建立与维护。为了达到具体管理体制的要求,满足管理人员的需求,系统在多方面提供方便的查询,解决了大量的手工计算,在添加楼栋以及学生信息时都可以智能的提供参考信息,界面具有很高的友好性和交互性,操作简单方便,即使没有相关计算机专业知识的宿舍管理人员也可以迅速的掌握使用方法。
随着数据库管理系统的普及以及可视化编程软件的出现,数据库管理信息系统的开发变得更为简单。对于上一节提到的各种技术,包括MFC技术,C++语言,ADO数据库技术,如今也都发展到了成熟的阶段,对于开发人员来说,这些常见的技术资料也比较容易收集,因此开发宿舍管理系统是完全可行的。
(3) 经济可行性分析
经济可行性分析主要是开发新系统所投入的资金与系统投入使用后所带来的经济效益进行比较。本系统主要的经济投入是在软件的维护上,而使用的硬件环境要求很低,因此在硬件环境上所需投入很低。但在软件方面,C++运行环境以及Microsoft Office Access 2003数据库,在市面上的成本也是相当低廉,操作系统为Windows 98/Windows 2000/Windows XP/Windows7等,均可正常运行。
4
3.2 系统任务描述
巢湖学院管理系统要处理的是每栋楼内的学生信息,是利用信息化进行集中管理而开发的系统。旨在使宿舍管理人员更加方便,全面,快捷的管理宿舍。根据系统功能的要求,可以将其分为两个业务模块,分别是超级管理员和宿舍管理员。再根据不同的业务模块将系统分解成为几个功能模块来分别设计。
根据系统功能分析,有超级管理员流程页面和宿舍管理人员流程页面,共同实现系统的功能。首先分析超级管理员流程页面,由欢迎页面到登录页面后,如果登录成功,则进入相应的对话框,菜单项依次为宿舍管理人员信息管理,楼栋信息管理,院系以及专业信息管理,关于作者,退出系统;对于宿舍管理人员流程界面,由欢迎页面到登陆界面后,如果登陆成功,菜单项会有8个菜单项,依次为学生信息管理,宿舍信息管理,外来人员信息管理,奖罚信息管理,申请报修信息管理,高级查询,关于作者,退出系统。
3.3系统功能分析
3.3.1 系统的功能需求
在系统可行性分析和任务描述的基础上,更加了解本系统需要的功能,此后设计了本宿舍管理系统,本系统主要考虑到宿舍管理人员管理的普遍要求,本系统的功能主要包括:
(1)宿舍管理人员信息管理
本模块是在超级管理员登陆超级管理员界面后可以选择进入本模块下提供了对宿舍管理人员的管理功能,包括添加新的宿舍管理人员,删除不在职的宿舍管理人员,修改宿舍管理员的密码,以及查询所有的宿舍管理人员信息。
(2)宿舍楼信息管理模块
本模块是在超级管理员登陆超级管理员界面后可以选择进入本模块下提供了对楼栋信息的管理功能,包括添加新投入使用的楼栋信息(确定该楼栋居住学生的性别以及宿舍的类型,以及楼栋的名称等),删除不再使用的楼栋,修改楼栋信息(在宿舍楼栋整合时可以使用),查询楼栋的信息(楼栋名,管理人员名,空余房数等)
(3)院系以及专业信息管理
本模块是在超级管理员登陆超级管理员界面后可以选择进入本模块下提供了对院系以及专业信息管理,又分为两个子模块,分别是院系名称的添加,修改和删除;专业名称的添加,修改和删除。本模块主要为了满足在宿舍管理人员录
5
入学生信息时可以方便的选择而不是输入,也方便学校在整合院系和专业时及时更改学生的相关信息,而不用一个个修改学生信息,提高宿舍管理的效率。
(4)关于作者
本模块是在超级管理员登陆超级管理员界面后可以选择进入本模块查看本系统的作者以及版本信息,方便软件需要维护和更新时联系作者。
(5)退出系统
本模块是在超级管理员登陆超级管理员界面后可以选择进入本模块后可以点击此退出当前对话框。
(6)学生信息管理
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后对学生的信息进行管理,包括学生的入住(录入学基本信息和为学生分配宿舍),学生的搬迁(在学生换宿舍时比较方便),学生离校,学生基本信息的修改,以及查询学生信息。
(7)宿舍信息管理
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后对宿舍进行管理,包括添加宿舍长信息,修改宿舍长信息,查询宿舍长信息,查询某个宿舍的学生信息。
(8)外来人员信息管理
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后对日常外来人员进出楼栋进行管理,包括添加外来人员信息(时间由提交时定,宿舍管理人员无权修改),删除外来人员信息(可以方便一段时间集中处理无用的信息),查询外来人员信息。
(9)奖罚信息管理
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后对楼栋中的良好行为和不良行为进行奖罚的信息管理,便于营造一个崇良弃恶的生活氛围,主要包括录入奖罚信息(奖罚的对象可以选择学生或者宿舍),删除奖罚信息,查询奖罚信息。
(10)申请报修信息管理
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后对学生要求报修的事物信息进行管理,主要包括学生报修事物信息的录入,维修人员填写维修结果,删除已经维修好的报修信息, 查询报修信息。
6
(11)高级查询
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后选择多种方式查询学生信息和宿舍信息,主要包括按楼层查询学生信息,按系别查询学生信息,以及查询未满宿舍的信息。
(12)关于作者
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块查看本系统的作者以及版本信息,方便软件需要维护和更新时联系作者。
(13)退出系统
本模块是在宿舍管理员登陆宿舍管理员界面后可以选择进入本模块后可以点击此退出当前对话框。
3.3.2 系统数据流图
在对功能需求深入的理解上,分析本系统,概括本系统的数据流、加工处理、数据存储、源点和终点,进而描绘形成系统流程图[8]。入学:学生持录入通知书到学校报到,将处理形成入学清单。维修:宿舍管理人员根据学生提出的维修申请并处理形成生成维修单。外来人员进出:宿舍管理人员通过外来人员进出添加删除外来人员的信息。奖罚处理:奖罚事件处理后形成奖罚信息由宿舍管理人员录入数据库,管理员增修改:由超级管理员根据在职管理员信息及申请对宿舍管理员做出增删改操作。具体如图1:
7
在职信息与申请
在职信息与申请信息 学生 通知书 超级管理员 入学 入学单 处理信息 申 请 报 修 信息 报修信息 管理宿管人 申 请 处理结果 信息 宿舍管理员 奖罚信息清单 反馈结果 维 报 来访者清单 奖罚信息 修处理 修 与 清
单外来人员 反
进出 馈 奖罚信息 维修清单 来访者信息 奖罚事件
图1 系统数据流图
维修人员 外来人员 3.3.3 系统数据分析
在详细分析巢湖学院宿舍管理系统数据流程的基础上,总结概况出该系统所是使用的实体以及实体间的关系得到E—R图:
(1)实体包括:学生,超级管理员,宿舍管理员,外来人员,楼栋信息,宿舍信息,奖罚信息,报修信息,院系,专业
8
手机 家庭地亲属电话 学生 学号 姓名 性别 院系名 专业名
图2 学生实体图 超级管理员 用户名 密码
图3 超级管理员实体图
宿舍管理员 用户名 密码 管理楼栋管理学生性
图4 宿舍管理员实体图
姓名 身份证号 进出事由 外来人员 进出楼栋进出楼栋学生性图5 外来人员实体图
进出楼栋时
9
楼栋号 居住学生性楼层 宿舍楼 房间数/房间类已用房间数
图6 宿舍楼实体图
院系 院系名称
图7 院系实体图
楼栋号 居住学生性别 宿舍号 宿舍 宿舍类型 宿舍长学号 已用房间数
图8 宿舍实体图
10
楼栋号 居住学生性别 宿舍号 (宿舍/个人)奖罚信息 时间 事由 处理结果 奖励/惩罚
图9 奖罚实体图
专业 院系名 图10 专业实体图
专业名
报修楼栋报修楼栋学生性报修宿舍报修事物 报修时间 报修物 是否处理 报修人电
图11 报修事物实体图
11
(2)由上面的实体分析得到本系统的总体E-R图,如图所示:
n 学生 就读 1 专业 n 属于 外来人员 1 院系 m m 居住 1 进出 n 1 1 管理 宿管人员 发生 宿舍 1 m n 存在 申请 n n 管理 奖罚信息 1 n 报修信息 m 楼栋 超级管理人员
图12 巢湖学院宿舍管理系统总体E-R图
12
第4章 系统设计
4.1 系统总体结构设计
本系统会涉及到大量的学生信息,考虑到维护学生信息的安全,本系统在登陆时要求输入用户名和密码,如果是超级管理员不用选择管理的楼栋,而宿舍管理人员必须选择其工作的楼栋名,每个宿舍管理人员只能管理一栋楼。本系统的数据库采用Microsoft Office Access 2003,开发工具采用VC6.0,C++可以较好的实现与该数据库的建立与维护,且编程效率高,开发周期短,易于维护和扩充。其中分为超级管理员模块和宿舍管理人员模块。 超级管理员模块如下:
(1)通过“宿舍管理员信息管理”/“添加宿舍管理员”模块,添加宿舍管理员。 (2)通过“宿舍管理员信息管理”/“删除宿舍管理员”模块,删除宿舍管理员。 (3)通过“宿舍管理员信息管理”/“修改宿舍管理员”模块,修改宿舍管理人员登录密码或者管理的楼栋。
(4)通过“宿舍管理员信息管理”/“查询宿舍管理员”模块,查询宿舍管理人员的信息。
(5)通过“宿舍楼信息管理”/“添加宿舍楼信息”模块,添加新投入使用的宿舍楼的信息。
(6)通过“宿舍楼信息管理”/“删除宿舍楼信息”模块,删除不再使用的宿舍楼的信息。
(7)通过“宿舍楼信息管理”/“修改宿舍楼信息”模块,修改宿舍楼居住学的性别或者改变宿舍的类型。
(8)通过“宿舍楼信息管理”/“查询宿舍楼信息”模块,查询宿舍楼的信息。 (9)通过“院系及专业管理”/“院系增删”/“添加院系名称”模块,添加学校新设的院系名称。
(10)通过“院系及专业管理”/“院系增删”/“删除院系名称”模块,删除学校不再招生的院系名称。
(11)通过“院系及专业管理”/“院系增删”/“修改院系名称”模块,修改学校改变的院系名称。
(12)通过“院系及专业管理”/“专业增删”/“添加专业名称”模块,添加学校新增的专业名称。
(13)通过“院系及专业管理”/“专业增删”/“添加专业名称”模块,删除学
13
校不再招生的专业名称。
(14)通过“院系及专业管理”/“专业增删”/“修改专业名称”模块,修改学校修改的专业名称。
(15)通过“关于作者”模块,查看本系统作者以及软件版本信息。 (16)通过“退出系统”模块,退出当前对话框。 宿舍管理人员模块如下:
(1) 通过“学生信息管理”/“学生入住”模块,添加学生信息。
(2) 通过“学生信息管理”/“学生搬迁”模块,修改学生搬迁后的信息。 (3) 通过“学生信息管理”/“学生离校”模块,删除离校学生的信息。 (4) 通过“学生信息管理”/“学生基本信息修改” 模块,修改学的基本信息。 (5) 通过“学生信息管理”/“学生信息查询”模块,查询学生信息。 (6) 通过“宿舍信息管理”/“添加宿舍长”模块,为宿舍添加宿舍长信息。 (7) 通过“宿舍信息管理”/“修改宿舍长”模块,修改宿舍长信息。 (8) 通过“宿舍信息管理”/“查询宿舍长信息”模块,查询宿舍长信息。 (9) 通过“宿舍信息管理”/“查询宿舍学生信息”模块,查询宿舍学生信息。 (10)通过“外来人员管理”/“添加外来人员”模块,添加进出外来人员信息。 (11)通过“外来人员管理”/“删除外来人员”模块,删除进出外来人员信息。 (12)通过“外来人员管理”/“查询外来人员”模块,查询进出外来人员信息。 (13)通过“奖罚信息管理”/“录入奖罚信息”模块,添加奖罚信息。 (14)通过“奖罚信息管理”/“删除奖罚信息”模块,删除奖罚信息。 (15)通过“奖罚信息管理”/“查询奖罚信息”模块,查询奖罚信息。 (16)通过“申请报修信息管理”/“学生报修损坏物”模块,添加学生申报损坏物的信息。
(17)通过“申请报修信息管理”/“维修人员填写维修信息”模块,修改维修结果信息。
(18)通过“申请报修信息管理”/“删除报修信息”模块,删除申报损坏物的信息。
(19)通过“申请报修信息管理”/“查询报修损坏物”模块,查询学生申报损坏物的信息。
(20)通过“高级查询”/“按楼层查学生”模块,按楼层来查询学生信息。 (21)通过“高级查询”/“按系别查学生”模块,按系别来查询学生信息。
14
(22)通过“高级查询”/“查询未满宿舍”模块,查询未满信息。 (23)通过“关于作者”模块,查看本系统作者以及软件版本信息。 (24)通过“退出系统”模块,退出当前对话框。
在上面系统总体结构设计的基础上,分析得出本系统的的主要功能模块框架图如下:
巢湖学院宿舍管理系统 超级管理员登陆 宿舍管理员登陆 宿舍管理员信息管理宿舍楼信息管理院系及专业信息管理退出系统学生信息管理宿舍信息管理外来人员信息管理奖罚信息管理申请报修信息管理高级查询
4.2 系统数据库设计
数据库开发在软件开发过程中至关重要,因为目前几乎没有系统不使用数据库单独存在,而数据库设计就是要在用户给定的应用环境中,通过一系列的逻辑
15
图13 巢湖学院宿舍管理系统功能框架图
设计和物理设计,构造出恰当的数据库模式、子模式,建立数据库和设计应用程序结合开发,进而满足用户对信息的存储修改删除和查询等各种操作[3]。 下面将列出本系统主要使用的数据库表:
表1 本系统所用到的主要信息表及说明。
表名 dormManager student building dormitory dorm_student foreigner damagedStuffReport dormPunishmentAndReward
说明 宿舍管理员信息表 学生信息表 宿舍楼信息表 宿舍信息表 宿舍学生信息表 外来人员信息表 损坏物报修表 奖罚(宿舍)信息表 表2:管理员信息表,主要用来管理与管理员相关的数据。
主键:用户名(buildingNum,buildingSex,name)。
表2 宿舍管理员信息表
名称 name password buildingNum buildingSex
数据类型 varchar varchar varchar varchar 说明作用 用户名 密码 楼号 居住学生性别 是否为空 否 否 否 否 大小 50 20 20 20 表3:学生信息表,主要用来管理与学生相关的数据。
主键:学号(studentId)。
表3 学生信息管理表
名称 studentId deptName majorName 数据类型 varchar varchar varchar 16
说明作用 学号 院系名称 专业名称 是否为空 否 否 否 大小 20 50 50
studentName studentSex telephone relativePhone address varchar varchar varchar varchar varchar
学生姓名 性别 手机号码 亲属电话 家庭地址 否 否 是 是 否 50 20 15 15 50 表4:宿舍楼信息表,主要用来管理与楼栋相关的数据。
主键:(buildingNum,builingSex)。
表4 宿舍楼信息表
名称 buildingNum buildingSex floors dorms dormType usedDorm 数据类型 varchar varchar varchar varchar varchar varchar 作用 楼号 住学生性别 楼层 每层楼房间数 房间类型 已用房间数
是否为空 否 否 否 否 否 否 大小 20 20 20 20 20 20 表5:宿舍信息表,主要用来处理与宿舍相关的数据。 主键:(buildingNum,buildingSex,dormNum)。
表5 宿舍信息表
名称 buildingNum buildingSex dormNum dormType dormLeaderId usedBed 数据类型 varchar varchar varchar varchar varchar varchar 作用 楼号 住学生性别 宿舍号 宿舍类型 宿舍长学号 已用床铺 是否为空 否 否 否 否 否 否 大小 20 20 20 20 20 20 表6:宿舍学生表,主要宿舍和学生相关的数据。
主键(全部字段)。 表6 宿舍学生管理表
名称 数据类型 17
作用 是否为空 大小
buildingNum buildingSex dormNum studentId
varchar varchar varchar varchar 楼号 住学生性别 宿舍号 学号 否 否 否 否 20 20 20 20 表7:外来人员信息表,主要处理外来人员进出相关的数据。 主键(buildingNum,buildingSex,name,personalId,time,reason)。
表7外来人员信息表
名称 buildingNum buildingSex name personalId time reason 数据类型 varchar varchar varchar varchar varchar varchar
作用 楼号 住学生性别 姓名 身份证号 时间 来访事由 是否为空 否 否 否 否 否 否 大小 20 20 50 20 20 50 表8:损坏物报修表,主要处理报修相关的数据。 主键(buildingNum,buildingSex,dormNum,time)。
表8损坏物报修表
名称 buildingNum buildingSex dormNum time stuff isService telephone 数据类型 varchar varchar varchar varchar varchar varchar varchar 作用 楼号 住学生性别 宿舍号 时间 报修事物 是否维修 报修人电话 是否为空 否 否 否 否 否 否 否 大小 20 20 20 20 50 20 15 表9:奖罚(宿舍)信息表。
主键(buildingNum,buildingSex,dormNum,time)。
表9 公共设施管理表
名称 数据类型 18
作用 是否为空 大小
buildingNum buildingSex dormNum time reason result kind varchar varchar varchar varchar varchar varchar varchar 楼号 住学生性别 宿舍号 时间 来访事由 奖罚方式 奖励还是处罚 否 否 否 否 否 否 否 20 20 20 20 50 50 20
以下为本系统数据库中主要的五个表之间的关系图:
图14 数据库关系图
4.3系统部分功能模块设计
4.3.1超级管理员登录模块
下面对超级管理员程序流程图做简要叙述。首先,超级管理员在登录界面中输入用户名和密码,并登录。系统获取用户输入的信息后查询数据库相应的表,如果在该表中存有相同记录,则跳到超级管理员操作界面;如果在数据库中没有相同的记录,则系统提示错误,并返回开始的登录界面并会清除之前输入的数据。如图15所示:
19
开始 输入用户名与密码 访问数据库 否 是否有该条记录? 是 进入超级管理员操作界面 提示用户名或密码错误
结束 图15 超级管理员登录模块流程图
4.3.2 添加学生信息模块
下面对添加学生模块做简要描述。当宿舍管理管理员成功登录到主功能界面后,可以进行添加学生信息,如果该学生已存在则提示管理员,如果没有则录入。
结束 图16 添加学生模块流程图
是 录入 是否已存在? 登录成功? 是 添加学生 否 提示错误 否 提示错误 开始
20
第5章 功能实现
5.1 系统主要模块界面
5.1.1 用户登陆界面及其主功能界面
输入超级管理员的用户名和相应的密码。系统会根据用户名与密码判断本次登陆是否合法,即系统将自动从数据库中的相应信息表中判断是否存在该用户的记录。如果匹配则进入系统,如果不匹配,则提示管理员不存在或密码有误。超级管理员登陆界面如下:
图17 用户登录界面
如果是超级管理员,则成功登陆后的界面如下:
图18 超级管理员管理界面
管理员登陆模块主要代码如下: void CDmsDlg::OnLoad() {
if(m_password==\"\"||m_userName==\"\") { } else {
//标示用户名和密码是否一致 bool isLoad=false;
//登陆有两种情况,一种是宿舍管理员,另一种是超级管理员. if(m_dormManager==0) {
//用于获取从组合框的楼名中提取楼号和管理宿舍的学生性别,一定
AfxMessageBox(\"用户名或密码不能为空!请正确输入!\");
21
要注意汉字占两个字节,2个char 型。
char strBuildingSex[3],strBuildingNum[2]; //保存用户选取的楼名 CString strBuildingName;
//组合框函数,用于获取用户选择的内容 strBuildingNum[0]=strBuildingName.GetAt(4);
strBuildingNum[1]='\\0';//不加结束符,用CString强转类型时会出错! strBuildingSex[0]=strBuildingName.GetAt(0); strBuildingSex[1]=strBuildingName.GetAt(1); strBuildingSex[2]='\\0'; //暂存从数据库中取得的数据 CString strNum,strSex; while(!m_pRecordset1->rsEOF) {
if(strNum==(CString)strBuildingNum&&strSex==(CString)strBuildingSex&&strName==m_userName&&strPassword==m_password)
} else {
while(!m_pRecordset->rsEOF) { }
{ }
m_pRecordset1->MoveNext();
//登陆成功,跳转界面(既对话框) //宿舍管理员登陆后的主界面
CDormManagerMainDialog m_dormManagerMainDialog; m_dormManagerMainDialog.DoModal(); isLoad=true; break;
22
}
}
if(strName==m_userName&&strPassword==m_password) { }
m_pRecordset->MoveNext();
//超级管理员登陆后的主界面
CSuperManagerMainDialog m_superManagerMainDialog; m_superManagerMainDialog.DoModal(); isLoad=true; break;
if(!isLoad) //登陆失败 {
AfxMessageBox(\"用户名或密码不正确!\");
} }
(1)宿舍管理员信息管理
超级管理员登陆后再其管理界面上,选择宿舍管理员信息管理模块。进入该模块后,分为四个子板块:添加宿舍管理员,删除宿舍管理员,修改宿舍管理员,查询宿舍管理员。添加宿舍管理员的界面如下图:
}
23
图19 添加宿舍管理员功能界面
添加宿舍管理员功能代码如下:
void CAddDormManagerDialog::OnAddDormManager() {
UpdateData(true);
if(m_dormManagerName==\"\"||m_buildingNum==-1||m_password==\"\"||m_passwordAgain==\"\") { MessageBox(\"所有信息要全部输入!请正确输入!\警告\" ,MB_ICONEXCLAMATION|MB_OK); }
else if(m_password!=m_passwordAgain) { MessageBox(\"输入的两次密码不同!请核对后输入!\警告\" ,MB_ICONEXCLAMATION|MB_OK); } else { CString strName; //用于标记该宿舍管理员是否存在 bool isDormManager=false; //打开数据库中的dormManager表 m_pRecordset->Open(_bstr_t(\"SELECT * FROM dormManager\"),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); while(!m_pRecordset->rsEOF) {
24
strName=(char *)(_bstr_t)(m_pRecordset->GetCollect(\"name\")); if(strName==m_dormManagerName) { isDormManager=true; break; } m_pRecordset->MoveNext(); } if(isDormManager) { MessageBox(\"该宿舍管理员已存在,请核实!\警告\" ,MB_ICONEXCLAMATION|MB_OK); } else { //用于获取从组合框的楼名中提取楼号和管理宿舍的学生性别,一定要注意汉字占两个字节,2个char 型。 char strBuildingSex[3],strBuildingNum[2]; //保存用户选取的楼名 CString strBuildingName; //组合框函数,用于获取用户选择的内容
((CComboBox*)GetDlgItem(IDC_BuildingNum))->GetLBText(m_buildingNum,strBuildingName); strBuildingNum[0]=strBuildingName.GetAt(4); strBuildingNum[1]='\\0';//不加结束符,用CString强转类型时会出错! strBuildingSex[0]=strBuildingName.GetAt(0); strBuildingSex[1]=strBuildingName.GetAt(1); strBuildingSex[2]='\\0'; //管理员数据不存在,可以向数据库中添加记录,注意使用AddNew()后要用Update()提交数据,两者需一起使用。 m_pRecordset->AddNew(); ........ m_pRecordset->Update(); MessageBox(\"成功添加宿舍管理员!\提示\" ,MB_ICONINFORMATION |MB_OK); } } ( 2 )楼栋信息管理
超级管理员登陆后再其管理界面上,选择楼栋信息管理模块。进入该模块后又分为四个子模块,分别是添加宿舍楼,删除宿舍楼,修改宿舍楼,和查询宿舍楼信息,其中添加宿舍楼信息功能如下图所示:
25
图20 添加宿舍楼功能界面
5.1.2 宿舍管理员登录界面及其主功能界面
输入超级管理员的用户名和相应的密码。系统会根据用户名与密码判断本次登陆是否合法,即系统将自动从数据库中的相应信息表中判断是否存在该用户的记录。如果匹配则进入系统,如果不匹配,则提示管理员不存在或密码有误。宿舍管理员登陆界面如下:
图21 宿舍管理员登录界面
如果是宿舍管理员,则成功登陆后的界面如下:
图22 宿舍管理员主界面
( 1 )学生信息管理
宿舍管理员成功进入主功能的界面后可选择学生信息管理模块对学生信息进行管理,而本模块又包含五个模块,分别是学生入住,学生搬迁,学生离校,学生基本信息修改和学生,其中学生入住的界面如下图。
26
图23 学生入住界面
( 2 )奖罚信息管理
宿舍管理员成功登陆后可以选择奖罚信息管理对本栋楼宿舍或者学生进行奖罚信息的录入,删除和查询。其中奖罚信息的录入功能图如下:
图24 录入奖罚信息功能界面
27
( 3 )申请报修信息管理
宿舍管理员成功登陆后可以选择申请报修信息管理对本栋楼报修信息的录入,反馈结果,删除和查询。其中申请报修信息的录入功能图如下:
图25 录入报修信息功能界面
5.2 系统测试
软件系统测试是为了更好地完成项目功能,也是为了发现错误而执行程序的过程。从根本上说测试时为了查找错误,但还要分析错误产生的原因,通过分析发现的软件缺陷来提高软件的生命力。同时,测试可以帮助开发人员认识设计结构、改善系统方法,提高测试效率[10]。
本项目中,系统测试阶段需针对每一个模块设计测试数据,测试功能是否满足软件需求,测试采用黑盒测试和白盒测试,各模块测试直到没有出错时,在系统开发结束后再对整个系统集成测试,测试整个系统的功能是否符合要求。
5.2.1 本系统测试的步骤
(1) 每个功能模块完成后要编译运行,及时修改语法错误;
(2) 语法错误修正后,进行黑盒测试,设计测试数据,测试功能模块能否实现预期的功能;
(3) 各模块完成测试后,设计正对所有模块联合测试数据,测试系统整体是否协调,各功能运行时数据是否同步;
(4)系统整体测试后将软件移至其他不同型号的电脑,检测系统对环境的
28
要求。
5.2.2 本系统测试的部分内容 (1)测试输入不同的登陆口令
不输入用户名或密码时,弹出的界面如下:
图26 输入信息为空登陆时弹出的界面
本部分测试代码如下:
if(m_password==\"\"||m_userName==\"\") { }
输入不正确用户名或密码时,弹出的界面如下:
AfxMessageBox(\"用户名或密码不能为空!请正确输入!\");
(2) 测试信息重复添加时,弹出的界面如下:
图27 用户名或者密码不正确时弹出的界面
图28 重复添加学生信息
(3)测试不能完成(宿舍整体)搬迁时,弹出的界面如下:
29
图29 目标宿舍容量不足时界面
本部分测试代码如下: //容量不够,不能搬迁 if(isMove==false) {
CString strAvailableBed;
strAvailableBed.Format(\"%d\
MessageBox(\"您要迁出的宿舍有 \"+strOldUsedBed+\"个学生\"+\但要迁入的宿舍只有 \"+strAvailableBed+\" 个床位!,请重新选择要迁入的宿舍\提示\|MB_OK);
(4)测试输入的学号不在本次登陆的宿舍管理员的管理范围时,弹出的界面如下:
图30 学生不在管理范围内时界面
(5)测试添加奖罚信息的日期错误时,弹出的提示界面如下:
图31 日期超过本日时界面
本部分测试代码如下: //获取用户选择 CString occurTime,occurYear,occurMonth,occurDay,strKind;
30
((CComboBox*)GetDlgItem(IDC_OccurYear))->GetLBText(m_occurYear,occurYear); ((CComboBox*)GetDlgItem(IDC_OccurMonth))->GetLBText(m_occurMonth,occurMonth); ((CComboBox*)GetDlgItem(IDC_OccurDay))->GetLBText(m_occurDay,occurDay); occurTime=occurYear+occurMonth+occurDay; if(atoi(occurTime)>atoi(m_loadDate)) { MessageBox(\"终止日期不能在今日之后,选择错误\提示\" ,MB_ICONINFORMATION |MB_OK); }
31
参考文献
[1] 朱雪燕,周晓玉.Access 实用教程[M].北京:人民邮电出版社,2004. [2] Stanley B.Lippman.C++ Primer[M].北京:人民邮电出版社,2006. [3] 王珊,萨师煊.数据库系统概论(第四版)[M].北京:高等教育出版社,2000.
[4] Bjarne Stroustrup .The C++ Programming Language[M].北京:机械工业出版社,2002. [5] Jeffrey Richter.Windows核心编程[M].北京:清华大学出版社,2008. [6] 梁灿,赵艳铎.Access 数据库应用基础教程[M].北京:清华大学出版社,2005. [7] 侯俊杰.深入浅出MFC[M].武汉:华中科技大学出版社,2001. [8]张海藩.软件工程导论[M].北京:清华大学出版社,2008. [9]谭浩强.C程序设计[M].北京:清华大学出版社,2005. [10]佟伟光.软件测试[M].北京:人民邮电出版社,2008.
32
33
因篇幅问题不能全部显示,请点此查看更多更全内容