宾馆客房管理系统.docx
《宾馆客房管理系统.docx》由会员分享,可在线阅读,更多相关《宾馆客房管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
宾馆客房管理系统
课程设计
宾馆客房管理系统
姓名
院(系)
专业年级
学号
指导教师
职称
起止时间
目录
1概述
目前较多的宾馆在客房管理上还处于人工阶段,效率低下且存在较多问题,为减少类似弊端开发此系统,以实现客房管理的电子化、科学化与现代化。
宾馆是现代社会服务行业体系中的重要组成部分,它在社会发展中有着不可替代的作用。
在当今经济和商务交往日益频繁的状况下,客房服务行业正面临客流量骤增的压力。
2需求与功能分析
传统的宾店客房管理一直以来使用人工的方式管理文件档案,这种管理方式存在着许多缺点,如:
效率低、保密性差;时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难;管理者往往要花大量的时间来处理烦琐的登记和结帐手续;不能及时提供空余客房资料等问题,将直接影响出租率。
据此现状,开发出本宾馆客房管理系统,通过本系统的应用不仅可以使宾馆客房管理科学化、正规化,而且对于提高员工工作效率,加速资金周转、降低各项成本及改善服务质量都有十分积极的作用。
本系统主要功能如下:
(1)客人入住和退房时,宾馆管理人员对旅客基本信息的更新;
(2)客人入住和退房时,宾馆管理人员对客房基本信息的查询和状态更新;
(3)客人入住、续住和退房时,宾馆管理人员对客人住宿信息的查询和更新;
3概要设计
宾馆客房管理系统顶层数据流图
宾馆客房管理系统第0层数据流图
4数据库设计
局部E-R图
全局E-R图,附加属性参见局部图
客户信息表(customer)
字段名称
含义
类型
长度
是否为空
黙认值
主键
外键
约束
id
身份证号
varchar
20
N
P
name
姓名
varchar
20
N
sex
性别
varchar
2
N
Checkin(‘男’,’女’)
age
年龄
int
N
phone
联系号码
varchar
20
Y
客房信息表(room)
字段名称
含义
类型
长度
是否为空
黙认值
主键
外键
约束
num
房间号
varchar
10
N
P
Type
客房类型
varchar
20
N
price
价格(xx元/天)
numeric
8
N
status
房间状态
varchar
20
N
check(status='空'orstatus='满')
订单信息表(reservation)
字段名称
含义
类型
长度
是否为空
黙认值
主键
外键
约束
Book_id
订单号
Int
N
P
identity(1,1)
id
身份证号
varchar
20
N
F
referencescustomer(id)
num
房间号
varchar
10
N
F
referencesroom(num)
Check_in
入住日期
Smalldatetime
N
Check_out
退房日期
Smalldatetime
Y
Deadline
截至日期
Smalldatetime
N
Quit_type
退房类型
varchar(10)
check(quit_type='调房'orquit_type='到期'orquit_type='退订')
Sum
结算额
Int
0
5关键技术实现
--===========================================================================================
useHotel_Booking
if(object_id('tgr_check_in','tr')isnotnull)
-----触发器,客户订房触发,设置房间状态
droptriggertgr_check_in
go
createtriggertgr_check_in
onreservation
forinsert--插入触发
as
declare@numvarchar(10)
select@num=numfrominserted
updateroom
setstatus='满'
wherenum=@num
go
--===========================================================================================
useHotel_Booking
if(object_id('tgr_quit_type','tr')isnotnull)
-------触发器,客户退房,调房触发,设置房间状态
droptriggertgr_quit_type
go
createtriggertgr_quit_type
onreservation
forupdate--更新触发
as
declare@quit_typevarchar(10),@numvarchar(10)
select@quit_type=quit_type,@num=numfrominserted
updateroom
setstatus='空'
wherenum=@numand@quit_typeisnotnull--到期置空
go
--===========================================================================================
useHotel_Booking
if(object_id('tgr_quit_print','tr')isnotnull)
-------触发器,退房时,结算显示
droptriggertgr_quit_print
go
createtriggertgr_quit_print
onreservation
forupdate--更新触发
as
ifupdate(quit_type)
begin
select(cast((selectsumfrominserted)asvarchar(20)))[目前结算金额]
end
go
--===========================================================================================
createviewbook_status-------------视图,订房情况
as
selectc.book_idas订票号,
a.nameas客户名,
a.sexas性别,
a.ageas年龄,
b.numas房间号,
b.typeas房间类型,
b.priceas[价格(xx元/天)],
a.phoneas客户电话,
a.idas客户身份证号,
c.deadline[截止期]
fromcustomera,roomb,reservationc
wherea.id=c.idandb.num=c.numandc.check_outisnull
go
--===========================================================================================
createviewroom_available-----------视图,可用房间查询
as
select*
fromroom
wherestatus='空'
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_available','P')isnotnull)
--------存储过程,查看可用房间
dropprocproc_available
go
createprocproc_available
as
select*fromroom_available
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_book_status','P')isnotnull)
--------存储过程,查看正在使用的房间
dropprocproc_book_status
go
createprocproc_book_status
as
select*frombook_status
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_book','P')isnotnull)
-----存储过程,新客户订房
dropprocproc_book
go
createprocproc_book(@numvarchar(10),@book_datesmalldatetime,@lastint,@idvarchar(20),@namevarchar(20),@sexvarchar
(2),@ageint,@phonevarchar(20))
as
declare@errorint
set@error=@@error
begintran
ifnotexists(select*fromcustomerwhereid=@id)
begin
insertcustomervalues(@id,@name,@sex,@age,@phone)
end
set@error=@error+@@error
if'空'<>(selectstatusfromroomwherenum=@num)
begin
rollbacktran
return0
end
set@error=@error+@@error
insertreservationvalues(@id,@num,@book_date,null,CAST(dateadd(day,@last,cast(@book_dateassmalldatetime))assmalldatetime),null,0)
set@error=@error+@@error
updateroomsetstatus='满'wherenum=@num
if(@error<>0)
begin
rollbacktran
return0
end
else
begin
committran
return1
end
go
调用测试
--===========================================================================================
useHotel_Booking
if(object_id('proc_change','P')isnotnull)
-----存储过程,客户调房
dropprocproc_change
go
createprocproc_change(@num1varchar(10),@num2varchar(10))
as
declare@errorint
declare@book_idint
set@error=@@error
if(selectstatusfromroomwherenum=@num2)<>'空'
begin
print('该房间正在使用中')
return0
end
begintran
select@book_id=book_idfromreservationwherenum=@num1andcheck_outisnull
set@error=@error+@@error
updatereservation
setcheck_out=convert(smalldatetime,GETDATE())
fromreservation
where@book_id=book_id
set@error=@error+@@error
updatereservation
setsum=(DATEDIFF(day,check_in,check_out)+1)*(selectpricefromroomwherenum=@num1)
fromreservation
where@book_id=book_id
set@error=@error+@@error
updatereservation
setquit_type='调房'
fromreservation
where@book_id=book_id
set@error=@error+@@error
insertreservation
selectid,@num2,convert(smalldatetime,GETDATE()),null,deadline,null,sum
fromreservation
where@book_id=book_id
set@error=@error+@@error
if(@error<>0)
begin
rollbacktran
return0
end
else
begin
committran
return1
end
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_quit','P')isnotnull)
-----存储过程,客户退房
dropprocproc_quit
go
createprocproc_quit(@numvarchar(10))
as
declare@@sumint
declare@errorint
declare@check_insmalldatetime
declare@check_outsmalldatetime
set@@sum=0
set@error=0
begintran
updatereservation
setcheck_out=CONVERT(smalldatetime,getdate())
wherequit_typeisnullandnum=@num
set@error=@error+@@ERROR
select@@sum=sumfromreservationwherequit_typeisnullandnum=@num
set@error=@error+@@ERROR
select@check_in=check_in,@check_out=check_outfromreservationwherequit_typeisnullandnum=@num
set@error=@error+@@ERROR
set@@sum=@@sum+
(DATEDIFF(day,@check_in,@check_out)+1)*(selectpricefromroomwherenum=@num)
set@error=@error+@@ERROR
updatereservation
setsum=@@sum
wherequit_typeisnullandnum=@num
set@error=@error+@@ERROR
updatereservation
setquit_type='到期'
wherequit_typeisnullandnum=@num
set@error=@error+@@ERROR
if(@error<>0)
begin
rollbacktran
end
else
begin
committran
end
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_renewal','P')isnotnull)
-----存储过程,客户续房
dropprocproc_renewal
go
createprocproc_renewal(@room_numvarchar(10),@day_numint)
as
declare@errorint
set@error=0
begintran
updatereservation
setdeadline=CONVERT(smalldatetime,dateadd(day,@day_num,deadline))
wherenum=@room_numandquit_typeisnull
set@error=@error+@@ERROR
if(@error<>0)
begin
rollbacktran
return0
end
else
begin
committran
return1
end
go
--===========================================================================================
useHotel_Booking
if(object_id('proc_customer_from_room','P')isnotnull)
-----存储过程,查看某个房间的客户信息
dropprocproc_customer_from_room
go
createprocproc_customer_from_room(@room_numvarchar(10))
as
select*fromcustomera
whereexists
(select*fromreservationbwherea.id=b.idandb.num=@room_numandb.quit_typeisnull)
Go
--===========================================================================================
useHotel_Booking
if(object_id('proc_room_from_customer','P')isnotnull)
-----存储过程,查看某个客户所用房间的信息
dropprocproc_room_from_customer
go
createprocproc_room_from_customer(@idvarchar(20))
as
select*fromrooma
whereexists
(select*fromreservationbwhereb.id=@idandb.num=a.numandb.quit_typeisnull)
go
6数据库安全性控制
--===============================================================================
--首先在SQLServer服务器级别,创建登陆帐户(createlogin)
createlogindba
withpassword='password',
default_database=master
--创建数据库用户(createuser)
useHotel_Booking
createuserdba
forlogindba
withdefault_schema=dbo
--通过加入数据库角色,赋予数据库用户“dba”权限:
execsp_addrolemember'db_owner','dba'
--禁用、启用登陆帐户:
alterlogindbadisable
alterlogindbaenable
--登陆帐户改名:
alterlogindbawithname=dba_tom
--数据库用户改名
alteruserdbawithname=dba_tom
--删除指定登录名
droplogindba
--===============================================================================数据库的备份与恢复
backupdatabasehotel_booki