酒店管理系统.docx
《酒店管理系统.docx》由会员分享,可在线阅读,更多相关《酒店管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
酒店管理系统
课程设计报告
课程设计题目:
酒店管理系统数据库
学生姓名:
韩波
专业:
网络工程
班级:
10211303
学号:
1021130335
指导教师:
游胜玉
2011年11月26日
东华理工大学
实验题目
题目8:
酒店管理系统数据库的设计与实现
描述:
设计一个酒店管理系统,实现下列功能:
1.酒店客房信息维护(包括录入,修改和删除);
2.客人信息维护(包括录入,修改和删除;)
3.入住信息登记;
酒店管理系统关系模式:
房号(房间号,类型,状态,价格,位置,床位数)
入住信息(房间号,证件号,姓名,性别,入住日期)
退房信息(房间号,证件号,结算日期,应付金额)
旅客(证件类型,证件号,姓名,性别,年龄,籍贯,现住址,职业)
使用(物品号,证件号,姓名,使用日期,押金)
物品(物品号,数量,价格,用途)
E---R图
一:
创建酒店管理系统数据库
createdatabase酒店管理系统/*创建酒店管理系统数据库*/
二:
创建客房信息表并添加数据
createtable客房/*创建客房信息表*/
(
房间号char(8)primarykey,
类型varchar(16)notnull,
状态char(8)notnull,
价格smallmoneynotnull,
位置varchar(14)notnull,
床位数intcheck(床位数>0)notnull
)
insertinto客房values('101','普通间','在使用',50,'三楼',2)
insertinto客房values('102','普通间','在使用',40,'三楼',1)
insertinto客房values('103','空调间','未使用',80,'三楼',2)
insertinto客房values('104','空调间','在使用',60,'二楼',1)
insertinto客房values('105','豪华间','在使用',200,'二楼',2)
insertinto客房values('106','豪华间','在使用',180,'一楼',1)
insertinto客房values('107','贵宾间','未使用',300,'一楼',1)
insertinto客房values('108','贵宾间','在使用',400,'一楼',2)
所建的表为:
房间号
类型
状态
价格
位置
床位数
101
普通间
在使用
50.0000
三楼
2
102
普通间
在使用
40.0000
三楼
1
103
空调间
未使用
80.0000
三楼
2
104
空调间
在使用
60.0000
二楼
1
105
豪华间
在使用
200.0000
二楼
2
106
豪华间
在使用
180.0000
一楼
1
107
贵宾间
未使用
300.0000
一楼
1
108
贵宾间
在使用
400.0000
一楼
2
三:
创建旅客信息表并添加数据
createtable旅客/*创建旅客信息表*/
(
证件类型varchar(16),
证件号varchar(18)notnull,
姓名varchar(10)notnull,
性别char(4)notnull,
年龄intcheck(年龄>0)notnull,
籍贯textnotnull,
现住址textnotnull,
职业varchar(20)notnull
)
insertinto旅客values('学生证','10211303','赵亦','男',20,'河北唐山','江西南昌','学生')
insertinto旅客values('身份证','1021134357','钱尔','男',24,'北京大兴区','上海浦东','工程师')
insertinto旅客values('军官证','4236789','李思','男',30,'江西抚州','广州','团长')
insertinto旅客values('身份证','10432187','孙珊','女',32,'湖北武汉','湖南长沙','教师')
insertinto旅客values('身份证','1234876','周武','男',35,'南昌','香港','公务员')
insertinto旅客values('身份证','1357674','吴丽','女',40,'南京','合肥','经理')
所建的表为:
证件类型
证件号
姓名
性别
年龄
籍贯
现住址
职业
学生证
10211303
赵亦
男
20
河北唐山
江西南昌
学生
身份证
1021134357
钱尔
男
24
北京大兴区
上海浦东
工程师
军官证
4236789
李思
男
30
江西抚州
广州
团长
身份证
10432187
孙珊
女
女
湖北武汉
湖南长沙
教师
身份证
1234876
周武
男
35
南昌
香港
公务员
身份证
1357674
吴丽
女
40
南京
合肥
经理
四:
创建入住信息表并添加数据
createtable入住信息/*创建入住信息表*/
(
房间号char(8)notnull,
证件号varchar(18)notnull,
姓名varchar(10)notnull,
性别char(4)notnull,
入住日期datetimenotnull
)
insertinto入住信息values('101','10211303','赵亦','男','2011-5-3')
insertinto入住信息values('102','1021134357','钱尔','男','2011-2-6')
insertinto入住信息values('104','4236789','李思','男','2011-8-7')
insertinto入住信息values('105','10432187','孙珊','女','2011-7-4')
insertinto入住信息values('106','1234876','周武','男','2011-3-6')
insertinto入住信息values('108','11357674','吴丽','女','2011-9-2')
所建的表为:
房间号
证件号
姓名
性别
入住日期
101
10211303
赵亦
男
2011-05-0300:
00:
00.000
102
1021134357
钱尔
男
2011-02-0600:
00:
00.000
104
4236789
李思
男
2011-08-0700:
00:
00.000
105
10432187
孙珊
女
2011-07-0400:
00:
00.000
106
1234876
周武
男
2011-03-0600:
00:
00.000
108
11357674
吴丽
女
2011-09-0200:
00:
00.000
五:
创建退房信息表并添加数据
createtable退房信息/*创建退房信息表*/
(
房间号char(8)notnull,
证件号varchar(18)notnull,
结算日期datetime,
应付金额smallmoney
)
insertinto退房信息(房间号,证件号)values('101','101211303')
insertinto退房信息(房间号,证件号)values('102','10121134357')
所建的表为:
房间号
证件号
结算日期
应付金额
101
101211303
NULL
NULL
102
10121134357
NULL
NULL
六:
创建使用表并添加数据
createtable使用/*创建使用表*/
(
物品号char(6)notnull,
证件号varchar(18),
使用日期datetime,
押金smallmoney
)
insertinto使用values('001','11357674','2011-10-2',50)
所建的表为:
物品号
证件号
使用日期
押金
001
11357674
2011-10-0200:
00:
00.000
50.0000
001113576742011-10-0200:
00:
00.00050.0000
七:
创建物品表并添加数据
createtable物品/*创建物品表*/
(
物品号char(6)notnull,
物品名varchar(16)notnull,
数量intnotnull,
价格moneynotnull,
用途text
)
insertinto物品values('001','毛巾',100,20,'洗浴')
insertinto物品values('002','牙膏',50,10,'洗漱')
insertinto物品values('003','拖鞋',80,30,'穿着')
insertinto物品values('004','香皂',100,8,'洗浴')
所建的表为:
物品号
物品名
数量
价格
用途
001
毛巾
100
20.0000
洗浴
002
牙膏
50
10.0000
洗漱
003
拖鞋
80
30.0000
穿着
004
香皂
100
8.0000
洗浴
八:
创建旅客录入的存储过程
createprocedure旅客录入/*录入旅客信息的存储过程*/
@证件类型varchar(16),--输入参数,对应表各字段
@证件号varchar(18),
@姓名varchar(10),
@性别char(4),
@年龄int,
@籍贯text,
@现住址text,
@职业varchar(20),
@返回信息varchar(50)=nulloutput--输出参数,执行结果返回信息
as
begintran--启用事务
--检查是否有同一客人记录
ifexists(select证件号,姓名from旅客where证件号=@证件号and姓名=@姓名)
begin
select@返回信息='已存在该客人信息'
gotoonerror
end
--新增客人信息
insertinto旅客(证件类型,证件号,姓名,性别,年龄,籍贯,现住址,职业)values(@证件类型,@证件号,@姓名,@性别,@年龄,
@籍贯,@现住址,@职业)
if@@error<>0
begin
select@返回信息='新增失败'
gotoonerror
end
select@返回信息='新增成功'
committran
return
--出错处理
onerror:
rollbacktran
return
declare@姓名varchar(10)
declare@返回信息varchar(50)
exec旅客录入@证件类型='学生证',@证件号='2345346554',@姓名='张锦杰',@性别='男',@年龄=19,@籍贯='广东汕尾',
@现住址='江西南昌',@职业='学生'
print'姓名'+@姓名
select*from旅客
dropprocedure旅客录入
droptable旅客
九:
创建旅客修改的存储过程
createprocedure旅客修改/*修改旅客信息的存储过程*/
@证件类型varchar(16),--输入参数,对应表各字段
@证件号varchar(18),
@姓名varchar(10),
@性别char(4),
@年龄int,
@籍贯text,
@现住址text,
@职业varchar(20),
@返回信息varchar(50)=nulloutput--输出参数,执行结果返回信息
as
ifnotexists(select证件号from旅客where证件号=@证件号)
select@返回信息='不存在此旅客的信息'
update旅客
set证件类型=@证件类型,姓名=@姓名,性别=@性别,年龄=@年龄,籍贯=@籍贯,现住址=@现住址,职业=@职业
where证件号=@证件号
exec旅客修改@证件号='1357674',@证件类型='身份证',@姓名='吴丽',@性别='女',@年龄=48,@籍贯='南京',
@现住址='合肥',@职业='经理'
declare@返回信息varchar(50)
print'返回信息'+@返回信息
select'返回信息'=@返回信息
select*from旅客
dropprocedure旅客修改
十:
创建旅客删除的存储过程
createprocedure旅客删除/*删除旅客信息的存储过程*/
@证件号varchar(18),
@返回信息varchar(50)=nulloutput
as
begintran
ifnotexists(select证件号from旅客where证件号=@证件号)
begin
select@返回信息='不存在此旅客的信息'
gotoonerror
end
deletefrom旅客where证件号=@证件号
if@@error<>0
begin
select@返回信息='删除失败'
gotoonerror
end
select@返回信息='成功删除'
committran--提交事务
return
onerror:
rollbacktran
return
declare@证件号varchar(18)
declare@返回信息varchar(50)
exec旅客删除@证件号='10211303'
select*from旅客
dropprocedure旅客删除
十一:
创建客房录入的存储过程
createprocedure客房录入/*录入客房信息的存储过程*/
@房间号char(8),
@类型varchar(16),
@状态char(8),
@价格smallmoney,
@位置varchar(14),
@床位数int,
@返回信息varchar(50)=nulloutput
as
begintran
ifexists(select房间号from客房where房间号=@房间号)
begin
select@返回信息='已存在该客房信息'
gotoonerror
end
insertinto客房(房间号,类型,状态,价格,位置,床位数)values(@房间号,@类型,@状态,@价格,@位置,@床位数)
if@@error<>0
begin
select@返回信息='新增失败'
gotoonerror
end
select@返回信息='新增成功'
committran
return
onerror:
rollbacktran
return
declare@返回信息varchar(50)
exec客房录入@房间号='109',@类型='标准间',@状态='未使用',@价格=50,@位置='四楼',@床位数=2
dropprocedure客房录入
deletefrom客房where房间号='109'
select*from客房
十二:
创建客房修改的存储过程
createprocedure客房修改/*客房修改的存储过程*/
@房间号char(8),
@类型varchar(16),
@状态char(8),
@价格smallmoney,
@位置varchar(14),
@床位数int,
@返回信息varchar(50)=nulloutput--输出参数,执行结果返回信息
as
ifnotexists(select房间号from客房where客房.房间号=@房间号)
select@返回信息='不存在该客房信息'
print@返回信息+'返回信息'
--修改客房信息
update客房
set类型=@类型,状态=@状态,价格=@价格,位置=@位置,床位数=@床位数
where客房.房间号=@房间号
exec客房修改@房间号='1018',@类型='普通间',@状态='在使用',@价格=500,@位置='三楼',@床位数=2
declare@返回信息varchar(50)
select'返回信息'=@返回信息
print@返回信息+'返回信息'
select*from客房
dropprocedure客房修改
十三:
创建客房删除的存储过程
createprocedure客房删除/*删除客房信息的存储过程*/
@房间号varchar(18),
@返回信息varchar(50)=nulloutput
as
begintran
ifnotexists(select房间号from客房where房间号=@房间号)
begin
select@返回信息='不存在此客房的信息'
gotoonerror
end
deletefrom客房where房间号=@房间号
if@@error<>0
begin
select@返回信息='删除失败'
gotoonerror
end
select@返回信息='成功删除'
committran--提交事务
return
onerror:
rollbacktran
return
declare@房间号varchar(18)
declare@返回信息varchar(50)
exec客房删除@房间号='101'
select*from客房
dropprocedure客房删除
十四:
创建客房查询的存储过程
createprocedure客房查询/*查询客房信息的存储过程*/
@房间号char(8),
@类型varchar(16)output,
@状态char(8)output,
@价格smallmoneyoutput,
@位置varchar(14)output,
@床位数intoutput
as
select类型,状态,价格,位置,床位数
from客房
where房间号=@房间号
declare@房间号char(8)
declare@类型varchar(16)
declare@状态char(8)
declare@价格smallmoney
declare@位置varchar(14)
declare@床位数int
exec客房查询'101',@类型output,@状态output,@价格output,@位置output,@床位数output
print@状态+'状态'
dropprocedure客房查询
十五:
创建付款的存储过程
createprocedure付款(@证件号varchar(18),@房间号char(8))
as
update退房信息
set结算日期=getdate()
where证件号=@证件号and结算日期isnull
declare@价格smallmoney
select价格from客房where房间号=@房间号
select入住日期asdafrom入住信息where证件号=@证件号
update退房信息
set应付金额=datediff(dd,da,getdate())*@价格
where证件号=@证件号and应付金额isnull--and退房信息.证件号=入住信息.证件号
update客房set状态='未使用'where房间号=@房间号
exec付款@证件号='10211303',@房间号='101'
dropprocedure付款
select*from客房
select*from旅客
select*from入住信息
select*from退房信息
十六:
创建入住登记触发器
createtrigger入住登记触发/*入住登记触发器*/
on入住信息
forinsert
as
begin
update客房set状态='在使用'where房间号in(select房间号frominserted)
end
droptrigger入住登记触发
select*from入住信息
select*from客房
insertinto入住信息values('103','10204','张金杰','男','2011-8-8')
十七:
创建退房触发器
createtrigger退房触发器/*退房触发*/
on退房信息
forinsert
as
begin
update客房set状态='未使用'where房间号in(select房间号frominserted)
deletefrom旅客where证件号in(select证件号frominserted)
deletefrom入住信息where房间号in(select房间号frominserted)
deletefrom使用where证件号in(select证件号frominserted)
end
insertinto退房信息values('101','10211303','2011-9-8',34)
droptrigger退房触发器
select*from客房
select*from旅客
select*from入住信息
select*from退房信息
se