学生宿舍管理系统--数据库课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录之马矢奏春创作
摘要2
一需求分析2
1.1 需求分析2
1.1.1 基本信息2
1.1.2 用户对系统要求3
1.2 系统功能分析:4
1.3 业务流程概述4
1.4 数据流程图5
1.5 数字字典10
二概念结构设计14
三逻辑结构设计14
3.2.2 逻辑结构定义15
四物理结构设计17
五数据实施和维护18
5.1建立数据库、数据表、视图、索引、导入数据18
5.1.3 建立视图20
5.1.4 建立索引21
5.1.5 导入数据22
5.2 记录和约束条件的的增加、删除和修改24
5.2.1 记录的增加、删除、修改24
5.2.2 约束条件的增加、删除、修改24
5.4 建立存储过程,触发器26
六总结27
附件28
摘要
学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步解脱当前学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的,它包含基本信息管理、住宿管理、服务管理、来访者管理等四大功能模块。
该系统开发由需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施与维护阶段等阶段组成。
一需求分析
目前,我们学校的宿舍管理都是由人工管理的,信息都是由文本记录的。
针对这一实际情况,我们设计了学生宿舍管理系统。
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 数字字典
住宿学生数据字典
二概念结构设计
概念结构是将需求分析抽象为信息结构即概念模型的过程,这样才干更好地、更准确的用某一DBMS实现这些需求,是整个数据库设计的关键,它主要特点是能真实、充分地反映现实社会,包含事物和事物之间的联系,能满足用户对数据的处理需求,是对现实世界的一个真实模型,而且还易于理解,也方便用户的操纵,对数据的修改和各种模型的转换。
从以上的数据流程图中,我们选择了第二层数据流程图作为设计E-R图的出发点,从分析数据流图和数字字典中可以看出,整个系统功能是围绕“学生住宿”问题进行处理,学生住进宿舍,工作人员管理宿舍,处理宿舍提供的各种服务,另外,还有来访者对学生的来访。
ER图见附件。
三逻辑结构设计
逻辑设计的任务和目标
以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。
由于宿舍与学生是1:n关系,可以将其之间的联系与n端实体学生合并,宿舍和员工,学生和临时设备,学生和来访者也是1:n关系,同样也将其之间的联系与n端实体员工,临时设备,来访者合并,具体的基本E-R图向关系模型的转化如下:
学生住宿表:(学号,姓名,性别,专业,入住时间,联系方式,楼号,宿舍号)宿舍表:(楼号,宿舍号,电话号码,可住人数,已住人数)
员工表:(员工号,员工姓名,性别,职位,家庭地址,联系方式,楼号)
临时设备租赁表:(设备号,设备名,租赁日期,归还日期,租赁费用,学号)
报修表:(楼号,宿舍号,物品号,报修原因,提交日期,解决日期,报修费用)水电费表:(楼号,宿舍号,月份,用电量,电费,用水量,水费)
来访者表:(来访人姓名,被访人姓名,所属关系,证件名称,来访日期,来访时间,结束时间,学号)
由以上分析,得出上述7个表格结构如下:
学生住宿表,主要记录学生住宿的基本信息。
四物理结构设计
数据库的物理设计就是为逻辑数据模型选取一个最合适应用要求的物理结构的过程,在这个阶段中要完成两大任务:
(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
为数据库中各基本表建立的索引如下:
(1)由于基本表学生住宿表的主码学号经常在查询条件和连接操纵的连接条件中出现,且它的值唯一,考虑在学号这个属性上建立唯一性索引;
(2)宿舍表的主码楼号,宿舍号经常在查询条件中出现,且它们的组合值唯一,考虑在它们之上建立组合索引;
(3)基本表学生住宿表的一属性姓名,经常在查询条件中出现,且经常出现在相等的比较条件中,考虑在其之上建立聚簇索引;
(4)由于员工表,报修表,设备租赁表,水电费表,来访者表的属性值经常发生变
更,权衡系统为维护索引付出的代价,暂考虑不建立索引;五数据实施和维护
建立数据库、数据表、视图、索引、导入数据建立数据库
create database 学生宿舍管理系统;
建立数据表
宿舍表
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 建立视图
Create view 物流管理学生住宿表
As
Select 学号,姓名,楼号,宿舍号
From 学生住宿表
Where 专业=’物流管理’;
Create view 22号楼学生住宿表
As
Select 学号,姓名,专业
From 学生住宿表
Where 楼号=’22’;
Create view 管理员信息表
As
Select *
From 员工表
Where 职位=’管理员’;
Create view 4月水电表
As
Select *
From 水电表
Where 月份=’4’;
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 设备租赁表(设备号);
1./*宿舍表格记录拔出*/
Insert into 宿舍表
Values ('27','101','0571********',04,04)
Insert into 宿舍表
Values ('22','111','0571********',04,04)
Insert into 宿舍表
Values ('27','131','0571********',04,04)
截图如下:
2. /*学生住宿表格记录拔出*/
Insert into 学生住宿表
Insert into 学生住宿表
Insert into 学生住宿表
截图如下:
3./*员工表格记录拔出*/
Insert into 员工表
Insert into 员工表
Insert into 员工表
截图如下:
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')
Insert into 水电费表
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 学生住宿表
Delete from 员工表
where 员工号='0103'
Update 宿舍表
Set 已住人数=04
Where楼号='11' and 宿舍号='214';
5.2.2约束条件的增加、删除、修改
1.在学生住宿表中增加一属性为学院,数据类型为varchar(20),
Alter table 学生住宿表 add 学院 varchar(20);
Alter table 学生住宿表 drop column 学院;
3.在设备租赁表中,增加设备名取唯一值的约束条件
Alter table 设备租赁表 add unique(设备名);
Select *
From 员工表
Where 员工姓名='李倩';
2.查询年龄在22岁到32岁的员工号,员工姓名,职位
Select 员工号,员工姓名,职位
From 员工表
Where 年龄 between 22 and 32;
Select *
From 来访者表
Where 来访者姓名 like '黄%';
Select 宿舍表.楼号, 宿舍表.宿舍号,已住人数
From 宿舍表,学生住宿表
Where 姓名='张三' and 宿舍表.楼号=学生住宿表.楼号and 宿舍表.宿舍号=学生住宿表.宿舍号;
Select 学号,姓名,专业,联系方式
From 学生住宿表
Where 楼号='22' and 宿舍号='123';
Select count(学号)
From 学生住宿表
Where 专业='物流专业';
Select *
From 设备租赁表
Where 学号 in (select 学号
From 学生住宿表
Where 姓名='李四');
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图设计,中途不克不及有办点马虎,也体会到把知识应用于实践是不容易的,同时也学生课本所没有的东西,一些问题也只有真正做设计的时候才会出现。
由于时间比较紧,因此我们所做的课程设计肯定还存在许多的缺乏之处,程序中也存在许多小错误。
这将激励我们在以后的学习当中职累更多的经验,努力减少错误的发生。
附件***********。