1.学生宿舍管理系统
学生宿舍是同学最为熟悉的领域,假定学校有多栋宿舍楼,每栋楼有多层,每层有多个寝室,每个寝室可住多名学生,学生宿舍管理系统对学校的学生宿舍进行规范管理,其管理的对象如下:
·宿舍信息:编号、楼层、床位数、单价等。
·学生:学号、姓名、性别、年龄、所在院系、年级、电话等。
每个宿舍最多可以住4位同学,每个同学只能在一个宿舍,不同宿舍的费用标准可以不同。不同院系、年级的同学可以住同一间宿舍。
系统要能够对宿舍、学生、住宿信息进行登记、调整,并能随时进行各种查询、统计等处理。包括:
·寝室分配:根据院系、年级分配寝室。
·学生管理:实现入住学生信息的登记、维护和查询功能。
·信息查询:按公寓楼号、学生姓名等查询住宿信息。
·出入登记(可选):对学生进出公寓的情况进行登记、实现基本的出、入监控功能。
需求说明及功能分析
需求说明:假定学校有多栋宿舍楼,每栋楼有多层,每层有多个宿舍,每个宿舍可住多名学生,设计一个学生宿舍管理系统对学校的学生宿舍进行规范管理。
用户群体有:学生、宿管。
管理对象有:宿舍楼、宿舍、学生等。
要求每个宿舍最多可以住4位同学,每个同学只能在一个宿舍,不同类型宿舍的床位可以不同、费用标准可以不同,不同年级、院系、班级的学生也可以住同一间宿舍。系统要能够对宿舍楼、宿舍、宿管、学生、住宿信息等进行各种操作,并能随时进行各种查询、统计等处理。包括:宿舍管理、学生管理、住宿管理、寝室分配、出入登记和各种信息查询等。不同的用户群体有不同的功能,其中宿管的管理权限能实现管理功能。
功能分析:系统分为三个模式:学生模式、宿管模式
学生模式的功能有:查看个人信息、宿舍报修、建议与反馈、修改密码、退出。
宿管模式的功能有:宿舍管理、学生管理、住宿管理、出入登记、退出。
其中,在管理各种数据的同时,要求能对其进行查询,例如:宿舍楼管理,要能增删改查宿舍楼信息;寝室分配功能要求能一键实现宿舍的自动分配,分配规则按照同一年级、院系进行分配,不同年级或院系或班级的学生在没有满足上一要求的宿舍分配时才会分配到同一宿舍。
3.2 概念结构设计
概念结构的设计使用E-R模型进行设计,从系统管理模式的视角下看,本系统主要可分为:宿舍管理、学生管理、住宿管理,共3个子系统。
住宿管理子系统可对住宿信息进行增删改查操作。
一个学生住在一个宿舍中,一个宿舍可住有多名学生。
学生管理子系统可对学生进行增删改查操作,以及宿舍报修、建议与反馈等功能。
宿舍管理子系统可对宿舍信息进行增删改查操作。
总体E-R图
上述3个子系统集成总系统,总体E-R图如上,各实体详细属性可见图中
3.3 逻辑结构设计
根据以上总体E-R图,可获得以下5个关系模型。
宿舍(楼号,楼层,宿舍号,总床位数,剩余床位数,单价)
宿管(编号,密码,姓名,性别,手机)
学生(学号,密码,姓名,性别,年级,院系,手机)
住宿信息(学号,楼号,楼层,宿舍号,入住时间)
出入信息(学号,楼号,类别,时间)
基于以上5个基本表,设计了3个视图用于某部分功能。
含学生姓名的住宿信息(学号,姓名,楼号,楼层,宿舍号,入住时间)
含学生姓名的出入信息(学号,姓名,楼号,类别,时间)
含楼号的住宿学生信息(学号,密码,姓名,性别,出生年份,年级,院系,班级,手机,是否入住,楼号)
系统流程图:
3.4 数据库物理设计与实施
数据库的硬件使用本人电脑,操作系统为Win10;软件使用SQLServer数据库进行数据管理。
物理结构设计:
宿舍表dormitory | |||
字段名 | 数据类型 | 约束 | 注释 |
BuildingNo | varchar(50) | 主键 | 楼号 |
Storey | varchar(50) | 主键 | 楼层 |
Dno | varchar(50) | 主键 | 宿舍号 |
BedNum | varchar(50) | 非空 | 总床位数 |
RGN | int | 非空 | 剩余床位数 |
price | int | 非空 | 单价 |
学生表student | |||
字段名 | 数据类型 | 约束 | 注释 |
Sno | varchar(50) | 主键 | 学号 |
Sname | varchar(50) | 非空 | 姓名 |
Ssex | varchar(50) | 非空 | 性别 |
Sdept | varchar(50) | 非空 | 院系 |
Grade | varchar(50) | 非空 | 年级 |
Phone | varchar(50) | 非空 | 电话 |
Age | varchar(50) | 非空 | 年龄 |
住宿信息表Lodging | |||
字段名 | 数据类型 | 约束 | 注释 |
Sno | varchar(50) | 主键,外键,非空 | 学号 |
BuildingNo | varchar(50) | 外键,非空 | 楼号 |
Storey | varchar(50) | 外键,非空 | 楼层 |
Dno | varchar(50) | 外键,非空 | 宿舍号 |
Scheckin | date | 非空 | 入住时间 |
出入信息表Leave | |||
字段名 | 数据类型 | 约束 | 注释 |
Sno | varchar(50) | 外键,非空 | 学号 |
BuildingNo | varchar(50) | 外键,非空 | 楼号 |
time | datetime | 非空 | 时间 |
出入信息表Enter | |||
字段名 | 数据类型 | 约束 | 注释 |
Sno | varchar(50) | 外键,非空 | 学号 |
BuildingNo | varchar(50) | 外键,非空 | 楼号 |
time | datetime | 非空 | 时间 |
数据库的建立和表、视图的建立,使用了sql语句。数据库建立时,表的物理结构采用上述结构。
3.5数据操作及实现(源代码分析及查询截图)
1. 源代码分析
数据查询操作:
本系统可以对宿舍、宿管、学生、住宿信息进行查询操作,在程序中编写sql语句,通过JDBC连接数据库进行查询,然后获取查询结果,将结果显示于应用系统界面中。
在代码中本人主要运用String类型数据去编写sql语句并结合java中sql类中已有的PreparedStatement,ResultSet类再加上sql的select语句完成了数据查询的功能操作。
如:住宿信息的查询
图1数据查询
本系统可以对宿舍、宿管、学生、住宿等信息进行改操作,在程序中编写sql语句,通过应用系统界面用户输入的数据获取sql语句中的参数,再通过JDBC连接数据库进行更新操作,最后将操作结果显示于应用系统界面中。
在代码中本人主要运用String类型数据去编写sql语句并结合java中sql类中已有的PreparedStatement,ResultSet类再加上sql的select和update语句完成了数据查询的功能操作。
如:住宿信息的修改
图2.数据修改
本系统可以对宿舍、宿管、学生、住宿等信息进行增加操作,在程序中编写sql语句,通过应用系统界面用户输入的数据获取sql语句中的参数,再通过JDBC连接数据库进行更新操作,最后将操作结果显示于应用系统界面中。
在代码中本人主要运用String类型数据去编写sql语句并结合java中sql类中已有的PreparedStatement,ResultSet类再加上sql的select和insert语句完成了数据查询的功能操作。
如:宿舍信息的增加
图3.数据增加
数据删除操作:
本系统可以对宿舍、宿管、学生、住宿等信息进行删除操作,在程序中编写sql语句,通过应用系统界面用户输入的数据获取sql语句中的参数,再通过JDBC连接数据库进行更新操作,最后将操作结果显示于应用系统界面中。
在代码中本人主要运用String类型数据去编写sql语句并结合java中sql类中已有的PreparedStatement,ResultSet类再加上sql的select和delete语句完成了数据查询的功能操作。
如:宿舍信息的删除
图4.数据删除
数据维护操作:
程序对用户输入的数据进行了限制或判误,以防止用户输入非法数据,从而导致系统错误;对数据库中的数据也进行了相应的保护,以防误删,随时可进行数据的转储和恢复。某些数据维护操作需人工进行。
寝室分配:
寝室分配:可一键实现宿舍的自动分配,分配规则按照优先同一年级、院系进行分配如果没有符合条件的宿舍再按照同一年级或院系去分配,最后还没有就查询是否还有空宿舍去分配
图5. 寝室分配关键代码
结合多个SQL语句再加上判断语句去实现寝室分配功能。
数据库连接方法:
本程序使用Java进行编写,故数据库连接方法使用JDBC,用到了jar包:mysql-connector-java-8.0.26。
先写好JDBC驱动名、数据库URL、用户名、密码,然后使用jar包中的相应方法进行数据库连接,将连接信息放在Connection对象中,以便后续数据操作时可用,后面可使用PreparedStatement类对象来执行sql语句,使用ResultSet类对象来存放获取的结果集等。
图6.数据库连接
出入登记操作:
本系统可以对学生进出宿舍进行登记操作,在程序中编写sql语句,通过应用系统界面用户输入的数据获取sql语句中的参数,再通过JDBC连接数据库进行更新操作,最后将操作结果显示于应用系统界面中。
在代码中本人主要运用String类型数据去编写sql语句并结合java中sql类中已有的PreparedStatement,ResultSet类再加上sql的select和insert语句完成了数据查询的功能操作。
图7.出入登记
Swing图形界面操作:
本系统实现了使用swing图形化界面,在程序中利用JLabel,JTxtField,JButton等常用的按键和文本框的代表。再利用CardLayout,JPanel,JTabbedPane等常用的布局方式(例如卡片式布局等……)。
查询截图
图9.登录界面
宿舍管理系统的登录界面
图10.登录成功
图11.宿舍管理查询
图12.学生管理查询
图13.住宿信息查询
图14.出入信息表