课程设计报告课程设计题目:酒店管理系统数据库的设计与实现
专业:
班级:
姓名:
学号:
指导教师:
年月日
一、试验的时间地点
试验时间:20xx年xx月xx日——20xx年xx月xx日(12周)
试验地点:软件楼305
二、试验目的
通过本次课程设计能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高我的分析问题和解决问题的能力以及我的动手能力。
三、课程设计要求
1.对各个系统进行系统功能需求分析。
2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)。
3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定。
4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引。
5. 根据系统功能需求设计相应的查询视图。
6. 要求根据系统功能需求建立存储过程。
7. 根据功能需求建立相应的触发器以保证数据的一致性。
四、需求分析
通过对酒店业经营管理的调查发现,酒店管理系统数据库的设计应提供以下几点功能:
(1)管理客人的个人信息。
(2)管理客房的状态信息。
(3)数据安全良好,不易被窃取和非法利用。
五、设计思路
1.首先建立了3张表,分别是:客人信息,客房信息和入住信息
这三张表具有共同的属性是房间号,并通过该属性将3张表联系起来。
通过概念结构设计将需求分析得到的用户需求抽象为信息结构,概念模型作为概念结构设计的表达工具,为数据库提供一个说明性结构,是设计数据库逻辑结构即逻辑模型的基础。因此,概念模型必须具备以下特点:
(1)语意表达能力丰富。
(2)易于交流和理解。
(3)易于修改和扩充。
(4)易于向各种数据模型转换。
2.E-R图
客人信息局部e-r图:
客房信息局部e-r图:
入住信息局部e-r图:
3.代码以及步骤
3.1在服务器的“数据库”文件夹右键点击,选择“新建数据库”,并命名为:酒店管理数据库。
3.2打开查询分析器,输入一下代码:
--建表
create table 客人信息
( 姓名char(10) NOT NULL,
房间号char(10),
身份证号char(20) PRIMARY KEY
)
create table 客房信息
( 房间号char(10),
规格char(10),
价格char(10)
)
create table 入住信息
( 房间号char(10),
是否入住char(2) DEFAULT '否',
入住时间char(10) not null
)
--插入(客人信息)数据
insert into 客人信息(姓名,房间号,身份证号)
values ('朱恒','000','120102************')
insert into 客人信息(姓名,房间号,身份证号)
values ('罗文钦','001','123456789012345678')
insert into 客人信息(姓名,房间号,身份证号)
values ('舒浩','002','012345678912345678')
--插入(客房信息)数据
insert into 客房信息(房间号,规格,价格)
values ('000','标准','100¥')
insert into 客房信息(房间号,规格,价格)
values ('001','标准','100¥')
insert into 客房信息(房间号,规格,价格)
values ('002','标准','100¥')
--插入(入住信息)数据
insert into 入住信息(房间号,是否入住,入住时间)
values ('000','是','2010.11.25')
insert into 入住信息(房间号,是否入住,入住时间)
values ('001','是','2010.11.24')
insert into 入住信息(房间号,是否入住,入住时间)
values ('002','是','2010.11.24')
--客人信息的增删改
create procedure 录入客人
(
@姓名char(10),
@房间号char(10),
@身份证号char(20)
)
as
insert into 客人信息values(@姓名,@房间号,@身份证号)
EXEC 录入客人@姓名='朱恒',@房间号='000',@身份证号='120102************'
create procedure 修改客人
(
@姓名char(10),
@房间号char(10),
@身份证号char(20)
)
as
update 客人信息
set 姓名=@姓名,房间号=@房间号,身份证号=@身份证号
where @身份证号=身份证号
exec 修改客人@姓名='小猪',@房间号='111',@身份证号='120102************'
create procedure 删除客人
(
@身份证号char(20)
)
as
delete
from 客人信息
where @身份证号=身份证号
EXEC 删除客人@身份证号='120102************'
--客房信息的增删改
create procedure 录入客房
(
@房间号char(10),
@规格char(10),
@价格char(10)
)
as
insert into 客房信息values(@房间号, @规格,@价格)
EXEC 录入客房@房间号='000',@规格='标准',@价格='100¥'
create procedure 修改客房
(
@房间号char(10),
@规格char(10),
@价格char(10)
)
as
update 客房信息
set 房间号=@房间号,规格=@规格,价格=@价格
where @房间号=房间号
exec 修改客房@房间号='111',@规格='豪华',@价格='1000¥'
create procedure 删除客房
( @房间号char(10))
as
delete
from 客房信息
where @房间号=房间号
EXEC 删除客房@房间号='111'
--入住信息的增删改
create procedure 录入入住
(
@房间号char(10),
@是否入住char(2) DEFAULT '否',
@入住时间char(10)
)
as
insert into 入住信息values(@房间号, @是否入住,@入住时间)
EXEC录入入住@房间号='000',@是否入住='是',@入住时间='2010.11.25'
create procedure 修改入住
(
@房间号char(10),
@是否入住char(2) DEFAULT '否',
@入住时间char(10)
)
as
update 入住信息
set 房间号=@房间号,是否入住=@是否入住,入住时间=@入住时间
where @房间号=房间号
exec 修改入住@房间号='111',@是否入住='是',@入住时间='2010.11.26'
exec 修改入住@房间号=’000’,@是否入住=’否’,@入住时间=’’
create procedure 删除入住
(
@房间号char(10)
)
as
delete
from 入住信息
where @房间号=房间号
EXEC 删除入住@房间号='111'
--视图的建立
Create view total_view (房间号,姓名,身份证号,价格,规格,是否入住,入住时间)
AS SELECT 客人信息. 房间号,姓名,身份证号,价格,规格,是否入住,入住时间FROM 客人信息,客房信息,入住信息
WHERE 客人信息.房间号=客房信息.房间号and 客房信息.房间号=入住信息.房间号
--视图查询
Select * from 客人信息,客房信息,入住信息
Where 客人信息,房间号=客房信息.房间号and 客房信息.房间号=入住信息.房间号
--建立触发器,实现联动删除功能
create trigger Displaydel
on 客人信息
for delete
as
delete from 客房信息where in(select 房间号from deleted)
delete from 入住信息where in(select 房间号from deleted)
--执行退房(预设的是001房间)
Delete from 客人信息where 房间号= ‘001’
六、实验总结
通过一周的课程设计,完成了一个简单的酒店管理数据库,并成功实现了各要求所需功能。
首先,在设计方面,考虑到数据的冗余及冲突等问题,将客人信息、客房信息、入住信息分别存储到三个表中,考虑了客人信息数据,客房信息数据及入住信息数据的独立性问题。其次,在设计表时,注意了数据的数据类型及长度的选择,考虑各种数据的添加情况,如是否入住的选项,在添加该项时将“否”设置为默认情况,同时还要保证不浪费数据的存储空间。第三,使用了视图view,实现数据的保密性,将客人客房信息以视图方式存放,在数据查询时使用视图查询。第四,对于各功能的实现,均使用了存储过程procedure,通过传递参数得到想要的结果。第四,在本系统中使用了触发器trigger,触发器用于响应数据库更新,因此在删除信息时,我使用了触发器,在信息删除后,显示其余信息,用来确认信息是否成功删除。
但由于个人的经验、知识等方面的不足,并且时间比较匆忙,本系统还存在着许多缺陷。首先,在需求分析时,未能做到完全满足用户需要,而且整个系统漏洞很多,对表的设计也不够完善,对数据的完整性,独立性等方面的要求考虑的还不够充分。其次,本系统可以与VC,VB等编译工具相互配合,使其实现的更人性化,界面化,操作更方便,安全性更好。
在本系统中,还有很多需改进的地方,相信通过一点点的改善,该系统会更完善。
七、心得体会
通过这次课程设计,我了解到自身在许多相关知识方面都认识得不够深刻,致使在实际的运行操作中遇到许多困难与阻碍。在实验过程中,许多问题都在与同学的讨论中得到解决,并在讨论过程中,又对所学有了新的体会,学到了更多的知识。经过一周的课程设计,体会到想要做一个完善的,功能全面的数据库,仅仅依靠课本上学习的知识是远远不够的,不仅仅相关的专业知识要熟练运用,对所做的系统用途也要充分了解,等等这些都要花费时间与精力。在设计过程中,发现到合作的重要性,相互之间的沟通对系统的完成也有很大帮助。总之,这一周的课程设计,不仅仅是一次简单的见习,对以后的工作与生活都是一次经验的积累。