系统开发|C#-学生公寓管理系统的实现

引言 随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。传统的学生公寓管理倾向于人工现场登记,资料多为纸质形式,不便于管理和查看。宿舍管理员管理的对象多且复杂,学生公寓管理系统的开发,能使其管理的各种数据资源得到良好的继承和共享,减轻宿舍管理员的工作量,进一步推动宿舍管理便捷式的发展。在与传统的管理模式对比,不仅节约人力物力,还节省纸张保护环境,同时也促进了宿舍管理员的事务管理信息化发展。
1 业务概述
传统的学生宿舍管理采用人工登记的方式,这种方式在数据复杂的情况下不利于资料的管理与查看,容易造成资料丢失、出错等情况。因此本次课程设计针对这个问题开发出一套基于C#的学生宿舍管理系统。系统的用户有两类:管理员和学生。学生如果需要在校住宿,管理员可以登录系统为该学生填写住宿登记表,系统的宿舍分配程序首先会校验学生的信息,然后管理员可以选择为学生手动分配宿舍,也可以让宿舍分配程序为该学生自动分配宿舍,最后程序会将分配信息写入数据库。管理员还可以为学生缴纳电费和宿舍维修登记,学生则可以查看电费信息和维修结果。管理员能对学生基本信息、公寓基本信息添加、删除、修改和查询,学生只能查看自己的宿舍分配信息和个人基本信息。
2可行性研究 可行性研究的目的在于研究当前要开发的软件在现有的技术层面能不能开发得出来,此前所定义的问题能不能够得到解决,以及系统开发出来后能不能为使用此系统的机构带来便利?这就需要对此学生宿舍管理系统进行一次粗略的系统分析和设计。在对此宿舍管理系统更加细致地定义问题后可以采用系统的多层数据流图来描述系统中的主要数据从输入到输出所经过的变换的逻辑过程,同时还可以利用数据字典来介绍开发设计过程中所使用到的各种数据。
2.1 系统粗略分析
本系统的数据源点是管理员,管理员提供学生的信息和公寓宿舍的信息,进行宿舍分配、电费缴纳和物品维修登记。本次开发的系统的数据终点是查看系统信息的学生。学生宿舍管理系统主要有“学生基本信息管理”,“宿舍基本信息管理”,“学生缴费子系统”和“学生维修子系统”,“用户管理”等子系统。对于此系统的数据库,学生基本信息,宿舍基本信息,宿舍分配记录,学生缴费日志,学生报修记录是必不可少的。为了增强系统的安全性,另外增加了用户表来判别当前登录的用户的类型能不能使用系统的某些功能。
学生基本信息管理子系统的主要功能是实现宿舍管理人员对学生的基本信息进行正确的输入、查询、修改和删除。学生也可以通过该子系统查看自身信息。在学生入校时,管理员会将学生数据导入到管理系统的数据库中。学生毕业离校后,系统则会自动将学生数据从数据库中删除。
宿舍基本信息管理子系统的主要功能是实现宿舍管理人员对宿舍基本信息的添加、删除、修改、查询和宿舍的手工分配。该子系统可以在学生提出住宿申请后自动为学生分配合适的宿舍。如果学生不满意当前宿舍需要调换寝室,可以联系管理员进行宿舍的重新手动分配。子系统在学生退宿后可以自动将学生分配记录从数据库中删除,保证数据的正确性。
学生缴费子系统则是为学生进行宿舍电费的缴纳而设计的。学生在入住宿舍后,管理员可以使用该系统为学生进行宿舍水电费的查询和缴纳。该子系统在检测到学生缴纳费用成功后才会修改缴费项目的相关基本信息,并向学生打印缴费电子单据。
学生维修子系统为学生提供寝室公共物品的报修服务的。维修子系统在管理员完成宿舍维修登记后会向后勤维修人员显示需要维修信息,后勤维修人员会进行上门维修。维修完成后,会向学生显示维修状态。
用户管理子系统主要用来实现系统用户登录时身份验证,系统用户的注册和删除,超级管理员在查看系统数据库的这些数据的同时,可以对这些数据进行增加、删除、修改操作并保存到数据库。
2.2 系统数据流图
系统的数据流图是在软件开发过程中分析和设计的有效的图示工具,也是交流信息的工具,也是系统逻辑功能的图形表示。在重新分析了系统的构造和需要完成的功能后,得到了患者监护系统的基本系统模型,即系统的顶层数据流图和系统功能级数据流图。
**
2.3 系统可行性*

