酒店管理系统数据库课程
设计
Prepared on 22 November 2020
课程设计报告
课程名称: 数据库原理应用 设计题目: 酒店客房管理 专业: 信息与计算科学 班级: 姓名: 学号: 指导教师:
河北建筑工程学院数理系
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、系统功能需求分析 图2 图1 数据流图---前台操作 数据流图---预定管理 数据流图—信息查询 数据流图----报表统计 (2)数据库概念结构设计 由客人信息的数据项可以得到其相应的实体属性图 证件类型的数据项有:证件类型号、证件类型名。由证件类型的数据项可以得到其相应的实体属性图 房间信息的数据项有:房号、房类型号、价格、押金、房状态。由房间信息的数据项可以得到其相应的实体属性图 房类型的数据项有:房类型号、房类型名、房间平米。由房类型的数据项可以得到其相应的实体属性图 由订单的数据项可以得到其相应的实体属性图由上述各实体及其属性可以得到实体间的关系图即ER图 E—R图 (3)数据库逻辑结构设计 数据库的关系模型根据数据模型来确定,即将关系模型转化为SQL-Server数据库系统所支持的实际数据模型,得到数据库的逻辑结构。在数据库的关系模型及系统处理过程中的数据的结构的基础上,获得系统数据库表以及表之间的关系。在本系统中,以下是系统中几个主要的数据依赖和数据库表结构。
关系名 客人信息 BCNF 证件类型 BCNF 房间信息 BCNF 房类型 BCNF 订单 BCNF 开房 BCNF 主 要 函 数 依 赖 证件号码—→(姓名,性别,证件类型号,联系电话) 证件类型号—→(证件类型名) 房号—→(房类型号,价格,押金,房状态) 房类型号—→(房类型名,房间平米) 订单编号—→(客人证件号,预计入住日期,预计离开日期,入住日期,结账离开日期,应付金额) (订单编号,房号)—→() 订单表 编号 字段名 order_id 1 cust_id 2 plan_enter_date 3 plan_leave_date 4 enter_date 5 leave_date 6 order_money 7 客人信息表 编号 字段名 cust_id 1 ptype_id 2 cust_name 3 sex 4 phone 5 字段类型 char(10) char(20) datetime datetime datetime datetime int 备注说明 订单编号 客人证件号 预计入住日期 预计离开日期 入住日期 结账离开日期 应付金额 备注说明 证件号码 证件类型号 姓名 性别 联系电话 备注说明 房号 房类型号 价格 押金 房状态 备注说明 证件类型号 证件类型名 字段约束 主键 外键 字段约束 主键 外键 字段约束 主键 外键 字段约束 主键 字段类型 char(20) char(10) char(10) char(1) char(10) 字段类型 char(10) char(10) int int char(10) 字段类型 char(10) char(10) 房间信息表 编号 1 2 3 4 5 编号 1 2 字段名 room_id rtype_id rprice rdeposit rstate 证件信息表 字段名 ptype_id ptype_name
房间信息表 编号 1 2 3 编号 1 2 字段名 rtype_id rtype_name rarea 字段类型 char(10) char(10) numeric(5,2) 字段类型 char(10) char(10) 备注说明 房类型号 房类型名 房间平米 备注说明 订单编号 房号 字段约束 主键 字段约束 主键 开房表 字段名 order_id room_id 三、编制源程序 在数据库中创建表的语句 创建房类型表: create table room_type( rtype_id char(10) primary key, rtype_name char(10), rarea numeric(5,2) ); 创建房间信息表: create table room( room_id char(10) primary key, rtype_id char(10), rprice int, rdeposit int, rstate char(10), foreign key(rtype_id)references room_type(rtype_id) ); 创建证件类型表: create table paper_type( ptype_id char(10) primary key, ptype_name char(10) ); 创建客人信息表: create table customer( cust_id char(20) primary key, ptype_id char(10), cust_name char(10), sex char(1), phone char(10), foreign key(ptype_id)references paper_type(ptype_id) ); 创建订单表: create table order_log( order_id char(10) primary key, cust_id char(20), plan_enter_date datetime,
plan_leave_date datetime, enter_date datetime, leave_date datetime, order_money int, foreign key(cust_id) references customer(cust_id) ); 创建订房表: create table book_room( order_id char(10), room_id char(10), foreign key(order_id) references order_log(order_id), foreign key(room_id) references room(room_id) ); 酒店客房管理系统功能设计(存储过程与触发器) 3.2.1 前台操作功能设计 (1)开房登记操作 --输入房号查询房状态 create procedure pro_rstate @room_id char(10) as select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_rstate 101 --输入房状态查询房号 create procedure pro_rstate1 @rstate char(10) as select room_id 房号,rtype_name 房类型名,rarea 房间平米,rprice 价格,rdeposit 押金 from room,room_type where = and rstate=@rstate; --运行 exec pro_rstate1 空闲 --输入房号把房间状态改成入住 create procedure pro_change_rstate_into_live @room_id char(10) as update room set rstate='入住' where room_id=@room_id select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_change_rstate_into_live 101 --输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话) create procedure pro_insert_cust @cust_id char(20),@ptype_id char(10),@cust_name char(10), @sex char(1),@phone char(10) as insert into customer values(@cust_id,@ptype_id,@cust_name,@sex,@phone); select cust_id 证件号码,ptype_id 证件号类型,cust_name 姓名,sex 性别,phone 联系电话 from customer --运行 exec pro_ins1','李昂','1
--输入订单信息(订单编号,客人证件号,入住日期,预计离开日期) create procedure pro_insert_order @order_id char(10),@cust_id char(20),@enter_date datetime, @plan_leave_date datetime as insert into order_log(order_id,cust_id,enter_date,plan_leave_date) values(@order_id,@cust_id,@enter_date,@plan_leave_date); select order_id 订单编号,cust_id 客人证件号,plan_enter_date 预计入住日期,enter_date 入住日期, plan_leave_date 预计离开日期,leave_date 结账离开日期,order_money 应付金额 from order_log --运行 exec pro_insert_order '032013-7-1','2013-7-10' --输入开房信息(订单号,房号) create procedure pro_insert_book_room @order_id char(10),@room_id char(10) as insert into book_room values(@order_id,@room_id); select order_id 订单编号,room_id 房号 from book_room where order_id=@order_id --运行 exec pro_insert_book_room '03','101' (2)退房结账 --输入房号把房间状态改成空闲 create procedure pro_change_rstate_into_free @room_id char(10) as update room set rstate='空闲' where room_id=@room_id; select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_change_rstate_into_free '101' --退房结账时输入订单号,输出应结账金额并自动把订单中的“结账离开日期”改为当前日期 create procedure pro_quit_getmoney @order_id char(10) as begin declare @enter_date datetime,@order_money int,@sum int declare getCur cursor for select enter_date,order_money from order_log where order_id=@order_id; open getCur fetch getCur into @enter_date,@order_money begin update order_log set leave_date=getdate() where order_id=@order_id; select @sum=(day(getdate())-day(@enter_date))*@order_money; end close getCur deallocate getCur end
--运行 exec pro_quit_getmoney '01' (3)房状态查看 --输入房号查询房信息 create procedure pro_room_info @room_id char(10) as select room_id 房号,rtype_id 房类型号,rprice 价格,rdeposit 押金,rstate 房状态 from room where room_id=@room_id --运行 exec pro_room_info '101' 3.2.2 预订管理功能设计 (1)预定房间 --输入房号查询房状态 create procedure pro_rstate 12@room_id char(10) as select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_rstate '101' --输入房号把房间状态改成预订 create procedure pro_change_rstate_into_subscribe @room_id char(10) as update room set rstate='预订' where room_id=@room_id; select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_change_rstate_into_subscribe 101 --输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话) create procedure pro_insert_cust12 @cust_id char(20),@ptype_id char(10),@cust_name char(10), @sex char(1),@phone char(10) as insert into customer values(@cust_id,@ptype_id,@cust_name,@sex,@phone); select cust_id 证件号码,ptype_id 证件号类型,cust_name 姓名,sex 性别,phone 联系电话 from customer --运行 王小','1 --输入订单信息(订单编号,客人证件号,预计入住日期)进行预订 create procedure pro_subscribe @order_id char(10),@cust_id char(20),@plan_enter_date datetime as insert into order_log(order_id,cust_id,plan_enter_date) values(@order_id,@cust_id,@plan_enter_date); select order_id 订单编号,cust_id 客人证件号,plan_enter_date 预计入住日期,enter_date 入住日期, plan_leave_date 预计离开日期,leave_date 结账离开日期,order_money 应付金额 from order_log
where order_id=@order_id; --运行 exec pro_subscribe '2013-6-29' --输入订房信息(订单号,房号) create procedure pro_insert_book_room1 @order_id char(10),@room_id char(10) as insert into book_room values(@order_id,@room_id); select order_id 订单编号,room_id 房号 from book_room where order_id=@order_id --运行 exec pro_insert_book_room '02','102' (2)预定入住 --输入订单编号,查询此订单的信息(看是否为已预订) create procedure pro_subscribe_to_enter @order_id char(10) as if exists(select* from order_log where order_id=@order_id) print'已预订' else print'未预定' --运行 exec pro_subscribe_to_enter 101 --输入房号把房间状态改成入住 create procedure pro_change_rstate_into_live1 @room_id char(10) as update room set rstate='入住' where room_id=@room_id select room_id 房号,rstate 房状态 from room where room_id=@room_id --运行 exec pro_change_rstate_into_live 101 --输入订单信息(订单编号,预计离开日期,入住日期,应付金额) create procedure pro_subscribe_to_live @order_id char(10),@plan_leave_date datetime,@enter_date datetime, @order_money int as update order_log set plan_leave_date=@plan_leave_date,enter_date=@enter_date,order_money=@order_money where order_id=@order_id select order_id 订单编号,cust_id 客人证件号,plan_enter_date 预计入住日期,enter_date 入住日期, plan_leave_date 预计离开日期,leave_date 结账离开日期,order_money 应付金额 from order_log where order_id=@order_id --运行 exec pro_subscribe_to_live '02','2013-7-12','2013-7-1',300 (3)解除预订 --删除订房信息(订单号,房号) 【触发器实现】 create trigger trig_dele_book_room on order_log for delete as delete book_room from book_room,deleted where =
--输入订单编号,删除客人信息、订单对应的房号、订单信息并把对应的房间状态改成空闲(取消预订) create procedure pro_cancel_subscribe @order_id char(10) as declare @cust_id char(20) declare getCur cursor for select cust_id from order_log where order_id=@order_id open getCur fetch getCur into @cust_id update room set rstate='空闲' where room_id in(select room_id from book_room where order_id=@order_id) delete from order_log where order_id=@order_id delete from book_room where order_id=@order_id delete from customer where cust_id=@cust_id close getCur deallocate getCur --运行 exec pro_cancel_subscribe '02' 3.2.3 信息查询功能设计 (1)查询在住客人列表 create procedure pro_select_cust as declare @cust_id char(20) declare getCur cursor for select cust_id from order_log where enter_date is not null and leave_date is null open getCur fetch getCur into @cust_id select cust_id 证件号码,ptype_id 证件号类型,cust_name 姓名,sex 性别,phone 联系电话 from customer where cust_id=@cust_id close getCur deallocate getCur --运行 exec pro_select_cust (2)查询预订客人信息create procedure pro_select_subscribe asdeclare @cust_id char(20) declare getCur cursor for select cust_id from order_log where plan_enter_date is not null and enter_date is null open getCur fetch getCur into @cust_id
select cust_id 证件号码,ptype_id 证件号类型,cust_name 姓名,sex 性别,phone 联系电话 from customer where cust_id=@cust_id close getCur deallocate getCur --运行 exec pro_select_subscribe --查询历史客人信息 create procedure pro_select_past1 as declare @cust_id char(20) declare getCur cursor for select cust_id from order_log where leave_date is not null open getCur fetch getCur into @cust_id select cust_id 证件号码,ptype_id 证件号类型,cust_name 姓名,sex 性别,phone 联系电话 from customer where cust_id=@cust_id close getCur deallocate getCur --运行 exec pro_select_past1 3.2.4 报表统计功能设计 (1)开房记录统计 create procedure pro_sum_live as declare @count int select @count=COUNT(*) from order_log where enter_date is not null and leave_date is null print'开房记录共'+convert(char(10),@count)+'条' --运行 exec pro_sum_live (2)退房结账记录统计 create procedure pro_sum_leave as declare @count int select @count=COUNT(*) from order_log where leave_date is not null print'退房结账记录共'+convert(char(10),@count)+'条' --运行 exec pro_sum_leave (3)预订房间记录统计 create procedure pro_sum_subscribe as declare @count int select @count=COUNT(*) from order_log where plan_enter_date is not null and enter_date is null print'预定房间记录共'+convert(char(10),@count)+'条' --运行 exec pro_sum_subscribe
四、系 统 调 试 出 现 的 问 题 及 解 决 情 况 (编译语法错误及修改,重点是运行逻辑问题修改和调整) 错误1:在有多重括号时,有括号遗漏。改正--(rtype_id) 错误2:有命名重复,修改名称 错误3:有单引号遗漏 错误4:由于前面对表格的修改造成后面的查询失败,修改表格内容加入多的表格内容 错误5:查询信息与所建立的表不符,把‘m’改为‘1’ 错误6:设定的表格在使用过程中丢失,纠正重新录入表格
五、系 统 运 行 报 告(测 试 的 结 果) 一、前台操作功能设计 1. 开房登记操作:-输入房号查询房状态 -输入房状态查询房号 --输入房号把房间状态改成入住 ---输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话 --输入订单信息(订单编号,客人证件号,入住日期,预计离开日期) --输入开房信息(订单号,房号 2.退房结账:输入房号把房间状态改成空闲 退房结账时输入订单号,输出应结账金额并自动把订单中的“结账离开日期”改为当前日期 3.房信息查看: 输入房号查询房信息 一、 预订管理功能设计 1. 预定房间:输入房号查询房状态 输入房号把房间状态改成预订 输入顾客信息(证件号码,证件类型号,姓名,性别,联系电话) 输入订单信息(订单编号,客人证件号,预计入住日期)进行预订 输入订房信息(订单号,房号) 2. 预定入住:输入订单编号,查询此订单的信息(看是否为已预订) 输入房号把房间状态改成入住 输入订单信息(订单编号,预计离开日期,入住日期,应付金额) 3. 解除预订:-删除订房信息(订单号,房号) 三、信息查询功能设计 查询在住客人列表 查询预订客人信息 查询历史客人信息 二、 报表统计功能设计 开房记录统计 退房结账记录统计 -预订房间记录统计
六、总结 (包括设计的总结、还需改进的内容及心得体会) 这次的课程设计,我们只是挑选了较简单的课题,大部分都是应用已知的知识。对于酒店客服管理来说,可能某些方面并不全面,一个酒店要运行得畅并不是这点东西就能解决的。虽然它有一定的实用价值,但还是过于简单,不太适合大型酒店的运营。但是由于我们实力有限,现在还无法设计出比较繁琐的程序,我们以后会加倍努力,争取有所提高,希望在以后的日子里,能够设计出真正适应市场、适应时代的设计。 通过此次设计我们充分认识到了自己知识的欠缺,对数据库的内容有很多方面还不够了解,不能完全掌握书中的内容,因此在设计中出现了较多的语法和逻辑的错误。虽然通过不断的查阅课本,我们努力的更正了,还是有很多地方需要通过网络才能解决。这使我们浪费了大量的时间和精力,大大的减小了我们的设计效率。不过,俗话说,有利必有弊,这次设计充分的暴露了我们的不足,但也给了我们一个学习的平台。我们了解到:要做好一个设计,需要对数据库的知识有充分的了解,这迫使我们努力的翻阅书籍,并且通过各种途径查询资料,最后我们不仅的完成了设计,更丰富了我们的知识储备,武装了我们的头脑。 因此,这次设计的过程虽然艰辛,但我们很快乐。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务