资源描述
数据库课程设计
题目: 学生公寓管理系统
学院: 信息科学与技术学院
专业:信息与计算科学
姓名:雷帅 徐爱娟
学号:
目录
一引言1
1.1课题背景1
1。2课程设计目的1
1。3课程设计任务1
二 需求分析1
三 系统数据库设计4
3。1概念结构设计.。。.。.....。。.。..。。。。。。。.。。..。。。。....。..。.。...。。.。.。。..。。...。。。.。。.。。。.。。。....。.。.。.。。。.。。。。。。。.。....。4
3.2逻辑结构设计.。。。。...。...。.。。。。。。。。。。。。.。。。.。。。。.。。。。。。。...。..。.。..。。。。。.。。...。....。。。.。.。。。。。。。.。。..。。...。。。.。.。。7
3。3物理结构设计。。。..。。。。.。。。.。。。。.。。。。。。。。。。。。....。。。.。。。.。。。.。。.。。..。.。。.。.。..。。。。。。。。。。。.。.。.....。。。。.....。。.。。..。8
四数据库实现..。..。.。...。.。。。。。。.。。。..。。。.。。.。。。.。.。。。.。..。.。.。。。。..。。..。。。。。。.。。.。。.。。。。。.。。。..。...。。。。。..。.。.。。。。。.。..10
五数据库运行与查询.。。.。...。。。。。。.。。。。。。。.。。...。。。.。..。。.。..。..。。...。.。.。.。。.。。。..。。.。。。。.。.。。.。。。。。.。。。.。...。。.。15
六 人员分工 。.。。。。...。。.。。.。。....。。..。。。。..。.。.。。。。。。..。.。。.。.。。。.。...。。.。。。。。。...。..。。。..。。。。。。..。。.。。。。。。。。.。.。。。.。.。。.。17
六谢辞。.。.。。。。。.。。.。.。。。.。.。.。..。。.。..。。。.。.。。。。。.。。。。。。。。。。。。.。。。.。.。。。。。。。。.。.。。..。。。。。。..。..。。。.。。.。。..。。.。..。。。。。。。。.。。。。。.。..。。。。。。。。。。..17
参考文献。.。...。.。...。。。。。。.。。。。。。。。.。...。。。。..。。。。.。。...。。。..。..。。.。。...。。.。。。。.。。。。。..。..。..。。。。。。。.。。.。。。.。...。.。。.。。。。..。。。。.。。。。。。.。。.。。.。17
0
1 引言
1.1课题背景
目前,校园内的学生住宿已经逐步开始进行公寓化管理。在管理过程中,入住学生信息、来访登记等各种信息内容复杂、数据量大,传统的手工记录方式很难完成快速、准确的查询、统计等管理工作.开发学生公寓管理系统,利用计算机实现管理的信息化,不仅可以节省人力、物力资源,提高管理人员的工作效率,同时也加强了信息的安全性和可靠性。
1.2课程设计目的
(1)通过实践更加深入理解所学数据库理论,通过实际操作巩固所学知识.
(2)熟练掌握对于给定结构的数据库的创建、基本操作、程序系统的建立和调试以及系统评价。
(3)实践和巩固在课堂教学中学习的关于关系数据库原理的有关知识和数据库系统的建立方法,熟练掌握对于给定实际问题,为了建立一个关系数据库信息管理系统,必须得经过系统调研、需求分析、概念设计、逻辑设计、物理设计、系统调试、维护以及系统评价的一般过程,为毕业设计以及将来的系统开发打下基础.
1。3课程设计任务
本课程设计任务是通过开发一个数据库特价机票抢购系统,深入学习和理解数据库系统的设计与开发,开发工具为SQL相关软件。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理和查询功能等。
2需求分析
本系统的用户是学生公寓管理人员和负责老师,他们在日常公寓管理的主要主要工作有:入住学生信息的查询与管理、寝室分配及调整、来访登记等。根据上述需求进行分析,本系统在实现上应该具有如下功能:
◎ 学生基本信息管理,包括学生姓名、学号、所属院系班级、公寓楼号、寝室号等数据。
◎ 寝室使用情况统计,例如房源使用情况、空床统计情况等.
◎ 学生每学期的注册登记,以及住宿费、电费等缴纳情况管理。
◎ 人员来访登记及结束访问的详细记录。
◎ 提供多条件查询功能,以及方便用户对学生基本信息及楼房信息的查询.
◎ 添加、删除、修改用户账户的功能。
根据上述分析,可以设计出此系统的系统体系结构图
学生公寓管理系统
来访登记管理
公寓 管 理
学 生 管 理
系 统 管 理
公寓寝室管理
学生缴费管理
公寓楼房管理
学生基本信息管理
针对各模块功能不同的表实现添加记录、修改记录、删除记录以及查询显示记录等功能
学生公寓管理系统功能模块示意图
开始
重试
用户登录
失败超过3次
否
退出程序
失败 失败
···················································
公寓楼管理信息
学生信息管理
缴费管理
来访登记管理
管理自己的用户信息
管理自己的用户信息
管理普通用户的用户信息
读取用户类型
成功 用户管理模块 学生公寓管理模块
系统流程分析图
3系统数据库设计
3.1 概念结构设计
根据需求分析抽象出信息结构,可得该系统的E—R图.
(1) 学生信息的E—R图,如图3。1所示.
联系方式
公寓号
班级
寝室号
专业
学生
出生日期
学号
性别
姓名
图3。1学生信息E-R图
(2) 公寓信息的E-R图,如图3.2所示。
启用时间
公寓
公寓号
房间数
楼层数
图3.2公寓信息E—R图
(3)寝室信息的E-R图,如图3.3所示。
公寓号
寝室号
寝室
电话
可住人数
住宿费用
图3.3寝室信息E—R图
(4) 交费信息的E—R图,如图3。4所示。
金额
交费
公寓号
交费管理
寝室号
交费时间
图3。4交费信息E—R图
值班人
(5)来访信息的E-R图,如图3。5所示。
来访人姓名
来访信息
人数
事由
来访
时间
被访人姓名
结束
访问
所属
关系
图3.5来访信息E—R图
权限
(6) 操作员信息的E-R图,如图3.6所示.
操作
员ID
操作员
操作员姓名
密码
图3。6操作员信息E—R图
(7)根据分E-R图和需求分析,可得总的基本E-R图,我又通过分析实际情况,对总的ER图继续进行优化,消除不必要的冗余以及我认为一些不必要的信息后得到最终总的E-R图,如图3。7所示
交费时间
房间数
楼层数
联系方式
交费管理
公寓号
班级
启用时间
出生日期
姓名
专业
进行
公寓
交费
学生
住在
11n
n
学号
1
住在
金额
属于
n1
进行
性别
n 1
寝室
寝室号
1
电话
住宿费用
可住人数
图3.7系统总体结构E-R图
3.2 逻辑结构设计
(1) 将图3。7总体概念结构E—R图转化成关系模型.
关系模型:
学生(学号,id,姓名,性别,出生日期,专业,班级,联系方式,公寓号,寝室号)
公寓(公寓号,id,楼层数,房间数,启用时间)
寝室(寝室号,公寓号,id,可住人数,住宿费用,电话)
交费(id,公寓号,寝室号,交费时间,交费类型,金额)
来访(id,来访人姓名,人数,被访者姓名,所属关系,来访时间,结束时间,事由)
操作员(操作员ID,操作员姓名,密码,权限)
(2)数据模型的优化
将转化的关系模式进行优化,最终达到BCNF.
① 确定数据依赖
学生(学号,id,姓名,性别,出生日期,专业,班级,联系方式,公寓号,寝室号)
学号 id ,学号 姓名,学号 性别 ,学号 出生日期
学号 专业,学号 班级,学号 联系方式,学号公寓号
学号寝室号(均为完全函数依赖)
公寓(公寓号,id,楼层数,房间数,启用时间)
公寓号id,公寓号楼层数,公寓号 房间数
公寓号启用时间(均为完全函数依赖)
寝室(寝室号,公寓号,id,可住人数,住宿费用,电话)
由于不同的公寓楼会有相同的寝室号,所以仅仅用寝室号是无法确定一个寝室的,而一个公寓楼里的寝室号是唯一的,所以这里用公寓号和寝室号一起作主键
(寝室号,公寓号)id,(寝室号,公寓号)可住人数,(寝室号,公寓号)住宿费用,(寝室号,公寓号)电话(均为完全函数依赖)
交费(id,公寓号,寝室号,交费时间,交费类型,金额)
Id 公寓号 id 寝室号,id 交费时间
id 交费类型,id 金额(均为完全函数依赖)
来访(id,来访人姓名,人数,被访者姓名,所属关系,来访时间,结束时间,事由)
id 来访人姓名,id 人数,id 被访者姓名,id 所属关系
id 来访时间, id 结束时间,id事由(均为完全函数依赖)
操作员(操作员ID,操作员姓名,密码,权限)
操作员ID 操作员姓名,操作员ID 密码,操作员ID 权限(均为完全函数依赖)
②对各关系模式间数据依赖进行极小化处理,消除冗余
通过分析发现其关系中都没有数据的冗余:学生关系中学号Sno决定公寓号和寝室号,公寓关系中公寓号作为主键,而寝室关系中,虽然寝室是在公寓里的,但是这里的寝室实体是指所有学生公寓里的寝室,所以仅仅是寝室号无法唯一的确定一个寝室,这里用(寝室号+公寓号)共同作为主键来唯一确定一个寝室,交费关系中,这里用记录编号作为主键,每条记录对应一个寝室的交费信息,同样由于交费是以寝室为单元的,所以也可以用(寝室号+公寓号)为主键。
③消除传递依赖
由以上分析可知各关系中的函数依赖都是完全函数依赖,而且没有传递函数依赖,所以此关系模型满足BCNF,尽管模型可以继续优化,但在实际中此模型已经满足要求。
3.3物理结构设计
表3。1 学生信息表的结构
编号
字符名称
数据类型
长度
说明
1
id
int
4
记录编号,不允许空
2
学号
nvarchar
30
学生学号,主键
3
姓名
nvarchar
20
允许空
4
性别
char
2
不允许空
5
出生日期
smalldatetime
4
允许空
6
专业
nvarchar
20
允许空
7
班级
nvarchar
20
允许空
8
联系方式
nvarchar
20
允许空
9
公寓号
nvarchar
10
允许空
10
寝室号
nvarchar
10
允许空
11
备注
nvarchar
50
允许空
表3。2 公寓信息表的结构
编号
字符名称
数据类型
长度
说明
1
id
int
4
记录编号,不允许空
2
公寓号
nvarchar
10
公寓楼编号,主键
3
楼层数
int
4
允许空
4
房间数
int
4
允许空
5
启用时间
smalldatetime
4
允许空
6
备注
nvarchar
50
允许空
表3.3 寝室信息表的结构
编号
字段名称
数据类型
长度
说明
1
id
int
4
记录编号,不空
2
寝室号
nvarchar
10
主键
3
可住人数
int
4
允许空
4
住宿费用
float
8
允许空
5
电话
nvarchar
10
允许空
6
公寓号
nvarchar
10
主键
7
备注
nvarchar
50
允许空
表3。4 交费信息表的结构
编号
字段名称
数据类型
长度
说明
1
id
int
4
编号,主键
2
公寓号
nvarchar
10
允许空
3
寝室号
nvarchar
10
允许空
4
交费时间
smalldatetime
4
允许空
5
交费类型
smalldatetime
10
允许空
6
金额
nvarchar
8
允许空
7
备注
nvarchar
50
允许空
表3。5 来访信息表的结构
编号
字段名称
数据类型
长度
说明
1
id
int
4
记录编号,主键
2
来访人姓名
nvarchar
10
允许空
3
人数
int
4
允许空
4
被访者姓名
nvarchar
10
允许空
5
所属关系
nvarchar
10
允许空
6
来访时间
smalldatetime
4
允许空
7
结束时间
smalldatetime
4
允许空
8
事由
nvarchar
50
允许空
9
值班人
nvarchar
10
允许空
表3。6 操作员信息表的结构
编号
字段名称
数据类型
长度
说明
1
id
int
4
编号,主键
2
操作员ID
nvarchar
10
允许空
3
操作员姓名
nvarchar
10
允许空
4
密码
nvarchar
10
允许空
5
权限
char
6
允许空
6
备注
nvarchar
50
允许空
四数据库实现
4.1创建学生信息表
createtableStudent——创建学生信息表
(idintnotnull,——记录编号,不空
Snonvarchar(30)primarykey,—-学号,主键
Snamenvarchar(20),—-姓名
Ssexchar(2)notnull,,-—性别
Sbirthsmalldatetime,——出生日期
Sdeptnvarchar(20),——专业
Sclassnvarchar(20),——班级
Sphonenvarchar(20),—-联系方式
Sbuildnvarchar(10),--公寓号
Sroomnvarchar(10),——寝室号
Sothernvarchar(50),-—备注
foreignkey(Sbuild)referencesBuilding(Sbuild),——学生公寓关系
FOREIGNKEY(Sroom,Sbuild)REFERENCESDorm(Sroom,Sbuild),--学生寝室关系
)
4。2创建公寓信息表
createtableBuilding——公寓信息表
(idintnotnull,--记录编号,不空
Sbuildnvarchar(10)primarykey,-—公寓号,主键
floornumint,--楼层数
roomnumint,—-房间数
usetimesmalldatetime,--启用时间
Bothernvarchar(50),—-备注
)
4。3创建寝室信息表
createtableDorm--寝室信息表
(idintnotnull,—-记录编号
Sroomnvarchar(10),--寝室号
Dnumint,——可住人数
Dfeefloat(8),—-住宿费用
Dphonenvarchar(10),--电话
Sbuildnvarchar(10),——公寓号
Dothernvarchar(50),--备注
primarykey(Sroom,Sbuild),--主键
)
4.4创建交费信息表
createtablePay——交费
(idintprimarykey,—-记录编号,主键
Sbuildnvarchar(10),—-公寓号
Sroomnvarchar(10),-—寝室号
paytimesmalldatetime,——交费时间
paytypenvarchar(10),——交费类型
Pfeefloat(8),——金额
Pothernvarchar(50),-—备注
foreignkey(Sroom,Sbuild)referencesDorm(Sroom,Sbuild),—-交费公寓关系
)
4。5创建来访信息表
createtableVisit——来访登记表
(idintprimarykey,—-记录编号,主键
Vnamenvarchar(10),—-来访人姓名
Vnumint,-—来访人数
Vnamednvarchar(10),--被访人姓名
relatnvarchar(10),—-所属关系
Vtimesmalldatetime,—-来访时间
Vendsmalldatetime,-—结束时间
reasonnvarchar(50),—-事由
watchnvarchar(10),——值班人
)
4.6创建操作员信息表
createtableOperator——操作员信息表
(idintprimarykey,-—记录编号,主键
Oidnvarchar(10),——操作员id
Onamenvarchar(10),-—操作员姓名
Opassnvarchar(10),-—密码
Olimitchar(6),——权限
Oothernvarchar(50),——备注
)
4。7关系图如下
4。8插入数据
—-插入公寓楼
insertintoBuilding
values(’0001’,'01’,’05','100','2000—1-2’,'无’)
insertintoBuilding
values('0002’,'02’,’05',’100’,’2001-4—2',’无')
insertintoBuilding
values(’0003’,’03’,’06’,'150',’2002—6—12’,'无’)
insertintoBuilding
values(’0004’,'04','05’,’100','2005-10-2’,’无’)
insertintoBuilding
values('0005’,'05','05',’100',’2007-1—12’,’无’)
select*fromBuilding
-—插入寝室信息
insertintoDorm
values(’0001’,’1-101’,'4’,'1000’,’45216535’,’01','无')
insertintoDorm
values(’0002’,’2—101','4’,'1000’,’45216534',’01’,'无’)
insertintoDorm
values(’0003',’1-101’,’4',’1000’,’45256535’,’02',’无')
insertintoDorm
values('0004’,’2—101’,'4’,’1000','45816535’,’02’,’无’)
insertintoDorm
values(’0005',’1-101’,’6’,’1000’,’45258735',’03’,’无')
insertintoDorm
values(’0006’,’2—101',’6',’1000’,'41256535’,’03','无’)
select*fromDorm
--插入学生信息
insertintoStudent
values('0001’,'20100001',’张一’,’男’,'1991—1-2',’信科’,'一班','45648922',’01’,'1—101',’无')
insertintoStudent
values('0002',’20100002',’张二’,’男’,’1991-10-2','信科',’二班’,’45656922’,’01’,’2-101’,'无')
insertintoStudent
values('0003',’20100003’,’张三’,’男’,'1992-1—2','通信’,’一班’,'45848922’,'02','1-101’,’无')
insertintoStudent
values(’0004',’20100004',’张四','男’,'1994—1-12’,’计本’,’三班’,’45588922’,’02’,’1—101’,’无')
insertintoStudent
values('0005’,'20100005',’张五',’女’,’1991—5—2’,'计本’,’一班’,'45658922’,’03’,'1-101’,'无’)
insertintoStudent
values(’0006’,’20100006’,’张六’,'女','1991—11—2',’通信’,'一班’,’45468922’,’03','2-101’,’无’)
insertintoStudent
values(’0007',’20100007',’张七’,'女’,'1990-4-2’,'信科',’一班',’45596922','03',’1—101’,’无’)
insertintoStudent
values(’0008’,’20100008’,’张八’,'女’,’1991—3—1’,’信科’,’二班','45648542','03’,'2-101’,’无’)
insertintoStudent
values(’0009’,’20100009',’张九','男’,'1991—2—9’,’信科’,'一班’,’41248922’,’01’,'1-101',’无’)
insertintoStudent
values('0010','20100010',’张十’,'男’,’1991—3—5',’通信',’一班','45641522’,’02',’1-101’,’无’)
select*fromStudent
—-插入缴费信息
insertintoPay
values(’0001’,’01',’1-101’,’2010—5—1’,’水电费',’86’,'无’)
insertintoPay
values('0002',’01’,'2—101’,’2010-5—1’,’水电费’,’70','无’)
insertintoPay
values(’0003’,’02',’1—101',’2010—5—1’,’水电费’,'56’,’无')
insertintoPay
values(’0004’,’03’,’1—101’,'2010—5—1','水电费’,’90’,'无’)
insertintoPay
values(’0005’,’03','2—101’,’2010-5—1’,’水电费’,’80’,’无’)
select*fromPay
-—插入来访信息
insertintoVisit
values('0001’,’李四’,'1’,’张四',’朋友’,’2010-5-3’,’2010—5—3',’玩’,’王五’)
insertintoVisit
values(’0002',’赵六’,’2','张二','同学','2010-7-3’,’2010-7—5’,’玩’,’王五’)
select*fromVisit
——插入操作员信息
insertintoOperator
values(’0001’,'425001',’李飞’,’001240’,'',’’)
select*fromOperator
4。9设置触发器
createtriggerInsert_or_Update_Dnum
beforeinsertorupdateonDorm
foreachrow
asbegin
if (new。Sbuild='01’)and(new。Dnum>4)then
new。Dnum:=4;
endif;
end;
对寝室人数设置触发器,当人数超过4时自动改为4,同样可对公寓楼02,03,04设置,而对公寓楼05和06设置寝室人数为6。
同时还可以对寝室费用的设置触发器,寝室费用都是1000快,当输入数据不等于1000时,自动改为1000.
五 数据库运行
六 人员分工
徐爱娟同学主要负责选题,确定课设的目的以及课设的任务,还有对问题需求的分析,系统流程的设计,模块的分类和系统概念结构的设计,对E—R图的设计等工作,雷帅同学主要负责对系统逻辑结构的设计以及优化,还有对物理结构的设计以及实现和数据库的实现以及运行和维护等工作
七 谢辞
在整个课程设计过程中,我的指导老师严谨的治学精神、深厚的理论水平,特别是他独特的思路,使我获益匪浅;他孜孜不倦地解答我在课程设计中遇到的各种各样的问题,使我对数据库理论知识和实际应用有了进一步的结合,这里我对他表示衷心感谢。
参考文献:
[1] 王珊 萨师煊.《数据库系统概论》高等教育出版社2006.5第4版
[2] 伊文敏 刘峰 王颖。《Delphi+SQL Sever数据库应用实例》人民邮电出版社 2006。12第1版
11
展开阅读全文