学生宿舍管理系统
我尝试用mysql编写学生宿舍管理系统
这是我的数据库技术与应用课程设计作业哦。是我在网上借鉴了一些大神的代码,并应用自己所学知识编写的一个学生宿舍管理系统,以博客的形式分享给大家,希望能为一些需要的同学提供帮助,需要文档的小伙伴可以私信我。但是其中还有一些不太完善的地方,也希望大家多多指教。
一、项目需求说明 3
1.1 项目功能 3
1.系统维护管理 3
2.基本资料管理 3
1.2 项目功能模块图 5
2.0概念模型 E-R 图及流程图 6
二、创建数据库 8
2.1 表结构(字段、数据类型及长度、主键、外键、其他约束) 8
2.2创建库的命令 9
2.3创建宿舍表的命令 9
2.4创建学生住宿表的命令 9
2.5创建员工表的命令 10
2.6创建保修表的命令 10
2.7创建水电费表的命令 10
2.8表记录展示(附插入表记录命令) 11
三、 查询功能设计与实现 14
3.0查询功能:查询姓名为王玉的员工基本信息及查询截图(附查询命令) 14
3.1查询功能:查询年龄在30到40岁的员工号,员工姓名,职位及查询截图(附查询命令) 14
3.2查询功能:查询住在7号楼913宿舍的学生信息及查询截图(附查询命令) 15
3.3查询功能:查询计应专业学生住宿人数及查询截图(附查询命令) 15
3.4查询功能:查询员工号为002的员工所在的楼栋住宿信息及查询截图(附查询命令) 16
四、高级开发 17
4.0存储过程设计(程序和截图) 17
5.0游标的使用(程序和截图) 18
五、心得体会及分工 20
6.0心得体会 20
6.1小组成员 20
一、项目需求说明
1.1 项目功能
系统需求调查的方法为访谈法,系统的主要功能是能够对宿舍信息,学生信息,管理员信息,住宿信息进行登记,调整,并能进行各种电费查询以及物品维修。
项目需求说明书
1.系统维护管理
系统用户管理:系统设有用户管理功能,可以添加或删除用户,并可根据使用情况更改用户权限,以维护系统的安全性。
系统权限管理:系统可根据使用情况设置权限。对于一般用户只提供查询权限,对于操作员则提供查询、统计、修改、添加、删除等操作权限。而对于管理员则提供包括系统设置在内的所有权限。这样就有效控制使用者的操作,同时也维护了系统数据的安全性。
口令管理功能:为了实现对用户权限的保护,系统设有一套严格的密码登录验证和密码管理功能。凡 登录本系统的用户必须录入与其用户名相对应的密码,方可进入系统。更改密码时,系统要求使用六位或六位以上的大小写字母数字和其他符号的组合。并确定两次输入的新密码一致,方更改成功。
2.基本资料管理
学生住在宿舍楼中,每幢宿舍楼都会有若干名老师负责本宿舍楼的日常管理。
(1)学生的基本信息: 入校时,每位同学都有唯一的学号, 并被分配到指定的宿舍楼和指定的宿舍。个宿舍号,其入校时间就是他的入住时间。
(2)宿舍的基本信息: 每间宿舍都有唯一的楼号和宿舍号,入校时,宿舍都会留下学生电话,相应地就有宿舍电话号码。
(3)工作人员基本信息:每幢宿舍都有驻楼阿姨和保洁阿姨的编号。
(4)保修的基本信息:宿舍楼中经常出现财产的损坏同学们需要将财产损坏情况报告给宿舍楼管理员。这时,需要记录报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。
(5)费用表的基本信息:在我们学校,水电费系统仍然用的原始的手抄电表的系统,每次都要靠宿舍管理员发送消息我们才能知道,而且有时候电费没了我们也不知道,就突然停电了。为了方便我们自行查询水电费情况,及时了解电费详情,通过此系统可以及时查询寝室水电费情况。
二、创建数据库
2.1 表结构(字段、数据类型及长度、主键、外键、其他约束)
宿舍表
属性名 类型 长度 完整约束性 备注
楼号 char 2 非空 主键
宿舍号 char 3 非空 主键
宿舍电话 char 12 非空
可住人数 smallint 2 非空
已住人数 smallint 2 非空
学生住宿表
属性名 类型 长度 完整约束性 备注
学号 char 8 主码 主键
姓名 varchar 10 非空
性别 char 2 无
专业 varchar 20 非空
联系方式 char 11 无
入住时间 datetime 8 非空
楼号 char 2 非空 外键
宿舍号 char 3 非空 外键
员工表
属性名 类型 长度 完整约束性 备注
员工号 char 4 主码 主键
员工姓名 varchar 10 非空
年龄 smallint 2 无
楼号 char 2 非空
性别 char 2 无
职位 varchar 20 非空
联系方式 char 11 无
保修表
属性名 类型 长度 完整约束性 备注
楼号 char 2 非空
宿舍号 char 3 非空
物品号 varchar 8 非空
报修原因 char 50 非空
提交日期 datetime 8 非空
水电费表
属性名 类型 长度 完整约束性
楼号 char 2 非空
宿舍号 char 3 非空
月份 varchar 4 非空
用电量 decimal (5,2) 非空
电费 decimal (5,2) 非空
用水量 decimal (5,2) 非空
水费 decimal (5,2) 非空
2.2创建库的命令
create database 学生成绩管理系统;
2.3创建宿舍表的命令
create table 宿舍表(
楼号char(2),
宿舍号char(3),
primary key(楼号, 宿舍号),
宿舍电话char(12) not null,
可住人数smallint not null,
已住人数 smallint not null);
2.4创建学生住宿表的命令
create table 学生住宿表(
学号char(8) primary key,
姓名varchar(10) not nul1,
性别char(2),
专业varchar(20) not nu1l,
联系方式char(11),
入住时间datetime not null,
楼号char(2) not null,
宿舍号char(3) not null,
foreign key(楼号,宿舍号));
2.5创建员工表的命令
create table 员工表(
员工号char(4) primary key,
员工姓名varchar(10) not null,
年龄smallint,
楼号char(2),
性别char (2),
职位varchar(20) not null,
联系方式char(11));
2.6创建保修表的命令
create table 保修表(
楼号char(6) not null,
宿舍号char(6) not null,
物品号char(8) not null,
保修原因char(50) not nu1l,
提交日期datetime not nul1,
解决日期datetime not null,
保修费用decimal(5,2) not null) ;
2.7创建水电费表的命令
create. table 水电费表(
楼号char(2)_ not null,
宿舍号char (3) not null,
月份varchar(4) not null,
用电量decimal(5, 2) not null,
月份varchar(4) not null,
用电量decimal(5, 2)not null,
电费decimal(5,2) not null,
用水量decimal (5,2) not null,
水费decimal(5,2) not null) ;
2.8表记录展示(附插入表记录命令)
(1)向宿舍表插入数据
insert into 宿舍表 values(‘7’,‘913’,‘19986494152’,‘4’,‘4’);
insert into 宿舍表 values(‘7’,‘912’,‘19986454178’,‘4’,‘3’);
insert into 宿舍表 values(‘7’,‘908’,‘19986454178’,‘4’,‘4’);
查看宿舍表:Select * from 宿舍表;
(2)向学生宿舍表插入数据
insert into 学生住宿表 values(‘210201’,‘玥’,‘女’,‘计应’,‘18738512147’,‘20190831’,‘7’,‘913’);
insert into 学生住宿表 values(‘210209’,‘芩’,‘女’,‘计应’,‘18986494789’,‘20190831’,‘7’,‘913’);
insert into 学生住宿表 values(‘210210’,‘姣’,‘女’,‘计应’,‘18845674751’,‘20190831’,‘7’,‘913’);
insert into 学生住宿表 values(‘210216’,‘燕’,‘女’,‘计应’,‘18727151853’,‘20190831’,‘7’,‘913’);
insert into 学生住宿表 values(‘210217’,‘元’,‘女’,‘计应’,‘18697423584’,‘20190831’,‘7’,‘912’);``
查看住宿表:Select * from 学生住宿表;
(3)向员工表中插入数据
insert into 员工表values( 001’,‘王玉’,’38’,‘7’,’女,’清洁工’,’ 18723145901’);
insert into员工表values(’ 002’,’白露’,’36’,‘7’,‘女’,’管理员’,’18723415854’ ) ;
insert into 员L表values( 003’,'张红’,’42’,'7,‘女’,’管理员’,’13796371852’ );
查看员工表:select * from 员工表;
(4)向保修表中插入数据
insert into 保修表values(’ 7’,’ 913’,0001’,‘日光灯不亮, 20201210 ,’ 20201211’,’ 00. 00’ );
insert into 保修表values( 7",912’,’ 0002’,‘热水器坏了,20201209,’ 20201211’,‘00. 00’ );
insert into 保修表values(’ 7’,’908’,’0003’,’下水道坏了’,’20201213’ ,’20201215’,’ 05. 00’);
查看保修表:select * from 保修表;
(5)向水电费表中插入数据
insert into水电费表values( 7’,‘913,’11’,‘17. 12’,‘13’ ,‘5.24’,‘7.52’ );
insert into 水电费表values( 7’,’ 912’,’ 11’,‘18. 12’,’ 14’,‘6.24’,‘8.52’) ;
insert into水电费表values( 7’,’ 908,’11’,'11. 12’,'13’,‘6.24’,'8.52’);
查看水电费表:select * from 水电费表;
《数据库技术与应用》课程设计—数据库设计与开发
三、查询功能设计与实现
3.0查询功能:查询姓名为王玉的员工基本信息及查询截图(附查询命令)
select * from 员工表 where 员工姓名=‘王玉’;
3.1查询功能:查询年龄在30到40岁的员工号,员工姓名,职位及查询截图(附查询命令)
select 员工号,员工姓名,职位from 员工表
where 年龄 between 30 and 40;
3.2查询功能:查询住在7号楼913宿舍的学生信息及查询截图(附查询命令)
select 学号,姓名,专业,联系方式 from 学生住宿表
where 楼号=‘7’ and 宿舍号=‘913’;
3.3查询功能:查询计应专业学生住宿人数及查询截图(附查询命令)
select count(学号) from 学生住宿表where 专业=‘计应’;
3.4查询功能:查询员工号为002的员工所在的楼栋住宿信息及查询截图(附查询命令)
select * from 宿舍表
where 楼号 in(select 楼号 from 员工表 where 员工号=‘002’);
《数据库技术与应用》课程设计—数据库设计与开发
四、高级开发
4.0存储过程设计(程序和截图)
创建存储过程,7号楼宿舍电费情况
delimiter
c
r
e
a
t
e
p
r
o
c
e
d
u
r
e
p
r
o
c
(
i
n
s
i
d
i
n
t
)
b
e
g
i
n
s
e
l
e
c
t
楼
号
,
宿
舍
号
,
月
份
,
电
费
,
水
费
f
r
o
m
水
电
费
表
w
h
e
r
e
楼
号
=
′
7
′
;
e
n
d
create procedure proc(in sid int) begin select 楼号,宿舍号,月份,电费,水费 from 水电费表 where 楼号='7'; end
createprocedureproc(insidint)beginselect楼号,宿舍号,月份,电费,水费from水电费表where楼号=′7′;end
查看存储过程
show procedure status like ‘proc’\G
5.0游标的使用(程序和截图)
为了提倡节约用水,水学校对水费小于8的寝室进行免除水费。
delimiter
c
r
e
a
t
e
p
r
o
c
e
d
u
r
e
水
费
减
免
(
)
b
e
g
i
n
d
e
c
l
a
r
e
c
u
r
c
u
r
s
o
r
f
o
r
s
e
l
e
c
t
e
d
宿
舍
号
,
水
费
f
r
o
m
水
电
费
表
w
h
e
r
e
水
费
<
8
;
o
p
e
n
c
u
r
;
r
e
p
e
a
t
f
e
t
c
h
c
u
r
i
n
t
o
c
u
r
宿
舍
号
,
c
u
r
水
费
;
i
f
c
u
r
水
费
<
8
t
h
e
n
s
e
t
c
u
r
水
费
=
0
;
u
p
d
a
t
e
水
电
费
表
s
e
t
水
费
=
c
u
r
水
费
w
h
e
r
e
宿
舍
号
=
c
u
r
宿
舍
号
;
e
n
d
i
f
;
c
l
o
s
e
c
u
r
;
e
n
d
create procedure 水费减免() begin declare cur cursor for selected 宿舍号,水费 from 水电费表 where 水费<8; open cur; repeat fetch cur into cur_宿舍号,cur_水费; if cur_水费<8 then set cur_水费=0; update 水电费表 set 水费=cur_水费 where 宿舍号=cur_宿舍号; end if; close cur; end
createprocedure水费减免()begindeclarecurcursorforselected宿舍号,水费from水电费表where水费<8;opencur;repeatfetchcurintocur宿舍号,cur水费;ifcur水费<8thensetcur水费=0;update水电费表set水费=cur水费where宿舍号=cur宿舍号;endif;closecur;end
《数据库技术与应用》课程设计—数据库设计与开发
五、心得体会及分工
6.0心得体会
在设计数据库的过程中我们遇到过非常多的问题:
首先,在设计阶段有非常多的数据项,当时觉得不好分类和处理,而且有很多的数据项和许多实体都有关系。最后通过查看课本例题,问同学等方式将各个数据项进行归类,对于和多个实体之间都有关系的数据项可以建立一个关系表,从而完成归类。
接着,在添加数据的过程中,我忽略掉了数据的参照完整性,导致许多数据不能够正常加入。后来通过查找资料,我们将数据进行了统一分析,保持所有的数据一致,最后数据可以正常输入。
收获:
对于一个系统,数据库的设计是非常重要的,数据库设计决定了以后数据好不好维护。后期需求好不好展。同时也决定了系统的性能。一个坏的数据库设计一个功能点的改动可能会设计多张表的改动。一不小心可能就会引起数据的不一致。为了解决这些问题。在数据库设计之初就要考虑这些问题。减少后期系统维护量。
小组成员团结到一起去做一个共同的课题,我们分工合作遇到困难共同解决,最终完成了该项目。