在可行性研究阶段需要探究之前所提出的对于问题的解法的可行性,下面就技术、经济、操作、法律四个方面探究此患者监护系统的可行性。
  1. 技术可行性
    首先以当前的技术我们可以利用Microsoft visual studio 2019来开发此学生公寓管理系统。此系统的正常运行需要使用Windows 7以上的Windows系列的操作系统,数据库服务器端可以使用 Microsoft SQL Server 2019,两种开发软件结合使用可以在一个月的时间内开发出原先所要求的软件。
  2. 经济可行性
    在经济可行性方面,如果采用软件开发生命周期的步骤来开发此软件,则所需要人工成本费和软硬件成本费以及日后的升级维护费用之和大概在10万元之内。虽然对学校来说这是一笔不小的开支,但如果软件开发的很符合学校的需求,很有前瞻性,则之后的维护及升级工作不会太多,不会耗费太多人力来维护此系统。这个系统减轻学校在公寓管理上的经济支出,使得原本需要大量人员的公寓管理工作减少到仅由一两个人就可以简单的通过电脑上的操作完成。从长远的经济角度来看,无疑减少了学校的经费支出。此外,所有的操作都几乎在电脑上可以完成,无纸化使得纸张等物资的消耗大大减轻,保护环境的同时也让学校的经济支出减少了。
  3. 操作可行性
    操作可行性是指系统对于使用者来说是否易于操作。此系统的操作可行性也是很强的。此系统具有通俗易懂,非常友好的人机交互界面,即使没有专业计算机知识也可以在几天的时间之内学会熟练操作此系统。学生公寓引进学生公寓管理系统后,可以组织对使用此系统的公寓管理员及相关工作人员进行培训,在经过专业的培训之后,相信公寓管理员和工作人员可以完全掌握此系统各功能的用法。
  4. 法律可行性
    系统的法律可行性主要是说开发出的系统是否存在侵权的隐患,是否学生公寓正常工作的进行,是否对使用此软件的用户和机构带来各种危害。在分析系统开发方和系统使用者之间的合约关系,我发现这个系统是不存在法律隐患的,因为此系统是系统开发方自己完成,不存在抄袭他方的问题,所以不存在任何侵权行为及对任何机构或个人产生伤害的威胁。
    在完成了对此次开发的系统从技术、经济、操作、法律四个方面的可行性研究之后,得出此系统是绝对可行的,完全可以通过努力开发出此款学生公寓管理系统。
