酒店客房管理系统数据库设计.docx
《酒店客房管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《酒店客房管理系统数据库设计.docx(24页珍藏版)》请在冰豆网上搜索。
酒店客房管理系统数据库设计
酒店客房管理系统数据库设计
LT
1.数据库需求分析·······································4
1.1设计目的·············································4
1.2系统功能分析·········································4
1.3功能模块设计·········································5
2.数据库概念结构设计··································6
2.1概念模型·············································6
2.2E-R模型·············································6
3.数据库逻辑结构设计··································8
3.1关系模型设计········································9
3.2数据模型的优化······································9
3.3子模式设计··········································9
4.数据库物理结构设计··································9
4.1存取方式设计·········································9
4.2存储结构设计········································10
5.数据库安全性、完整性设计··························10
5.1主要视图设计········································10
5.2用户权限············································10
6.数据库实现···········································11
6.1编码实现············································11
6.1.1主要数据表的创建···································11
6.1.2主要视图的创建·····································14
6.1.3索引的创建········································14
6.1.4创建用户权限······································14
6.1.5创建存储结构·······································15
7.数据录入调试及运行··································16
8.课程设计总结体会····································18
9.参考文献·············································19
1.数据库需求分析
1.1设计目的
本酒店客房管理系统是为了满足现代酒店的管理需求、提高对顾客的服务质量、方便酒店的管理和运营而设计的一款多功能易操作的基于B/S模式的数据库管理系统。
由于当前的多数酒店都是以人工的方式来统计管理酒店里的各项事务,其中带来了很多的不便,使得酒店的管理也相对比较困难。
对于酒店的营业情况的统计,要耗费很大的人力来进行统计分析。
人工方式的管理也很容易出现管理上的失误。
随着计算机技术和互联网技术的发展,设计一种可以实现自动化管理酒店事务的系统是当前酒店行业的一个迫切要求。
本款酒店客房管理系统就是应运而生的一款快捷酒店管理系统,它可以使酒店人员很方便的管理酒店的各项事务,并将管理的失误降到最低。
本系统通过对不同的人员分配不同的权限可以很好的防止客户以及酒店一些信息的泄露。
酒店会计还可以通过本系统快捷地统计出酒店在特定阶段的营业情况,可以根据分析的结果进行相应业务的调整。
顾客可以通过本系统对入住的体验进行评价或者提出相关的建议,可以使酒店的服务更加完善。
1.2系统功能分析
本系统是为方便酒店管理和日常的营业需要,加入了酒店房间预定功能、顾客入住登记功能、员工维修客房设施记录功能、顾客体验反馈功能、营业情况统计功能。
酒店房间预订系统:
顾客可根酒店客房的一些信息,根据自身需求预定相应的客房,并支付一定的押金,顾客可根据情况选择入住或者退订已预订的房间。
顾客入住登记功能:
当顾客预定好房间选择入住时,系统进入住登记阶段,用户登记自身信息,并根据预定的订单信息办理入住房间。
员工维修记录功能:
当酒店里的服务设施发生故障时,维修人员对故障进行维修,并记录维修的设施名称及其维修时间,以及维修所产生的费用,最后将数据存储在数据库中,并打印凭条以便上报。
顾客体验反馈系统:
当顾客要退房离开时,顾客可根据自身体验对酒店的设施和服务进行相应的评价和对一些问题提出相应的建议便于酒店对此做出改进。
营业情况统计功能:
酒店人员可根据特定阶段的营业状况,对消费记录进行分析,得出相应阶段营业盈亏的原因,并从中提取一些好的建议,以利于酒店的盈利。
1.3功能模块设计
--系统功能模块图—
●有关客房标准的制定、标准信息的输入,包括标准编号、标准名称、房间面积、床位数量、住房单价、是否有空调、电视机、电话以及单独卫生间等。
●客房标准信息的修改、查询等。
●客房基本信息的输入,包括客房编号、客房类型、客房位置、客房单价、备注等。
●客房基本信息的查询、修改,包括客房编号、客房类型、客房位置、客房单价、备注等。
●剩余客房信息的查询等。
●订房信息的输入,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、备注信息等。
●订房信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、备注信息等。
●入住信息的输入,包括客房编号、客房种类、位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、结算日期、备注信息等。
●入住信息的修改和查询,包括客房编号、客房种类、客房位置、客房单价、顾客姓名、顾客身份证号码、入住日期、折扣、结日期、备注信息等。
●员工信息的输入,包括员工工号,员工姓名,性别,年龄,手机号码,酒店编号信息等。
2.数据库概念结构设计
2.1概念模型
●客房标准信息:
客房编号、客房名称、床位数量、住房单价。
●客房信息:
客房编号、客房种类、客房位置、客房单价,客房状态。
●订房信息:
订单编号、客房种类、顾客姓名、顾客身份证号码、订房时间、折扣。
●顾客信息:
顾客姓名、顾客身份证号码、手机号码。
●入住信息:
流水单号、客房编号、客房类型、顾客身份证号码、入住时间、结算时间、职工工号、结算备注。
●职工信息:
工号、职工姓名、职工性别、职工年龄、入职时间、职务。
●酒店信息:
酒店编号、酒店名称、酒店电话。
●物品信息:
物品编号、物品名称、物品类别、物品单价、库存。
●维修信息:
流水单号、维修时间、维修物品、房间编号、维修费用。
2.2E-R图
客房标准信息E-R图
职工信息E-R图
顾客信息E-R图
物品信息E-R图
酒店信息E-R图
房间编号
实体间联系E-R图
3.数据库逻辑结构设计
3.1关系模型设计
客房(客房编号,客房名称,客房类型,床位数量,住房单价,酒店编号)
顾客(顾客身份证号码,顾客姓名,手机号码)
员工(员工工号,员工姓名,员工性别,员工年龄,手机号码,入职时间,职务)
酒店(酒店编号,酒店名称)
物品(物品编号,物品名称,物品单价,物品类型)
入住(流水单号,房间名称,顾客身份证号,入住时间,退房时间,住宿时长,住宿费用)
预定(流水单号,顾客身份证号,房间类型,预定时间,预定入住时长,押金,预定状态)
维修(流水单号,员工工号,房间编号,维修设施名称,维修费用,维修时间)
消费(流水单号,入住单号,消费物品名称,消费量,消费金额)
评价(流水单号,顾客身份证号,评论时间,评论星级,评论内容,酒店编号)
3.2数据模型的优化
客房信息关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合3NF.
顾客信息关系模型中的关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合5NF.
员工信息关系模型中的主属性可推出所有其他非主属性,模式中不存在传递依赖和部分依赖所以符合3NF.
酒店信息在酒店信息关系模式中,因仅有两个属性且属性间不存在部分依赖,传递依赖所以该模式设计合理符合第三范式。
物品信息在物品信息关系模式中,主属性可推出关系中的所有非主属性,关系中不存在传递依赖和部分依赖,且每一个决定因素都包含码,该关系模式满足BCNF范式。
入住信息
3.3子模式设计
为方便系统的使用,以及开发人员对程序的设计和顾客身份信息的安全性,本数据库系统采用子模式的设计方法来提高数据的使用效率和安全保障。
在酒店查询客房信息的时候设计一个子模式仅供系统用户查询到客房名称,客房类型,床位数量,住房单价等一些主要信息,而客房编号和酒店编号是为了系统的灵活性和数据库后台的方便操作而设计的用户可忽略。
在系统人员查询顾客身份信息时,系统可添加子模式使系统用户只能顾客身份证信息的前六位和后四位,以防止顾客信息的泄露。
在用户查询入住信息,评价信息,消费信息以及维修信息时,流水单号都可忽略,减少用户的信息阅读量。
4.数据库物理结构设计
4.1存取方式设计
由于本系统的数据信息的查询操作频繁,所以在部分表中建立索引以提高查询效率。
客房信息表修改删除插入操作较少,查询操作较为频繁,所以在该表中以客房编号上建立聚簇索引以提高查询效率。
顾客信息表由于插入操作较为频繁,所以不适合建立聚簇索引,采用在用户身份证号码属性上建立非聚簇索引的方法提高数据的查询效率。
入住信息表和预定信息表要频繁的进行插入和查询操作,入住信息表和预定信息表中的流水单号具有有序的特性且插入的操作仅发生在表的末尾,所以适合在该模式的流水单号属性上建立聚簇索引便于数据的查询。
由于职工表的在本系统使用频率较少且数据量较少,添加索引反而使系统在索引的维护上耗费大量时间,所以不建议添加索引。
评价表由于要经常的插入和查询数据,且该表的数据量随营业时间增加而增加,所以要添加索引以提高系统对数据的查询效率。
4.2存储结构设计
本系统的数据的存储结构可根据数据的规模的进行设计,对于小型的酒店建议采用单个硬盘的存储方式,减少设计开销。
对于大型的酒店,数据量较大,建议使用多个磁盘或使用磁盘阵列的形式来存储数据。
具体的设计要根据实际情况进行详细的设计。
5.数据库安全性、完整性设计
5.1主要视图设计
顾客加密信息(顾客身份证号,顾客姓名)顾客身份证号码只显示前六位和后四位。
客房基本信息(客房名称,客房类型,床位数量,住房单价)
入住基本信息(房间编号,顾客身份证号,入住时间,退房时间,住宿时长,住宿费用)身份证号码只显示前六位和后四位。
预定基本信息(顾客身份证号,房间类型,预定时间,预定入住时长,押金,预定状态)身份证号码只显示前六位和后四位。
顾客消费总金额(客房名称,客房类型,入住时间,退房时间,住宿时长,住宿费用,消费总金额)
5.2用户权限
酒店经理:
对于客房信息表具有查看,修改,添加权限。
对于顾客信息表具有查看权限。
对于入住和预定信息表具有查看权限。
对于员工信息表具有查看,修改,插入和删除权限。
酒店会计:
对于客房信息表具有查看结算信息表具有查看和插入权限。
对于员工表具有查看权限。
酒店前台:
对于客房信息表具有查看权限,对其中的客房的入住状态具有修改权。
对于顾客信息表具有插入权。
对于入住表和预定表具有插入权。
顾客:
对客房信息某些记录具有查询权。
6.数据库实现
6.1编码实现
6.1.1主要数据表的创建
CREATEDATABASE[酒店客房信息管理系统]ONPRIMARY
(
NAME=N'酒店客房信息管理系统',
FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\酒店客房信息管理系统.mdf',
SIZE=3072KB,
FILEGROWTH=1024KB
)
LOGON
(
NAME=N'酒店客房信息管理系统_log',
FILENAME=N'C:
\ProgramFiles\MicrosoftSQLServer\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\酒店客房信息管理系统_log.ldf',
SIZE=1024KB,
FILEGROWTH=10%
)
createtable物品
(
物品编号char(5)primarykey,
物品名称char(30)notnull,
物品单价money,
物品类型char(10)
);
createtable顾客
(
身份证号char(18)primarykey,
姓名char(20)notnull,
手机号char(11)
);
createtable酒店
(
酒店编号char(4)primarykey,
酒店名称char(20)
);
createtable客房
(
客房编号char(4)primarykey,
客房名称char(4)notnull,
客房类型char(8)check(客房类型in('标准间','豪华间')),
客房状态char(4)check(客房状态in('入住','空闲')),
床位数int,
客房单价money
);
createtable员工
(
员工工号char(6)primarykey,
员工姓名char(20)notnull,
员工性别char
(2)check(员工性别in('男','女')),
员工年龄intcheck(员工年龄>18and员工年龄<60),
员工职务char(20)notnull,
手机号char(11)
);
createtable维修
(
维修流水单号intprimarykeyIDENTITY(1,1),
维修房间编号char(4)foreignkeyreferences客房(客房编号),
维修员工工号char(6)foreignkeyreferences员工(员工工号),
维修物品名称char(20),
维修时间date,
维修费用money
);
createtable评论
(
酒店编号char(4),
顾客身份证号char(18),
评论时间date,
评论星级int,
评论内容char(500)notnull
);
createtable预定
(
流水号char(8)primarykey,
预定客房编号char(4)foreignkeyreferences客房(客房编号),
顾客身份证号char(18)foreignkeyreferences顾客(身份证号),
员工工号char(6)foreignkeyreferences员工(员工工号),
预定时间date,
预订时长int,
预定状态char(10),
退订时间date,
押金money
);
createtable入住
(
流水单号intprimarykeyIDENTITY(1,1),
入住客房编号char(4)foreignkeyreferences客房(客房编号),
顾客身份证号char(18)foreignkeyreferences顾客(身份证号),
入住时间date,
退房时间date,
住宿费用money,
);
createtable消费单
(
消费流水单号intprimarykeyIDENTITY(1,1),
入住流水单号intforeignkeyreferences入住(流水单号),
物品编号char(5)foreignkeyreferences物品(物品编号),
消费量int,
消费金额money
);
6.1.2主要视图的创建
--创建客房基本信息视图--
createview客房基本信息
as
select客房名称,客房类型,床位数,客房单价
from客房
--统计顾客住宿的消费费用--
createview消费统计
as
select流水单号,客房名称,客房类型,入住时间,退房时间,DATEDIFF(day,入住时间,退房时间)as住宿时长,住宿费用
from入住join客房on客房.客房编号=入住.入住客房编号
--创建顾客加密信息视图--
createview顾客加密信息
as
select身份证号码=replace(身份证号,substring(身份证号,7,8),'********'),姓名,手机号
from顾客.
--创建预订概要信息便于查询--
createview预定概要信息
as
select预定客房编号,顾客身份证号,预定时间,客房类型,押金,预定状态
from预定
6.1.3索引的创建
因其他表在建立主键时以默认添加,此处不再添加额外索引。
--在顾客上创建非聚簇索引--
create
indexcno_index
on顾客(身份证号)
6.1.4创建用户权限
创建用户。
如下图所示、
-------用户权限的设置--------
grantselect,update,inserton客房to经理
grantselecton预定to经理
grantselecton入住to经理
grantselecton顾客加密信息to经理
grantselect,delete,insert,updateon员工to经理
grantupdate,selecton入住to会计
grantupdate,selecton预定to会计
grantselecton客房to会计
grantselectupdateinserton入住to前台
grantselecton客房to前台
grantinserton顾客to前台
grantselecton顾客加密信息to前台
6.1.5存储过程的设计
-----创建存储过程-----
--添加信息
createprocedureadd_room
@r_nochar(4),--客房编号
@r_namechar(4),--客房名称
@r_stylechar(8),--客房类型
@r_bednumint,--床位数
@r_pricemoney--房间价格
as
begin
insertinto客房
values(@r_no,@r_name,@r_style,@r_bednum,@r_price)
end
go
--预定房间
createprocedureorder_room
@c_idchar(18),--顾客身份证号
@r_stylechar(8),--房间类型
@o_timeint,--预定时长
@o_moneymoney--预定押金
as
begin
insertinto预定
values(null,null,@c_id,null,@r_style,GETDATE(),@o_time,'已预订',null,@o_money)
end
go
--退定房间
createproceduredisorder_room
@o_idint--预定单号
as
begin
update预定
set预定状态='已退订'
where流水号=@o_id,退订时间=getdate()
end
7.数据录入调试及运行
----添加评论信息----
execadd_comments'0145','412326199501014466',4,'酒店客房年久失修,天花板漏水,但服务态度挺好,希望酒店改善一下住宿环境。
'
----添加预订信息-----
execorder_room'411082199611152413','标准间',1,100
----对已预定的订单进行退订----
execdisorder_room1
系统登录界面
客房信息录入界面
房间预订界面
8.总结体会
本次数据库课程设计,我们做的是酒店客房信息管理系统。
内容相对于前几次的练习题与大作业来讲较为复杂,各个表之间的联系比较紧密,表的设计标准也相对要求较高。
在数据库实现之前,数据库的需求分析,功能模块划分,概念设计,关系模型设计,物理结构设计花费了我们很多时间与精力,有几次的设计结果在后来的分析上发现设计的系统存在许多的不足,导致我们前面的工作都要全部重新做一遍,用去了我们许多的时间。
在这个过程中,我们相互讨论,相互补充,将课堂上的理论知识运用于实际问题中,锻炼了我们的动手能力。
在课程设计中我们遇到的最大的问题就是需求分析与功能划分这两个部分,在系统确认时,我们经过了反复的讨论和修改才确定了一个相对较完善的数据库系统;在对功能设计时,我们查阅了网上资料和一些现代酒店管理的知识,并结合自身的一些体会对系统的功能逐渐进行完善,最终确定了本系统的功能模块。
在此期间我们讨论了很多设计方案,经过反复的讨论最终确定了一个合理的设计方案。
通过本次课程设计,我们基本掌握了数据库分析和设计的基本步骤与方法,它提高了我们解决实际问题的能力。
另外在系统设计过程中,我们又将学过的知识重新复习了一遍,我们有了很大的收获!
9.参考文献
[1]数据库原理与设计杨海霞2013人民邮电出版社
[2]现代酒店管理经典程旭东2011人民邮电出版社
[3]数据库系统概论王珊萨师煊2016高等教育出版社