课程设计报告
课程设计题目:《数据库》客房信息管理系统
学生姓名: 汪世生
专 业: 软件工程
班 级: 1521822z (卓越班)
学 号: [1**********]5
指导教师:江霞
2016年 1月 6日
目录(Contents)
第 3-4页………………………………课程设计相关要求
第5-6页
第 7 页 …………………………………ER 图
第 8 页 ………………………………ER 图转为关系模式
第 9页 ………………………………数据库表的数据字典
第10-11
第12-16页 …………………………………创建数据库及
各表、视图、存储过程、触发器的SQL 代码
第17-21 第 22 页 …………………………………….. 总结
一、课程设计相关要求 1.课程设计的目的和意义
《数据库应用开发课程设计》是实践性教学环节之一,是《数据库原理及应用》课程的辅助教学课程。通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。
2.设计要求
通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL 语言实现数据库的建立、应用和维护。 (1) 根据题目写出需求分析(详细的功能描述) (2) 画出全局E-R 图
(3) 将E-R 图转换为关系模式,定义主键、外键
(4) 在SQL Server中创建数据库及数据表(至少3个数据表), 定义约束。 (5) 输入数据,至少创建4个视图,便于用户查看数据,数据可涉及多个表。 (6) 至少创建3个存储过程,实现系统的主要功能
(7) 创建1个登录、数据库用户,并分配数据库管理员权限。
(8) 至少创建2个触发器,保证数据的正确性、数据的自动更新。 (9) 为数据库做完全备份
成果: 报告,数据库文件(mdf和ldf) ,备份文件(bak), 前台程序(VB 或其他语言实现)。
3.本课程设计内容与要求
掌握数据库的设计的每个步骤,以及提交各步骤所需图表和文档。通过使用目前流行的DBMS ,建立所设计的数据库,并在此基础上实现数据库查询、连接等操作和触发器、存储器等对象设计。
(1)需求分析:根据自己的选题,给出功能模块图和必要的文字说明。 (2)概念结构设计:绘制所选题目详细的E-R 图。
(3)逻辑结构设计:将E-R 图转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求;根据局部应用需要设计外模式。
(4)物理结构设计:选定实施环境,存取方法等。
(5)数据实施和维护:用DBMS 建立数据库结构,加载数据,实现各种查询、链接应用程序,设计库中触发器、存储器等对象,并能对数据库做简单的维护操作。
(6)成果:课程设计报告,程序,数据文件,日志文件,备份文件
4.课程设计报告要求
课程设计报告有四个方面的要求:
(1) 问题描述。包括此问题的理论和实际两方面。
(2)解决方案。包括:E-R 模型要设计规范、合理,关系模式的设计至少要满足第三范式,数据库的设计要考虑安全性和完整性的要求。
(3)解决方案中所设计的E-R 模型、关系模式的描述与具体实现的说明。 (4)具体的解决实例。
二 需求分析阶段 1. 需求
进行数据库系统设计,首先要对系统的现状进行分析,明确客房信息管理系统的相关需求
课程设计所要实现的目标、需求和功能,制定和选择一个较好的系统方案,有计划,有头绪,有思路,不能盲目的就着手去做,从而达到一个合理的优化系统。需求分析在于弄清这次课程设计的酒店管理系统的确切要求,因此,数据库课程设计的第一步就是明确数据库的目的和如何使用该系统。明确目的之后,才可以确定自己需要保存那些表信息,以及每个表中需要保存哪些字段。对于酒店客房管理系统,需要了解以下内容: 1.1信息管理 (1)个人信息 (2)用户信息 (3)客户信息 (4)房间信息
(5)订单信息(输入房号,结束账)
1.3房间管理 (1)查看客房信息 (2)空房统计 (3)添加房间
(4)删除房间(有人预定的也会删除)
2. 功能预览图
四 ER 转为关系模式
1. 工作人员(工作人员ID 号(主键) , 管理员ID(外键))
2. 管理员(管理员ID(主键))
3. 客户(客户ID 号(主键) ,姓名,性别,外键))
4. 房间(房间号(主键) ,类型,价格,状态,客户姓名,性别,电话,客户ID 号(外键) ,管理员ID(外键))
5. 管理(客户ID 号(主键) ,工作人员ID 号(主键) ,客户姓名,客户性别,客户电话)
1. 数据项
1. 客房信息表room
2. 客户信息表 customer
3. 退/订房表checkinout
4. 退/订房表checkinout
七. SQL代码
客房信息管理:客房房号,类型,价格,状态等信息录入
客户信息管理:客户信息录入、修改、删除(客户身份证号,姓名,性别,联系电话)
客房信息查询:按类型、状态(是否为空)、房号等关键字查询客房的基本信息和入住情况
入住、退房、结算、账单打印` create database cus_room on primary (
name =cus_room,
filename ='e:\数据库\cus_room.mdf', size =10, maxsize =50, filegrowth =2) log on (
name =cus_room1,
filename ='e:\数据库\cus_room.ldf',
size =10, maxsize =50, filegrowth =2) use cus_room
create table room (
rnum varchar (10) constraint pk_rnum primary key not null, rtype varchar (20), rprice decimal ,
rstate varchar (15)) create table customer (
cid varchar (20) constraint pk_cid primary key not null, cname varchar (20),
csex char (2) constraint ck_csex check (csex =' 男' or csex =' 女' ),
cphone varchar (15)) create table checkinout (
datein datetime , dateout datetime ,
cid varchar (20) constraint fo_cid foreign key references customer (cid ) on update cascade on delete cascade , --当对应主键(cid)发生改变时,该字段对应数据也会发生修改
rnum varchar (10) constraint fo_rnum foreign key references room (rnum ) on update cascade on delete cascade , --当对应主键(rnum)发生改变时,该字段对应数据也会发生修改 constraint two_pk primary key (cid , rnum ))
--创建视图view1 用于结算房租
create view view1 as
select room . rnum , customer . cid , rprice , datein , dateout from room , customer , checkinout
where room . rnum =checkinout . rnum and customer . cid =checkinout . cid drop view view1
select *from view1
--创建视图view2,用于订房对象(人)的选择
create view view2 as
select customer . cid from customer where cid not in
(select cid from checkinout where customer . cid =checkinout . cid ) select * from view2
--创建视图view3,用于订房对象(房号)的选择 create view view3 as
select room . rnum from room
where rnum not in
(select rnum from checkinout where room . rnum =checkinout . rnum ) select * from view3
--创建视图view4, 用于综合查询
create view view4 as
select
room . rnum , customer . cid , cname , csex , cphone , rprice , rtype , dat ein
from room , customer , checkinout
where room . rnum =checkinout . rnum and customer . cid =checkinout . cid --drop view view4 select *from view4
--创建视图view5,用于综合查询对象(人)的选择 create view view5 as
select customer . cid from customer select * from view5
--创建视图view6,用于订房对象(房号)的选择 create view view6 as
select room . rnum from room select * from view6
--创建存储过程p1, 用于综合查询的按cid(身份证号) 查询 create procedure p1(@cid varchar (20)) as
if exists (select * from view4 where cid =@cid) select * from view4 where cid =@cid else
print ' 该客户暂时没有订房'
--drop proc p1 p1'123'
--创建存储过程p2, 用于综合查询的按客房rtype(类型) 查询 create procedure p2(@rtype varchar (10)) as
select * from room where rtype =@rtype p2' 单人'
--创建存储过程p3, 用于综合查询的按客房rstate(状态) 查询 create procedure p3(@rstate varchar (10)) as
select * from room where rstate =@rstate p3' 有'
--创建触发器tr1, 当chechinout(客房记录) 表有人退房时,删除customer(客户信息) 表中对应的客户信息
create trigger tr1 on checkinout for delete as
delete from customer where cid =(select cid from deleted ) --drop trigger tr1
--创建触发器tr2,当chechinout(客房记录) 表有用户订房时,room 表对应的房号的状态更新为' 无' create trigger tr2 on checkinout for insert as
update room set rstate =' 无' where rnum =(select rnum from
inserted )
--drop trigger tr2
--创建触发器tr3,当chechinout(客房记录) 表有用户退房时,room 表对应的房号的状态更新为' 有' create trigger tr3 on checkinout for delete as
update room set rstate =' 有' where rnum =(select rnum from deleted )
--drop trigger tr3
八 实例演示 1. 管理员登录
2. 管理入口选择界面
3. 信息的增、删、改
3.1客房信息的录入
3.2 客房信息的修改
3.3客房信息的删除
3.3客房信息的删除
4. 客户信息的录入
5. 综合查询
5.1按房号查询
5.2按身份证号查询
5.3按客房类型查询
5.4按客房状态查询
九.总结
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R 图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,增强了自己在数据库中应用SQL 语言的灵活性,其中包括,插入、删除、修改、查询, 牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也上网查了不少资料,也看了一些别人设计的旅馆管理信息系统的设计报告,学以致用,自我创新,完成了这份自己的报告,从中在学到用,从用又到学,受益匪浅。
课程设计报告
课程设计题目:《数据库》客房信息管理系统
学生姓名: 汪世生
专 业: 软件工程
班 级: 1521822z (卓越班)
学 号: [1**********]5
指导教师:江霞
2016年 1月 6日
目录(Contents)
第 3-4页………………………………课程设计相关要求
第5-6页
第 7 页 …………………………………ER 图
第 8 页 ………………………………ER 图转为关系模式
第 9页 ………………………………数据库表的数据字典
第10-11
第12-16页 …………………………………创建数据库及
各表、视图、存储过程、触发器的SQL 代码
第17-21 第 22 页 …………………………………….. 总结
一、课程设计相关要求 1.课程设计的目的和意义
《数据库应用开发课程设计》是实践性教学环节之一,是《数据库原理及应用》课程的辅助教学课程。通过课程设计,使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容,使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现,把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力和创新能力。
2.设计要求
通过设计一完整的数据库,使学生掌握数据库设计各阶段的输入、输出、设计环境、目标和方法。熟练掌握两个主要环节——概念结构设计与逻辑结构设计;熟练的使用SQL 语言实现数据库的建立、应用和维护。 (1) 根据题目写出需求分析(详细的功能描述) (2) 画出全局E-R 图
(3) 将E-R 图转换为关系模式,定义主键、外键
(4) 在SQL Server中创建数据库及数据表(至少3个数据表), 定义约束。 (5) 输入数据,至少创建4个视图,便于用户查看数据,数据可涉及多个表。 (6) 至少创建3个存储过程,实现系统的主要功能
(7) 创建1个登录、数据库用户,并分配数据库管理员权限。
(8) 至少创建2个触发器,保证数据的正确性、数据的自动更新。 (9) 为数据库做完全备份
成果: 报告,数据库文件(mdf和ldf) ,备份文件(bak), 前台程序(VB 或其他语言实现)。
3.本课程设计内容与要求
掌握数据库的设计的每个步骤,以及提交各步骤所需图表和文档。通过使用目前流行的DBMS ,建立所设计的数据库,并在此基础上实现数据库查询、连接等操作和触发器、存储器等对象设计。
(1)需求分析:根据自己的选题,给出功能模块图和必要的文字说明。 (2)概念结构设计:绘制所选题目详细的E-R 图。
(3)逻辑结构设计:将E-R 图转换成等价的关系模式;按需求对关系模式进行规范化;对规范化后的模式进行评价,调整模式,使其满足性能、存储等方面要求;根据局部应用需要设计外模式。
(4)物理结构设计:选定实施环境,存取方法等。
(5)数据实施和维护:用DBMS 建立数据库结构,加载数据,实现各种查询、链接应用程序,设计库中触发器、存储器等对象,并能对数据库做简单的维护操作。
(6)成果:课程设计报告,程序,数据文件,日志文件,备份文件
4.课程设计报告要求
课程设计报告有四个方面的要求:
(1) 问题描述。包括此问题的理论和实际两方面。
(2)解决方案。包括:E-R 模型要设计规范、合理,关系模式的设计至少要满足第三范式,数据库的设计要考虑安全性和完整性的要求。
(3)解决方案中所设计的E-R 模型、关系模式的描述与具体实现的说明。 (4)具体的解决实例。
二 需求分析阶段 1. 需求
进行数据库系统设计,首先要对系统的现状进行分析,明确客房信息管理系统的相关需求
课程设计所要实现的目标、需求和功能,制定和选择一个较好的系统方案,有计划,有头绪,有思路,不能盲目的就着手去做,从而达到一个合理的优化系统。需求分析在于弄清这次课程设计的酒店管理系统的确切要求,因此,数据库课程设计的第一步就是明确数据库的目的和如何使用该系统。明确目的之后,才可以确定自己需要保存那些表信息,以及每个表中需要保存哪些字段。对于酒店客房管理系统,需要了解以下内容: 1.1信息管理 (1)个人信息 (2)用户信息 (3)客户信息 (4)房间信息
(5)订单信息(输入房号,结束账)
1.3房间管理 (1)查看客房信息 (2)空房统计 (3)添加房间
(4)删除房间(有人预定的也会删除)
2. 功能预览图
四 ER 转为关系模式
1. 工作人员(工作人员ID 号(主键) , 管理员ID(外键))
2. 管理员(管理员ID(主键))
3. 客户(客户ID 号(主键) ,姓名,性别,外键))
4. 房间(房间号(主键) ,类型,价格,状态,客户姓名,性别,电话,客户ID 号(外键) ,管理员ID(外键))
5. 管理(客户ID 号(主键) ,工作人员ID 号(主键) ,客户姓名,客户性别,客户电话)
1. 数据项
1. 客房信息表room
2. 客户信息表 customer
3. 退/订房表checkinout
4. 退/订房表checkinout
七. SQL代码
客房信息管理:客房房号,类型,价格,状态等信息录入
客户信息管理:客户信息录入、修改、删除(客户身份证号,姓名,性别,联系电话)
客房信息查询:按类型、状态(是否为空)、房号等关键字查询客房的基本信息和入住情况
入住、退房、结算、账单打印` create database cus_room on primary (
name =cus_room,
filename ='e:\数据库\cus_room.mdf', size =10, maxsize =50, filegrowth =2) log on (
name =cus_room1,
filename ='e:\数据库\cus_room.ldf',
size =10, maxsize =50, filegrowth =2) use cus_room
create table room (
rnum varchar (10) constraint pk_rnum primary key not null, rtype varchar (20), rprice decimal ,
rstate varchar (15)) create table customer (
cid varchar (20) constraint pk_cid primary key not null, cname varchar (20),
csex char (2) constraint ck_csex check (csex =' 男' or csex =' 女' ),
cphone varchar (15)) create table checkinout (
datein datetime , dateout datetime ,
cid varchar (20) constraint fo_cid foreign key references customer (cid ) on update cascade on delete cascade , --当对应主键(cid)发生改变时,该字段对应数据也会发生修改
rnum varchar (10) constraint fo_rnum foreign key references room (rnum ) on update cascade on delete cascade , --当对应主键(rnum)发生改变时,该字段对应数据也会发生修改 constraint two_pk primary key (cid , rnum ))
--创建视图view1 用于结算房租
create view view1 as
select room . rnum , customer . cid , rprice , datein , dateout from room , customer , checkinout
where room . rnum =checkinout . rnum and customer . cid =checkinout . cid drop view view1
select *from view1
--创建视图view2,用于订房对象(人)的选择
create view view2 as
select customer . cid from customer where cid not in
(select cid from checkinout where customer . cid =checkinout . cid ) select * from view2
--创建视图view3,用于订房对象(房号)的选择 create view view3 as
select room . rnum from room
where rnum not in
(select rnum from checkinout where room . rnum =checkinout . rnum ) select * from view3
--创建视图view4, 用于综合查询
create view view4 as
select
room . rnum , customer . cid , cname , csex , cphone , rprice , rtype , dat ein
from room , customer , checkinout
where room . rnum =checkinout . rnum and customer . cid =checkinout . cid --drop view view4 select *from view4
--创建视图view5,用于综合查询对象(人)的选择 create view view5 as
select customer . cid from customer select * from view5
--创建视图view6,用于订房对象(房号)的选择 create view view6 as
select room . rnum from room select * from view6
--创建存储过程p1, 用于综合查询的按cid(身份证号) 查询 create procedure p1(@cid varchar (20)) as
if exists (select * from view4 where cid =@cid) select * from view4 where cid =@cid else
print ' 该客户暂时没有订房'
--drop proc p1 p1'123'
--创建存储过程p2, 用于综合查询的按客房rtype(类型) 查询 create procedure p2(@rtype varchar (10)) as
select * from room where rtype =@rtype p2' 单人'
--创建存储过程p3, 用于综合查询的按客房rstate(状态) 查询 create procedure p3(@rstate varchar (10)) as
select * from room where rstate =@rstate p3' 有'
--创建触发器tr1, 当chechinout(客房记录) 表有人退房时,删除customer(客户信息) 表中对应的客户信息
create trigger tr1 on checkinout for delete as
delete from customer where cid =(select cid from deleted ) --drop trigger tr1
--创建触发器tr2,当chechinout(客房记录) 表有用户订房时,room 表对应的房号的状态更新为' 无' create trigger tr2 on checkinout for insert as
update room set rstate =' 无' where rnum =(select rnum from
inserted )
--drop trigger tr2
--创建触发器tr3,当chechinout(客房记录) 表有用户退房时,room 表对应的房号的状态更新为' 有' create trigger tr3 on checkinout for delete as
update room set rstate =' 有' where rnum =(select rnum from deleted )
--drop trigger tr3
八 实例演示 1. 管理员登录
2. 管理入口选择界面
3. 信息的增、删、改
3.1客房信息的录入
3.2 客房信息的修改
3.3客房信息的删除
3.3客房信息的删除
4. 客户信息的录入
5. 综合查询
5.1按房号查询
5.2按身份证号查询
5.3按客房类型查询
5.4按客房状态查询
九.总结
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R 图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,增强了自己在数据库中应用SQL 语言的灵活性,其中包括,插入、删除、修改、查询, 牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也上网查了不少资料,也看了一些别人设计的旅馆管理信息系统的设计报告,学以致用,自我创新,完成了这份自己的报告,从中在学到用,从用又到学,受益匪浅。