宾馆客房管理系统数据库设计报告
摘要:本系统是宾馆客房管理系统,该报告主要介绍了数据库的设计,建立,主要功能的实现。
数据库系统包括员工管理、客房管理、顾客管理几个大块。
主要实现了登记功能,预订功能,多种方法查询顾客功能,查看客房状态功能,操作人员对系统的修改功能,以及结账报表功能。
一、需求分析
(1)具有方便的登记、结账功能,以及预订客房的功能,能够支持团体登记和团体结账。
(2)能快速、准确地了解宾馆内的客房状态,以方便管理者决策。
(3)提供多种手段查询客人的信息。
(4)具备一定的维护手段,有一定权利的操作人员在密码的支持下才可以更改房价、房间类型、增减客房。
(5)完善的结账报表系统。
二、E-R关系图
三、关系表
本系统有八个表,分别是职工信息表(staffinfo)、顾客信息表(custmerinfo)、经理信息表(managerinfo)、客房信息表(roominfo)、客房状态表(roomstatus)、入住表(checkin)、退房表(checkout)、结账订单表(orderinfo)。
1,职工信息表(staffinfo)
2,顾客信息表(custmerinfo)
3,经理信息表(managerinfo)
4,客房信息表(roominfo)
5,客房状态表(roomstatus)
6,入住表(checkin)
7,退房表(checkout)
8,结账订单表(orderinfo)
四、范式分析
本系统所有的表均为BCNF,职工和经理表由各自的工作编号为主码,并且可以决定其他所有属性,顾客表由身份证号做为主码,同理,客房的房间号可以决定其他所有属性。
五、功能分析
1,登记功能
本系统采用存储过程实现登记功能,顾客前来预订客房,由工作人员调用存储过程向顾客表中插入该顾客信息,完成登记。
create procedure register
@身份证号varchar(20),@姓名varchar(10),@性别char(5),@电话char(15),
@员工编号char(10)
as
insert into custmerinfo
values(@身份证号,@姓名,@性别,@电话,@员工编号)
2,预订功能
采用存储过程实现,由工作人员调用存储过程,在入住表中插入相应信息,并且设计触发器,在预定的同时在客房状态表中修改客房状态为“已入住”。
create procedure or_der
@身份证号varchar(20),@房间号char(10),@姓名varchar(10),@入住时间nchar(10)
--预定的同时在客房状态表里修改状态
as
insert into checkin
values(@房间号,@身份证号,@姓名,@入住时间)
create trigger tri_order
on checkin
for insert,update
as
declare@房间号char(10)
select@房间号=房间号from inserted
update roomstatus
set状态='已入住'
where房间号=@房间号
3,修改功能
当管理人员在密码的支持下,可以对数据库系统中房间的价格、类型、状态做适当修改。
通过存储过程实现。
create procedure up_date1
@工作编号char(10),@密码varchar(10),@房间号char(10),@价格smallint
as
if@密码=(select密码from managerinfo where工作编号=@工作编号)
begin
update roominfo
set价格=@价格
where房间号=@房间号
end
create procedure up_date2
@工作编号char(10),@密码varchar(10),@房间号char(10),@类型varchar(10)
as
if@密码=(select密码from managerinfo where工作编号=@工作编号)
begin
update roominfo
set类型=@类型
where房间号=@房间号
end
create procedure up_date3
@工作编号char(10),@密码varchar(10),@房间号char(10),@状态char(10)
as
if@密码=(select密码from managerinfo where工作编号=@工作编号)
begin
update roomstatus
set状态=@状态
where房间号=@房间号
end
4,查询顾客信息
存储过程,实现可以通过客户的姓名、房间号查询到客户的信息。
--1.根据姓名查询
create procedure sel_name
@姓名varchar(10)
as
select*from custmerinfo
where姓名=@姓名
--调用
exec sel_name'lxt'
--2.根据房间号查询
create procedure sel_roomnumber
@房间号char(10)
as
select custmerinfo.*from custmerinfo,room
where custmerinfo.身份证号=room.身份证号and房间号=@房间号
5,查看客房状态
设计函数,使得员工可以简单、快捷的查看当前客房的使用状态。
create function room_status()
returns table
as
return select*from roomstatus
6,结账报表系统
采用触发器实现当一个顾客执行退房操作时,即往退房表中插入一条新的纪录时,触动触发器,往订单表中插入信息作为结账报表。
create trigger account--退房信息表里增加一条记录,则打印订单
on checkout
after insert
as
declare@房间号char(10),@身份证号varchar(10),@姓名varchar(10),@退房时间
nchar(10)
declare@工作编号char(10),@价格smallint,@入住时间nchar(10),@总金额int,@天数int
select@房间号=房间号from inserted
select@身份证号=身份证号from inserted
select@姓名=姓名from inserted
select@工作编号=服务的员工编号from custmerinfo where身份证号=@身份证号
select@入住时间=入住时间from checkin where房间号=@房间号
select@价格=价格from roominfo where房间号=@房间号
select@天数=天数from checkout where房间号=@房间号
select@总金额=@天数*@价格
begin
insert into orderinfo(身份证号,姓名,房间号,服务的员工编号,价格,入住时间,退房时间,总金额)
values(@身份证号,@姓名,@房间号,@工作编号,@价格,@入住时间,@退房时间,@总金
额)
End
六、总结
本系统主要采用存储过程、函数和触发器在后台实现了宾馆客房系统的基本功能,使得用户能够轻松的查找客房和客户的信息,实现一些必要的操作。