学生宿舍管理系统--数据库课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
摘要 (1)
一需求分析 (1)
1、1 需求分析 (1)
1、1、1 基本信息 (1)
1、1、2 用户对系统要求 (2)
1、2 系统功能分析: (3)
1、3 业务流程概述 (3)
1、4 数据流程图 (4)
1、5 数字字典 (9)
1、5、1数据项 (9)
1、5、2数据结构 (11)
1、5、3数据流 (12)
1、5、4数据存储 (12)
1、5、5处理过程 (12)
二概念结构设计 (13)
三逻辑结构设计 (13)
3、1逻辑设计的任务与目标 (13)
3、2数据组织 (13)
3、2、1将E-R图转换为关系模型 (13)
3、2、2 逻辑结构定义 (14)
四物理结构设计 (16)
4、1物理设计阶段的目标与任务 (16)
4、2数据存储方面 (16)
五数据实施与维护 (17)
5、1建立数据库、数据表、视图、索引、导入数据 (17)
5、1、1建立数据库 (17)
5、1、2建立数据表 (17)
5、1、3 建立视图 (19)
5、1、4 建立索引 (20)
5、1、5 导入数据 (20)
5、2 记录与约束条件的的增加、删除与修改 (22)
5、2、1 记录的增加、删除、修改 (22)
5、2、2 约束条件的增加、删除、修改 (23)
5、3查询语句 (23)
5、4 建立存储过程,触发器 (24)
六总结 (25)
附件 (26)
摘要
学生宿舍管理系统就是应对学生宿舍管理的现代化、网络化,逐步摆脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包括基本信息管理、住宿管理、服务管理、来访者管理等四大功能模块。
该系统开发由需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施与维护阶段等阶段组成。
一需求分析
目前,我们学校的宿舍管理都就是由人工管理的,信息都就是由文本记录的。
针对这一实际情况,我们设计了学生宿舍管理系统。
1、1 需求分析
经过实际分析调查,一个学生宿舍管理系统主要就是要方便宿舍管理人员的工作,提高其工作效率,不仅可以方便广大学生,而且还可以方便于教师与相关人员。
1、1、1 基本信息
学生住在宿舍楼中,每幢宿舍楼都会有若干名老师负责本宿舍楼的日常管理。
(1)学生的基本信息:
入校时,每位同学都有唯一的学号,并被分配到指定的宿舍楼与指定的宿舍,也会有一个宿舍号,其入校时间就就是她的入住时间。
(2)宿舍的基本信息:
每间宿舍都有唯一的楼号与宿舍号,入校时,宿舍会装公用电话机,相应地就有宿舍电话号码。
(3)工作人员基本信息:
每幢宿舍都有驻楼阿姨与保洁阿姨的编号。
(4)报修的基本信息:
宿舍楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给宿舍楼管理员,以便学校派人进行维修。
这时,需要记录报修的宿舍号与损坏的财产编号,同时记录报修的时间与损坏的原因。
当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。
(5)来访者基本信息
每幢宿舍对于每一次的人员来访都要做好相应的登记。
包括来访者与被访者的信息。
1、1、2 用户对系统要求
1、信息要求:
宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,报修的所有信息与来访者的信息,以利于对整个宿舍楼的全面管理。
2、处理要求:
当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。
比如,某些同学搬到其她的宿舍中去,她们在本宿舍楼中相应的记录就应该删去;当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。
3、安全性与完整性要求:
A、安全性要求:
(1)系统应设置访问用户的标识以鉴别就是否就是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
(2)系统应对不同的数据设置不同的访问级别,限制访问用户可查询与处理数据的类别与内容;
(3)系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员。
B、完整性要求:
(1)各种信息记录的完整性,信息记录内容不能为空;
(2)各种数据间相互的联系的正确性;
(3)相同的数据在不同记录中的一致性。
1、2 系统功能分析:
本系统主要有以下功能:基本信息管理、住宿管理、服务管理、来访者管理。
基本信息管理包括学生信息、宿舍信息、工作人员信息;住宿信息包括入住、调房、退房;服务管理包括租赁、水费、电费、维修;来访者管理包括来访者信息登记、来访者查询。
数据库操作功能:查询、删除、修改、插入;
1、3 业务流程概述
系统的业务就是系统要达到的业务目标,业务流程分析就是系统分析中的基础环节。
根据以上系统功能的分析,我们将学生宿舍管理业务分成基本信息管理、住宿管理、服务管理、来访者管理四个模块。
1、基本信息管理
宿舍信息管理:主要就是记录宿舍的基本状况,可住人数,已住人数,电话号码,便于工作人员分配寝室以及联系。
学生信息管理:宿舍的学生信息主要来自学生处提供的,对于已住进宿舍的学生,工作人员从学生处提取相关信息,进行统一管理,如果学生退房之后,相应的信息也将被删除。
员工信息管理:记录在宿舍、楼管处工作的员工信息,及时增、删、改,便于有个统一的收集、管理、宿舍更好的运作。
2、住宿管理
新生入住:新生向楼管处提出入住申请,工作人员进行查询宿舍相关信息之后,再根据学生的信息相应的给新生安排宿舍,登记与修改相关信息。
调房:学生向楼管处提出宿舍调房申请,楼管处根据学生的所要调房的信息,给予核实确认之后,查询宿舍信息之后,满足条件就给予学生办理调房,并修改相应信息,否则不办理。
退房:学生向楼管处提出退房申请,楼管处核实证件准确无误之后,办理退房手续,并删除学生的相关信息。
3、服务管理
水电费:楼管处在每个月下旬记录每个宿舍的水,电使用情况,根据收费标准,结算出每个宿舍所需支付的费用,再由每个宿舍在月底之前进行付费。
临时设备的租赁:学生把所需的临时设备向楼管处进行租赁申请,再由工作人员核实,确定之后,给予学生批准,并收取相应的租赁费用。
报修:学生把需要维修的设备向楼管处提出申请,填写相应的维修单,支付相应的费用,工作人员根据维修单派发维修员工对设备进行维修,楼管处再把已修信息反馈给学生。
4、外来人员管理
外来访客登记来访信息,楼管处根据外来访客所登记的信息表,从宿舍、工作人员信息、学生信息这三张表单中,查询外来访客所要访问的人员的基本信息,最后经过核实,确定其就是否可以访问。
1、4 数据流程图
数据流程图就是全面描述信息系统逻辑模型的工具,它抽象概括地把信息系统中各种业务处理过程联系起来。
根据以上的业务流程的分析,以及学生宿舍的特点,我们给出了以下学生宿舍管理信息系统的数据流程图。
由于学生宿舍主要涉及学生的入住与退缩问题,以及住宿的管理,我们将学生宿舍管理系统的顶层设计如下:
将顶层进行细分,主要就是工作人员管理宿舍,接收与处理各种事务,包括学生,宿舍,以及工作人员的基本信息管理,学生住宿管理,宿舍的服务管理,来访者管理,得到以下的第一层数据流程图如下:
针对每个事务的管理,我们进行了分类,即第二层数据流程图如下:
第二层1:
第二层2:
第二层3:
第二层4:
以上当中的住宿管理事务,有学生的入住管理,调房管理,退房管理,由于这三个事务都有相似性,首先都需要学生提出申请,再经过管理者的审核,通过查询宿舍表,了解住宿情况之后再考虑就是否满足学生的申请,申请通过之后,相应的调整学生住宿表与宿舍表的信息,所以我们就以学生入住管理为例,其流程图如下:
1、5 数字字典
1、5、1数据项
住宿学生数据字典
1、5、2数据结构
1、5、3数据流
1、5、4数据存储
1、5、5处理过程
二概念结构设计
概念结构就是将需求分析抽象为信息结构即概念模型的过程,这样才能更好地、更准确的用某一DBMS实现这些需求,就是整个数据库设计的关键,它主要特点就是能真实、充分地反映现实社会,包括事物与事物之间的联系,能满足用户对数据的处理需求,就是对现实世界的一个真实模型,而且还易于理解,也方便用户的操作,对数据的修改与各种模型的转换。
从以上的数据流程图中,我们选择了第二层数据流程图作为设计E-R图的出发点,从分析数据流图与数字字典中可以瞧出,整个系统功能就是围绕“学生住宿”问题进行处理,学生住进宿舍,工作人员管理宿舍,处理宿舍提供的各种服务,另外,还有来访者对学生的来访。
ER图见附件。
三逻辑结构设计
3、1逻辑设计的任务与目标
以上的概念设计阶段就是独立于任何一种数据模型的,但就是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
3、2数据组织
3、2、1将E-R图转换为关系模型
由于宿舍与学生就是1:n关系,可以将其之间的联系与n端实体学生合并,宿舍与员工,学生与临时设备,学生与来访者也就是1:n关系,同样也将其之间的联系与n端实体员工,临时设备,来访者合并,具体的基本E-R图向关系模型的转化如下:
学生住宿表:(学号,姓名,性别,专业,入住时间,联系方式,楼号,宿舍号)
宿舍表:(楼号,宿舍号,电话号码,可住人数,已住人数)
员工表:(员工号,员工姓名,性别,职位,家庭地址,联系方式,楼号)
临时设备租赁表:(设备号,设备名,租赁日期,归还日期,租赁费用,学号)
报修表:(楼号,宿舍号,物品号,报修原因,提交日期,解决日期,报修费用)
水电费表:(楼号,宿舍号,月份,用电量,电费,用水量,水费)
来访者表:(来访人姓名,被访人姓名,所属关系,证件名称,来访日期,来访时间,结束时间,学号)
3、2、2 逻辑结构定义
由以上分析,得出上述7个表格结构如下:
学生住宿表,主要记录学生住宿的基本信息。
四物理结构设计
4、1物理设计阶段的目标与任务
数据库的物理设计就就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要就是存取方法与存储结构;
(2)对物理结构进行评价,评价的重点就是时间与空间效率。
4、2数据存储方面
为数据库中各基本表建立的索引如下:
(1)由于基本表学生住宿表的主码学号经常在查询条件与连接操作的连接条件中出现,且它的值唯一,考虑在学号这个属性上建立唯一性索引;
(2)宿舍表的主码楼号,宿舍号经常在查询条件中出现,且它们的组合值唯一,考虑在它们之上建立组合索引;
(3)基本表学生住宿表的一属性姓名,经常在查询条件中出现,且经常出现在相等的比较条件中,考虑在其之上建立聚簇索引;
(4)由于员工表,报修表,设备租赁表,水电费表,来访者表的属性值经常发生变化,权衡系
统为维护索引付出的代价,暂考虑不建立索引;
五数据实施与维护
5、1建立数据库、数据表、视图、索引、导入数据5、1、1建立数据库
create database 学生宿舍管理系统;
5、1、2建立数据表
宿舍表
Create table 宿舍表
( 楼号char(2),
宿舍号char(3),
primary key(楼号,宿舍号),
宿舍电话char(12) not null,
可住人数smallint not null,
已住人数smallint not null,
);
学生住宿表
Create table 学生住宿表
(学号char(8) primary key,
姓名varchar(10) not null,
性别char(2) default '男' check(性别in ('男','女')),
专业varchar(20) not null,
联系方式char(11),
入住时间datetime not null,
楼号char(2) not null,
宿舍号char(3) not null,
foreign key(楼号,宿舍号) references 宿舍表(楼号,宿舍号),
);
员工的基本信息表
Create table 员工表
(员工号char(4) primary key,
员工姓名varchar(10) not null,
年龄smallint check(年龄>14 and 年龄<65),
楼号char(2),
性别char(2) check (性别in('男','女')),
职位varchar(20) not null,
联系方式char(11),
);
设备的租赁信息表
Create table 设备租赁表
(设备号char(8) primary key,
设备名Varchar(20) not null,
租赁日期Datetime not null,
归还日期Datetime not null,
租赁费用decimal(5,2) not null,
学号char(8) foreign key references 学生住宿表(学号), );
报修信息表
create table 报修表
(楼号char(6) not null,
宿舍号char(6) not null,
物品号char(8) not null,
保修原因char(50) not null,
提交日期datetime not null,
解决日期datetime not null,
保修费用decimal(5,2) not null,
);
水电费表
Create table 水电费表
(楼号char(2) not null,
宿舍号char(3) 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,
);
来访者信息表
Create table 来访者表
(来访者姓名varchar(10) not null,
被访者姓名varchar(10) not null,
所属关系Varchar(20) not null,
证件名称Varchar(20) not null,
来访日期Datetime not null,
来访时间Datetime not null,
结束时间Datetime not null,
备注Varchar(50),
学号char(8) foreign key references 学生住宿表(学号), );
5、1、3 建立视图
1、建立物流管理专业的学生住宿的视图
Create view 物流管理学生住宿表
As
Select 学号,姓名,楼号,宿舍号
From 学生住宿表
Where 专业=’物流管理’;
2、建立住在22号楼的学生信息的视图
Create view 22号楼学生住宿表
As
Select 学号,姓名,专业
From 学生住宿表
Where 楼号=’22’;
3、建立职位就是管理员的员工信息的视图
Create view 管理员信息表
As
Select *
From 员工表
Where 职位=’管理员’;
4、建立4月份各个宿舍的水电使用情况的视图
Create view 4月水电表
As
Select *
From 水电表
Where 月份=’4’;
5、建立22号楼各个宿舍的信息的视图
Create view 22号楼宿舍信息表
As
Select *
From 宿舍表
Where 楼号=’22’;
5、1、4 建立索引
create unique index 住宿_学号on 学生住宿表(学号); create unique index 宿舍楼_宿舍号on 宿舍表(楼号,宿舍号); create cluster index 学生_姓名on 学生住宿表(姓名); Create unique index IX_员工号on 员工表(员工号); Create unique index IX_设备号on 设备租赁表(设备号);
5、1、5 导入数据
1、/*宿舍表格记录插入*/
Insert into 宿舍表
Values ('27','101','0',04,04)
Insert into 宿舍表
Values ('22','111','0',04,04)
Insert into 宿舍表
Values ('27','131','0',04,04)
截图如下:
2、/*学生住宿表格记录插入*/
Values ('08030004','王晓明','男','物流管理','','20080906','27','101') Insert into 学生住宿表
Values ('08030002','李倩','女','物流管理','','20080906','22','111') Insert into 学生住宿表
Values ('08030005','李明','男','物流管理','','20080906','27','131')
截图如下:
3、/*员工表格记录插入*/
Insert into 员工表
Values ('y001','叶玉',40,'27','女','清洁工','')
Insert into 员工表
Values ('y002','王思思',26,'22','女','管理员','')
Insert into 员工表
Values ('y003','李伟',34,'22','男','管理员','')
截图如下:
4、/*报修表格记录插入*/
Insert into 报修表
Values ('27','101','0001','日光灯不亮','20100920','20100922','00、00') Insert into 报修表
Values ('22','111','0001','热水器坏了','20100920','20100922','00、00') Insert into 报修表
Values ('27','131','0001','下水道坏了','20100920','20100922','05、00') 截图如下:
5、/*水电费表格记录插入*/
Insert into 水电费表
Values ('27','101','09','17、12','13、00','05、24','07、52')
Insert into 水电费表
Values ('27','131','09','18、12','14、00','06、24','08、52')
Values ('22','111','08','11、12','13、00','06、24','08、52')
截图如下:
6、/*来访者表格记录插入*/
Insert into 来访者表
Values ('张晓红','王晓明','母子','身份证','20100920','2010/9/20 12:20:30','2010/9/20 12:50:30','帮忙带东西','08030004')
Insert into 来访者表
Values ('王伟','李倩','兄妹','身份证','20100910','2010/9/10 12:20:30','2010/9/10 12:50:30','瞧望她','08030002')
Insert into 来访者表
Values ('王梦','李明','姐妹','身份证','20100930','2010/9/30 12:10:30',' 2010/9/30 13:50:30','瞧望她','08030005')
截图如下:
7、/*设备租赁表格记录插入*/
Insert into 设备租赁表
Values ('00000001','饮水机','10:09:20','14:06:20','50','08030001')
Insert into 设备租赁表
Values ('00000002','热水器','10:04:20','14:02:12','22','08030002')
截图如下:
5、2 记录与约束条件的的增加、删除与修改
5、2、1 记录的增加、删除、修改
1、一个新生住进宿舍:
insert into 学生住宿表
Values ('08032111','张三','男','物流管理','','09/03/12','27','325')
2、删除员工号为0103的信息
Delete from 员工表
where 员工号='0103'
3、修改宿舍表中11号楼214宿舍的已住人数
Update 宿舍表
Set 已住人数=04
Where楼号='11' and 宿舍号='214';
5、2、2 约束条件的增加、删除、修改
1、在学生住宿表中增加一属性为学院,数据类型为varchar(20), Alter table 学生住宿表add 学院varchar(20);
2、删除学生住宿表中新增的属性学院
Alter table 学生住宿表drop column 学院;
3、在设备租赁表中,增加设备名取唯一值的约束条件
Alter table 设备租赁表add unique(设备名);
5、3查询语句
1、查询员工姓名为李倩的基本信息
Select *
From 员工表
Where 员工姓名='李倩';
2、查询年龄在22岁到32岁的员工号,员工姓名,职位
Select 员工号,员工姓名,职位
From 员工表
Where 年龄between 22 and 32;
3、查询所有姓黄的来访者信息
Select *
From 来访者表
Where 来访者姓名like '黄%';
4、查询张三所在的宿舍的已住人数
Select 宿舍表、楼号, 宿舍表、宿舍号,已住人数
From 宿舍表,学生住宿表
Where 姓名='张三' and 宿舍表、楼号=学生住宿表、楼号and 宿舍表、宿舍号=学生住宿表、宿舍号;
5、查询住在22号楼123宿舍所住的学生信息
Select 学号,姓名,专业,联系方式
From 学生住宿表
Where 楼号='22' and 宿舍号='123';
6、查询物流专业的学生住宿人数
Select count(学号)
From 学生住宿表
Where 专业='物流专业';
7、查询姓名为李四的学生所租的设备信息
Select *
From 设备租赁表
Where 学号in (select 学号
From 学生住宿表
Where 姓名='李四');
8、查询员工号为0124的员工所在楼的住宿信息
Select *
From 宿舍表
Where 楼号in (select 楼号
From 员工表
Where 员工号='0124');
5、4 建立存储过程,触发器
1、存储过程,返回指定的月份的水费总额与电费总额
Create proc pro
@benning varchar(4),@ending varchar(4),
@all_waterpay decimal(8,2),@all_elecpay decimal(8,2) output
/* 给存储过程定义四个参数:开始月份与结束月份的水费总额与电费总额*/
AS
select @all_waterpay=sum(水费), @all_elecpay=sum(电费)
From 水电费表
where 月份between @benning
and @ending
2、触发器,当学生退房,即删除某一学生时,这学生所租的设备也删除
Create trigger tri
On 学生住宿表
For delete
AS
IF @@rowcount = 0
return
delete 设备租赁表
where 学号in (select 学号from deleted)
IF @@error !=0
begin
rollback tran
return
end
return
go
六总结
这两周下来,学到了不少东西,以前对SQL,只能按书上按部就班的写,写SQL语句就是会了,但数据逻辑与方法方面,一点都不够到位,没有对以前的知识进行系统的了解,没有把各个部分知识整合在一起,通过这次学生宿舍管理系统课程设计,使我对数据库设计的各个方面都加深了理解,了解到数据库就是一环扣一环的,只有数据流程图与数字字典做好了,才能进行下面的E-R图设计,中途不能有办点马虎,也体会到把知识应用于实践就是不容易的,同时也学生课本所没有的东西,一些问题也只有真正做设计的时候才会出现。
由于时间比较紧,因此我们所做的课程设计肯定还存在许多的不足之处,程序中也存在许多小错误。
这将激励我们在以后的学习当中职累更多的经验,努力减少错误的发生。
附件***********。