酒店管理系统数据库课程设计.docx
《酒店管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《酒店管理系统数据库课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
酒店管理系统数据库课程设计
课程设计报告
课程名称:
数据库原理应用
设计题目:
酒店客房管理
专业:
信息与计算科学
班级:
姓名:
学号:
指导教师:
河北建筑工程学院数理系
2014年1月
课程设计题目(问题)描述
随着我国改革开放的不断推进,人民生活水平日益提高,旅游经济蓬勃发展,这一切都带动了酒店行业的发展。
再加上入境旅游的人越来越多,入境从事商务活动的外宾也越来越多。
传统的手工已不适应现代化酒店管理的需要。
及时、准确、全方位的网络化信息管理成为必需。
酒店是一个服务至上的行业,从客人的预定开始,到入住登记直至最后退房结账,每一步骤都要保持一致性的服务水准,错失一步,会令其辛苦经营的形象功亏一篑。
面对酒店业内激烈的竞争形势,各酒店均在努力拓展其服务领域的广度和深度。
虽然计算机并不是酒店走向成功的关键元素,但它可以帮助那些真正影响成败的要素发挥更大的效用。
因此,采用全新的计算机网络和管理,将成为提高酒店的管理效率,改善服务水准的重要手段之一。
通过此设计可解决一些前台操作问题,预定管理问题以及一些信息查询问题,大大减轻服务人员的工作力度,使酒店宾馆服务更加完善,方便快捷。
本组成员情况
姓名
学号
承担的任务
成绩
数据库的查询、设计、执行、修改以及编写设计报告
数据库的查询、设计、执行、修改以及编写设计报告
教师评语
签名:
注:
本设计报告中各个部分如果页数不够,请大家自行扩页,原则是一定要把报告写详细,能说明本组设计的成果和特色,能够反应小组中每个人的工作。
报告中应该叙述设计中的每个模块。
设计报告将是评定每个人成绩的一个重要组成部分。
一、本组设计的功能描述
(含所有实现的模块的功能)
一、前台操作
开房登记:
(1)输入房号查询房状态
(2)输入房状态查询房号(3)输入房号把房间状态改成入住(4)输入顾客信息(5)输入订单信息(6)输入开房信息
退房结账:
(1)输入房号把房间状态改成空闲
(2)退房结账时输入订单号,输出应结账金额并自动把订单中的“结账离开日期”改为当前日期
房状态查看:
输入房号查询房信息
二、预订管理
预订房间:
(1)输入房号查询房状态
(2)输入房号把房间状态改成预订(3)输入顾客信息输入订单信息(4)输入订房信息
预订入住:
(1)输入订单编号,查询此订单的信息
(2)输入房号把房间状态改成入住(3)输入订单信息
解除预订:
(1)删除订房信息
(2)输入订单编号,删除客人信息、订单对应的房号、订单信息并把对应的房间状态改成空闲
三、信息查询
在住客人列表查询
预订客人列表查询
历史客人列表查询
四、报表统计
开房记录统计
退房结账统计
预订房间统计
二、本组设计的主要特色
在设计过程中,经过充分的考虑,我们设计了前台操作、预订管理、信息查询、报表统计功能,他们使得开放服务更加完善方便。
(1)在前台操作中通过简单的输入就可以查询房信息和客人信息。
(2)在预订管理中可以方便的处理房间预订方面的服务,使房间预订更加方便,不至于产生预订冲突。
(3)在信息查询方面,可以方便的查询客人的各种信息,服务全面。
(4)在报表统计方面,把各种记录统计起来,使酒店的管理更加完善,有利于档案储存管理。
总之,该设计大大的节约了人力物力,提高了酒店服务效率,不仅有利于增强整体收入,还可以给顾客以愉悦感,为酒店打出良好的名声。
三、系统分析与设计
根据问题描述和要求,完成:
系统总体设计--确定程序功能模块;
系统详细设计--在总体设计基础上设计系统总体框架、数据结构(类)、关键算法的流程;
最后编制源程序。
1.系统功能模块划分及说明
2.总体框架,数据文件等
3.系统关键算法流程图
4.源程序关键性代码
一、程序功能模块
二、系统详细设计
系统总体框架
(1)需求分析
1、系统主要业务分析
前台操作:
<1>开房登记:
客人把自身信息和要入住的房号告诉酒店操作员,酒店操作员可以帮用户登记入住信息;
<2>退房登记:
客人要是想查询房间的状态——是否已入住、是否已预订、是否是空闲——时,由酒店操作员帮忙查询;
<3>房状态查看:
客人要退房的时候付清住宿费,酒店操作员便帮客人把在住记录改成历史记录。
预定管理:
<1>预定房间:
客人把自身信息和想预订的房间号给酒店操作员,酒店操作员便帮客人预订这间房间,之后其他人在此房间被取消预定前无法入住或预定;
<2>预定入住:
客人把自身信息和预定的房间号告诉酒店操作员,酒店操作员调出预定记录核对后在客户出示身份证件后便允许他登记入住此房间;
<3>解除预定:
客人把自身信息和预定了的房号告诉酒店操作员,酒店操作员便帮客户取消预订。
信息查询:
<1>在住客人列表查询:
显示现在在住的客人信息
<2>预订客人列表查询:
显示预定了房间的客人信息
<3>历史客人列表查询:
显示所有曾经在该酒店定房或入住的顾客信息
报表统计:
<1>开房记录统计:
显示现在有多少已经开房入住的客人
<2>退房结账统计:
显示现在有多少客人已经退房结账
<3>预订房间统计:
显示现在有多少客人预定了房间
2、系统功能需求分析
图1
图2
数据流图---前台操作
数据流图---预定管理
数据流图—信息查询
数据流图----报表统计
(2)数据库概念结构设计
由客人信息的数据项可以得到其相应的实体属性图
证件类型的数据项有:
证件类型号、证件类型名。
由证件类型的数据项可以得到其相应的实体属性图
房间信息的数据项有:
房号、房类型号、价格、押金、房状态。
由房间信息的数据项可以得到其相应的实体属性图
房类型的数据项有:
房类型号、房类型名、房间平米。
由房类型的数据项可以得到其相应的实体属性图
由订单的数据项可以得到其相应的实体属性图
由上述各实体及其属性可以得到实体间的关系图即ER图
E—R图
(3)数据库逻辑结构设计
数据库的关系模型根据数据模型来确定,即将关系模型转化为SQL-Server数据库系统所支持的实际数据模型,得到数据库的逻辑结构。
在数据库的关系模型及系统处理过程中的数据的结构的基础上,获得系统数据库表以及表之间的关系。
在本系统中,以下是系统中几个主要的数据依赖和数据库表结构。
关系名
主要函数依赖
客人信息
BCNF
证件号码—→(姓名,性别,证件类型号,联系电话)
证件类型
BCNF
证件类型号—→(证件类型名)
房间信息
BCNF
房号—→(房类型号,价格,押金,房状态)
房类型
BCNF
房类型号—→(房类型名,房间平米)
订单
BCNF
订单编号—→(客人证件号,预计入住日期,预计离开日期,入住日期,结账离开日期,应付金额)
开房
BCNF
(订单编号,房号)—→()
订单表
编号
字段名
字段类型
备注说明
字段约束
1
order_id
char(10)
订单编号
主键
2
cust_id
char(20)
客人证件号
外键
3
plan_enter_date
datetime
预计入住日期
4
plan_leave_date
datetime
预计离开日期
5
enter_date
datetime
入住日期
6
leave_date
datetime
结账离开日期
7
order_money
int
应付金额
客人信息表
编号
字段名
字段类型
备注说明
字段约束
1
cust_id
char(20)
证件号码
主键
2
ptype_id
char(10)
证件类型号
外键
3
cust_name
char(10)
姓名
4
sex
char
(1)
性别
5
phone
char(10)
联系电话
房间信息表
编号
字段名
字段类型
备注说明
字段约束
1
room_id
char(10)
房号
主键
2
rtype_id
char(10)
房类型号
外键
3
rprice
int
价格
4
rdeposit
int
押金
5
rstate
char(10)
房状态
证件信息表
编号
字段名
字段类型
备注说明
字段约束
1
ptype_id
char(10)
证件类型号
主键
2
ptype_name
char(10)
证件类型名
房间信息表
编号
字段名
字段类型
备注说明
字段约束
1
rtype_id
char(10)
房类型号
主键
2
rtype_name
char(10)
房类型名
3
rarea
numeric(5,2)
房间平米
开房表
编号
字段名
字段类型
备注说明
字段约束
1
order_id
char(10)
订单编号
主键
2
room_id
char(10)
房号
三、编制源程序
在数据库中创建表的语句
创建房类型表:
createtableroom_type(
rtype_idchar(10)primarykey,
rtype_namechar(10),
rareanumeric(5,2)
);
创建房间信息表:
createtableroom(
room_idchar(10)primarykey,
rtype_idchar(10),
rpriceint,
rdepositint,
rstatechar(10),
foreignkey(rtype_id)referencesroom_type(rtype_id)
);
创建证件类型表:
createtablepaper_type(
ptype_idchar(10)primarykey,
ptype_namechar(10)
);
创建客人信息表:
createtablecustomer(
cust_idchar(20)primarykey,
ptype_idchar(10),
cust_namechar(10),
sexchar
(1),
phonechar(10),
foreignkey(ptype_id)referencespaper_type(ptype_id)
);
创建订单表:
createtableorder_log(
order_idchar(10)primarykey,
cust_idchar(20),
plan_enter_datedatetime,
plan_leave_datedatetime,
enter_datedatetime,
leave_datedatetime,
order_moneyint,
foreignkey(cust_id)referencescustomer(cust_id)
);
创建订房表:
createtablebook_room(
order_idchar(10),
room_idchar(10),
foreignkey(order_id)referencesorder_log(order_id),
foreignkey(room_id)referencesroom(room_id)
);
酒店客房管理系统功能设计(存储过程与触发器)
3.2.1前台操作功能设计
(1)开房登记操作
--输入房号查询房状态
createprocedurepro_rstate@room_idchar(10)as
selectroom_id房号,rstate房状态fromroom
whereroom_id=@room_id
--运行
execpro_rstate101
--输入房状态查询房号
createprocedurepro_rstate1@rstatechar(10)as
selectroom_id房号,rtype_name房类型名,rarea房间平米,rprice价格,rdeposit押金
fromroom,room_type
where=andrstate=@rstate;
--运行
execpro_rstate1空闲
--输入房号把房间状态改成入住
createprocedurepro_change_rstate_into_live@room_idchar(10)as
updateroom
setrstate='入住'
whereroom_id=@room_id
selectroom_id房号,rstate房状态fromroomwhereroom_id=@room_id
--运行
execpro_change_rstate_into_live101
--输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话)
createprocedurepro_insert_cust@cust_idchar(20),@ptype_idchar(10),@cust_namechar(10),
@sexchar
(1),@phonechar(10)as
insertintocustomervalues(@cust_id,@ptype_id,@cust_name,@sex,@phone);
selectcust_id证件号码,ptype_id证件号类型,cust_name姓名,sex性别,phone联系电话
fromcustomer
--运行
execpro_ins1','李昂','1
--输入订单信息(订单编号,客人证件号,入住日期,预计离开日期)
createprocedurepro_insert_order@order_idchar(10),@cust_idchar(20),@enter_datedatetime,
@plan_leave_datedatetimeas
insertintoorder_log(order_id,cust_id,enter_date,plan_leave_date)
values(@order_id,@cust_id,@enter_date,@plan_leave_date);
selectorder_id订单编号,cust_id客人证件号,plan_enter_date预计入住日期,enter_date入住日期,
plan_leave_date预计离开日期,leave_date结账离开日期,order_money应付金额fromorder_log
--运行
execpro_insert_order'032013-7-1','2013-7-10'
--输入开房信息(订单号,房号)
createprocedurepro_insert_book_room@order_idchar(10),@room_idchar(10)as
insertintobook_roomvalues(@order_id,@room_id);
selectorder_id订单编号,room_id房号frombook_room
whereorder_id=@order_id
--运行
execpro_insert_book_room'03','101'
(2)退房结账
--输入房号把房间状态改成空闲
createprocedurepro_change_rstate_into_free@room_idchar(10)as
updateroom
setrstate='空闲'
whereroom_id=@room_id;
selectroom_id房号,rstate房状态fromroomwhereroom_id=@room_id
--运行
execpro_change_rstate_into_free'101'
--退房结账时输入订单号,输出应结账金额并自动把订单中的“结账离开日期”改为当前日期
createprocedurepro_quit_getmoney@order_idchar(10)as
begin
declare@enter_datedatetime,@order_moneyint,@sumint
declaregetCurcursorfor
selectenter_date,order_money
fromorder_log
whereorder_id=@order_id;
opengetCur
fetchgetCurinto@enter_date,@order_money
begin
updateorder_log
setleave_date=getdate()
whereorder_id=@order_id;
select@sum=(day(getdate())-day(@enter_date))*@order_money;
end
closegetCur
deallocategetCur
end
--运行
execpro_quit_getmoney'01'
(3)房状态查看
--输入房号查询房信息
createprocedurepro_room_info@room_idchar(10)as
selectroom_id房号,rtype_id房类型号,rprice价格,rdeposit押金,rstate房状态
fromroom
whereroom_id=@room_id
--运行
execpro_room_info'101'
3.2.2预订管理功能设计
(1)预定房间
--输入房号查询房状态
createprocedurepro_rstate12@room_idchar(10)as
selectroom_id房号,rstate房状态fromroom
whereroom_id=@room_id
--运行
execpro_rstate'101'
--输入房号把房间状态改成预订
createprocedurepro_change_rstate_into_subscribe@room_idchar(10)as
updateroom
setrstate='预订'
whereroom_id=@room_id;
selectroom_id房号,rstate房状态fromroom
whereroom_id=@room_id
--运行
execpro_change_rstate_into_subscribe101
--输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话)
createprocedurepro_insert_cust12@cust_idchar(20),@ptype_idchar(10),@cust_namechar(10),
@sexchar
(1),@phonechar(10)as
insertintocustomervalues(@cust_id,@ptype_id,@cust_name,@sex,@phone);
selectcust_id证件号码,ptype_id证件号类型,cust_name姓名,sex性别,phone联系电话
fromcustomer
--运行
王小','1
--输入订单信息(订单编号,客人证件号,预计入住日期)进行预订
createprocedurepro_subscribe@order_idchar(10),@cust_idchar(20),@plan_enter_datedatetimeas
insertintoorder_log(order_id,cust_id,plan_enter_date)
values(@order_id,@cust_id,@plan_enter_date);
selectorder_id订单编号,cust_id客人证件号,plan_enter_date预计入住日期,enter_date入住日期,
plan_leave_date预计离开日期,leave_date结账离开日期,order_money应付金额
fromorder_log
whereorder_id=@order_id;
--运行
execpro_subscribe'2013-6-29'
--输入订房信息(订单号,房号)
createprocedurepro_insert_book_room1@order_idchar(10),@room_idchar(10)as
insertintobook_roomvalues(@order_id,@room_id);
selectorder_id订单编号,room_id房号frombook_room
whereorder_id=@order_id
--运行
execpro_insert_book_room'02','102'
(2)预定入住
--输入订单编号,查询此订单的信息(看是否为已预订)
createprocedurepro_subscribe_to_enter@order_idchar(10)as
ifexists(select*fromorder_logwhereorder_id=@order_id)
print'已预订'
else
print'未预定'
--运行
execpro_subscribe_to_enter101
--输入房号把房间状态改成入住
createprocedurepro_change_rstate_into_live1@room_idchar(10)as
updateroom
setrstate='入住'
whereroom_id=@room_id
selectroom_id房号,rstate房状态fromroomwhereroom_id=@room_id
--运行
execpro_change_rstate_into_live101
--输入订单信息(订单编号,预计离开日期,入住日期,应付金额)
createprocedurepro_subscribe_to_live@order_idchar(10),@plan_leave_datedatetime,@enter_datedatetime,
@order_moneyintas
updateor