3 需求分析 需求分析阶段是软件生命周期中软件定义的最后的工作阶段,其最主要的工作就是思考为了解决之前定义的问题,需要开发的系统该完成什么工作?在需求分析阶段,软件开发人员需要对系统作出完整的需求方面的文字和图示描述。
3.1 系统综合要求
1.功能需求
学生公寓管理系统首先要实现的就是管理学生的信息和公寓的信息,能对这些信息进行添加、删除、修改和查询。在此基础上,系统要能对申请住宿的学生按照学生的信息进行合理的宿舍分配,包括系统的自动分配宿舍和管理员的手动分配宿舍。最后,系统要能实时的接受用电信息和宿舍报修信息,实现宿舍电费管理功能和报修功能。
2.性能需求
此系统需要满足的性能需求主要有:系统对事务的响应时间平均为0.3秒,最长不超过1秒;系统的吞吐量为每秒处理5个事务;系统需要对使用系统的用户进行分组,并使他们具有相应的权限。
3.可靠性和可用性
系统的可靠性需求是指系统在三个月内不可以发生一次以上的故障,可用性需求是指系统不可用的时间总和最多不能超过系统使用总时间的2%。
4.接口需求
学生公寓管理系统要求医院使用此系统的计算机必须要有网卡,可以满足计算机的本地连接。
5.约束
学生公寓管理系统需要运行在Windows 7以上的Windows系列操作系统之上。本系统在个主机之间通信所要用到的网络连接基于计算机网络中的TCP/IP协议。
3.2 系统数据要求
对于此次开发的学生公寓管理系统,对于系统中的各种数据的管理占据着整个系统工作的绝大部分,所以系统的数据需求也是软件开发的重点。在经过之前所完成的一系列工作之后,对学生公寓管理系统的数据要求已经有了准确的认识。
首先,需要表格记录系统用户的信息,包括管理员的信息和学生的信息,接着还需要记录公寓的信息,即公寓楼信息和公寓信息。因为系统需要对申请住宿的学生进行宿舍的分配,所以需要表格记录学生的宿舍分配信息。当学生缴纳电费时,系统需要记录学生的缴费信息,同时还需要更新该学生所住宿舍的电费情况,所以公寓缴费管理表和公寓电费管理表也必不可少。此外,当学生报修宿舍物品时,系统还需要一张表格记录报修登记信息,方便后续维修工作的开展。下面是对于这几种数据表格的具体描述。
公寓管理员信息表:管理员ID+密码+姓名+性别+联系方式+职务+管理员级别(主键是管理员ID)
学生信息表:学号+姓名+性别+学院+专业+班级+民族+出生日期+家庭住址+联系方式+是否住宿+登录密码(主键是学号)
公寓楼信息表:公寓楼号+公寓楼名+公寓位置+公寓类别+楼层数+宿舍数量+管理员ID+启用时间(主键是公寓楼号,外键是管理员ID)
公寓信息表:公寓号+公寓楼号+床位数量+住宿费用+是否住宿(主键是公寓号,外键是公寓楼号)
公寓分配表:分配ID+公寓楼号+公寓号+学号+分配日期+是否为寝室长(主键是分配ID,外键是公寓楼号、公寓号、学号)
公寓缴费管理表:缴费ID+公寓楼号+公寓号+缴费人ID+缴费金额+缴费日期(主键是缴费ID,外键是公寓楼号、公寓号、缴费人ID)
公寓电费管理表:缴费ID+公寓楼号+公寓号+上月结转+本月用电+单价+本月余额+电费日期(主键是缴费ID,外键是公寓楼号、公寓号)
公寓维修管理表:维修ID+公寓楼号+公寓号+维修项目+状态(主键是维修ID,外键是公寓楼号、公寓号)
通过前面对各表的定义可得到实体-联系图(E-R图),实体-联系图内含有各数据对象,数据对象的属性和数据对象之间的联系。运用实体-联系图来建立数据模型接近人们的思维习惯,能有效地表示出系统中的数据对象和各数据对象之间的联系。
3.3 系统数据流图
在完成需求分析阶段所确定的系统综合要求及系统的数据要求之后,系统已经有了很详细的模型。在可行性研究阶段已经粗略的分析出系统的顶层和功能级数据流图以及数据字典的定义,而这些数据和图都基本满足需求分析阶段对系统的需求进行分析的结果。需求分析阶段,在之前的所得出的系统各层数据流的基础上对各模块的数据流图进行具体的细化。得出系统的各层数据流图。
4 总体设计 4.1 软件结构
在系统的软件结构设计这个工作过程中,由于此系统实际是一个数据管理系统,所以在进行设计的时候我用到了面向数据流这样的方法,利用这种方法可以方便的把足够细化的系统数据流图转化为软件结构。在对系统各模块细化的数据流图分析可知,在数据流图的开始部分可看成事务流类型,在对系统的进行第一级分解后得到如图4.1软件结构。由管理员宏观调用下方的五个子系统,子系统分别实现之前所设计的系统功能。
用户管理子系统的数据流图可当做事务型处理,主要分为对普通管理员信息的管理和学生信息的管理,都包括对用户信息的注册、删除、修改以及用户登录这四个子模块,结构如图4.2。公寓基本信息管理子系统的数据流图可看成事务型,子系统包括信息输入、信息删除、信息查询、信息修改四个子模块,结构如图4.3。宿舍分配子系统的数据流图可看做是变换型,管理员先输入学生的住宿申请信息,然后系统会对申请信息进行审核并查询符合条件的宿舍,再将该宿舍分配给该学生,最后输出宿舍分配结果,设计结构图如图4.4。电费缴纳子系统的数据流图同样也可看成是变换型的,用户缴费后,系统采集用户的缴费信息,然后系统自动对宿舍的电费进行计算,最后将电费清单输出给用户,分解的结果如图4.5。宿舍维修子系统可当做是事务型的,主要包括宿舍保修登记和宿舍保修结果查询,分解的结果如图4.6。
图4.6 寝室维修子系统结构
通过对系统进行第一级分解和第二级分解后,系统的软件结构已基本清晰,在对分解结果进行整理后得到系统的软件结构图如图4.7。
图4.7 学生公寓管理系统软件结构
4.2 数据库设计
此学生公寓管理系统的内部数据库并不复杂,在仔细的考虑公寓管理员信息表、学生信息表、公寓楼房信息表、公寓信息表、公寓分配表、公寓缴费信息表、公寓电费管理表、公寓维修管理表之间的关系之后,得到学生公寓管理系统数据库模型。见图4.8。
此系统数据库主要由患公寓管理员信息表、学生信息表、公寓楼房信息表、公寓信息表、公寓分配表、公寓缴费信息表、公寓电费管理表、公寓维修管理表八个表组成,表与表之间有外键参照关系。下面通过八个表格的具体定义和表格间的关系图来进行系统的数据库设计。
图4.8 学生公寓管理系统内部的数据库模型图
表4.1 学生信息表(表名:学生信息表)
用途 记录学生的基本信息
字段名 类型 长度 键 中文名 备注
学号 char 12 主键 学号
姓名 nvarchar 20 姓名
性别 nvarchar 1 性别 默认为男,且只能为男、女
学院 nvarchar 20 学院
专业 nvarchar 20 专业
班级 nvarchar 20 班级
民族 nvarchar 20 民族
出生日期 smalldatetime 出生日期
家庭住址 nvarchar 20 家庭住址
联系方式 char 20 联系方式
是否住宿 Bit 20 是否住宿 1:住宿
0:不住宿
登录密码 Char 10 登录密码
相关表 公寓分配表,公寓缴费管理表
表4.2 公寓管理员信息表(表名: 公寓管理员信息表)
用途 记录公寓管理员的基本信息
字段名 类型 长度 键 中文名 备注
管理员ID char 12 主键 管理员ID
密码 char 10 密码
姓名 nvarchar 20 姓名
性别 nvarchar 1 性别 默认为男,且只能为男、女
联系方式 char 20 联系方式
管理员级别 nvarchar 10 联系人
相关表 公寓缴费管理表,公寓楼房信息表
表4.3 公寓楼房信息表(表名: 公寓楼房信息表)
用途 记录公寓楼房的基本信息
字段名 类型 长度 键 中文名 备注
公寓楼号 char 12 主键 公寓楼号
公寓楼名 nvarchar 20 公寓楼名
公寓位置 nvarchar 20 公寓位置
公寓类别 nvarchar 10 公寓类别 男生、女生
楼层数 int 楼层数 默认为0
宿舍数量 Int 宿舍数量 默认为0
管理员ID char 12 外键 管理员ID
启用时间 smalldatetime 启用时间 默认为系统时间
相关表 公寓管理员信息表,公寓分配表,公寓维修管理表,公寓缴费管理表
表4.4 公寓信息表(表名: 公寓信息表)
用途 记录公寓的基本信息
字段名 类型 长度 键 中文名 备注
公寓号 char 12 主键 客户编号
公寓楼号 char 12 外键 公寓楼号
床位数量 int 床位数量 默认为0
指该寝室还剩余未被分配的床位数量
住宿费用 money 住宿费用 默认为0
是否住满 bit 是否住满 0:未住满
1:住满
相关表 公寓分配表,公寓维修管理表,公寓缴费管理表,公寓楼房信息表
表4.5 公寓分配表(表名: 公寓分配表)
用途 记录公寓分配记录
字段名 类型 长度 键 中文名 备注
分配ID int 主键 分配ID 自动编号
公寓楼号 char 12 外键 公寓楼号
公寓号 char 12 外键 客户编号
学号 char 12 外键 学号
分配日期 smalldatetime 分配日期 默认为系统时间
是否为寝室长 bit 是否为寝室长 0:否
1:是
相关表 学生信息表,公寓楼房信息表,公寓信息表,公寓管理员信息表
表4.6 公寓缴费管理表(表名: 公寓缴费管理表)
用途 记录公寓缴费记录
字段名 类型 长度 键 中文名 备注
缴费ID int 主键 缴费ID 自动编号
公寓楼号 char 12 外键 公寓楼号
公寓号 char 12 外键 客户编号
缴费人ID char 12 外键 缴费人ID
缴费金额 int 缴费金额
缴费日期 smalldatetime 缴费日期 默认为系统时间
状态 bit 状态 0:缴费失败
1:缴费成功
相关表 学生信息表,公寓楼房信息表,公寓信息表,
表4.7 公寓电费管理表(表名: 公寓电费管理表)
用途 记录公寓缴费记录
字段名 类型 长度 键 中文名 备注
缴费ID int 主键 缴费ID 自动编号
公寓楼号 char 12 外键 公寓楼号
公寓号 char 12 外键 公寓号
上月结转 Int 12 上月结转 上月电费结转
本月用电 int 本月用电 本月用电度数
单价 decimal 整数长度为1,
小数长度为1
decimal(1,1) 单价
本月余额 int 本月余额 本月剩余电费
电费日期 smalldatetime
相关表 公寓楼房信息表,公寓信息表,
表4.8 公寓维修管理表(表名: 公寓维修管理表)
用途 记录公寓维修记录
字段名 类型 长度 键 中文名 备注
维修ID int 主键 自动编号
公寓号 char 12 外键 客户编号
公寓楼号 char 12 外键 公寓楼号
状态 bit 状态 0:维修未完成
1:维修完成
相关表 公寓楼房信息表,公寓信息表
4.3 系统安全
考虑到使用此系统的用户使用学生公寓管理系统的权限有所不同,所以在设计此系统时,把系统的用户分为三种,分别是:超级管理员、普通管理员、学生。普通管理员登录后可以进行学生信息查询、公寓基本信息管理、电费缴纳和维修登记。超级管理员登录之后,只能对学生的信息和普通管理员的信息进行操作。学生登录系统后,能查看到自己的个人信息,还可以进行寝室电费查询和报修查询。
为了保证数据的一致性,该系统在设计数据库时还为数据库中的表添加触发器,避免了数据在用户操作过程中发生错误。
通过以上的设计可以约束系统用户只能使用自己权限所对应的功能,不会造成系统的数据库被滥用。
5 详细设计 详细设计阶段需要做的是过程设计,过程设计就是实现之前所定义的每个模块的功能。对于学生公寓管理系统来说,此阶段需要设计出系统中每个小模块所使用的算法,虽然详细设计阶段还不需要编码实现,但此阶段设计出的程序蓝图会直接影响下阶段的编码实现。详细设计阶段设计出的系统各模块的处理应容易理解、容易测试、容易维护,还要确保准确无误,这样在实现阶段编写出的源程序才能容易理解并能够正确的运行。
5.1 IPO图
使用IPO图可以正确,清晰地描绘出系统各模块所输入的数据,以及对数据的处理过程和模块输出数据三者的关系。在分析此系统的重要数据的输入,处理和输出之后,得到以下五张主要IPO图。
5.2 系统过程设计
在软件详细设计阶段,系统的处理过程设计占据重要地位,简明易懂的处理过程有助于下阶段的工作顺利完成,还有利于软件开发人员的交流。在本次软件开发的详细设计中,使用修正的结构程序设计技术来实现系统功能需求。下面通过程序流程图、盒图来描述学生公寓管理系统一些重要的处理过程。
6 系统使用说明 经过软件开发的实现阶段即编码和测试。系统顺利开发出来。考虑到系统的要求、工程规模以及软件的可移植性需求,此学生公寓管理系统使用C#编写。在源代码编写过程中尽量做到程序源代码简洁明了,层次清晰,并附加重要的注释来增强程序源代码的可读性。在进行编码的同时,需要配合必要的测试工作,来检测源代码正确与否。在编写代码过程中主要使用模块测试和子系统测试,系统测试和验收测试则是针对已经开发好的系统进行全面的审查测试。下面具体介绍学生公寓管理系统各模块功能的实现情况和使用说明。
6.1 用户登录
用户登录页面用来检测尝试登录系统的用户登录名和密码是否一致,在用户不合法的情况下,系统则会弹出提示消息框“用户ID或密码错误!”。如果经过查询用户表得知用户合法则转到该用户相应身份的主页面。系统登陆页面如图6.1。
6.2 系统主页面
此学生公寓管理系统的主页面作为系统其他窗体的父窗体。在用户进入系统之后,系统将会从数据库中读出用户的权限具体值,并根据用户的权限显示主页面上方的菜单栏和左方的菜单。同时在主页面下方的状态栏或左上角会显示当前登录用户的用户名。系统主页面设计结果见图6.2。
6.2 用户管理子系统
超级管理员使用用户管理子系统可以实现系统用户信息的添加、修改和删除,还可以修改系统用户的登录账户ID和密码,实现用户登录验证。用户的信息以表格的形式呈现,方便超级管理员的查询。如图6,5、图6.6
普通管理员使用用户管理子系统只可以查询学生的基本信息,方便普通管理员公寓工作的进行。如图6.7
图6.7 普通管理员对学生信息的查询
6.3 公寓基本信息管理
该子系统实现的是普通管理员对公寓基本信息的操作,包括公寓楼信息和公寓信息添加、删除、修改和查询。用户点击公寓信息设置即可使用这些功能。
6.4 宿舍分配
这个模块实现的是普通管理员对学生住宿的分配,包含自动分配和手动分配。管理员选择为学生自动分配宿舍,系统会自动为学生随机分配一间宿舍。而如果管理员选择手动分配,那么系统先会按照学生的要求查询符合条件的宿舍,如果成功查询到相关信息,那么会提示管理员又符合条件的宿舍可以分配给该学生,否则报告没有符合条件的宿舍,需要自动分配。
图6.12 自动/手动分配宿舍
6.5 电费管理
该功能可以实现普通管理员帮助学生进行宿舍电费的缴纳,系统接收到学生的缴费信息后,会结合最新的电费信息进行电费的计算,并将电费缴纳信息写入数据库中。学生可以在自己的主页面内查询到宿舍电费清单。
【系统开发|C#-学生公寓管理系统的实现】6.6 公寓维修
该模块实现的是当学生宿舍物品出现故障需要维修时,可以在普通管理员处进行报修登记,登记完成后系统会通知学校后勤部门的维修工人进行公寓故障的检修,检修完成后会更新报修登记信息,将报修状态置为已完成,学生可以在自己的主页面内查询报修信息。

    推荐阅读