资源描述
《数据库系统原理A》实验文档
酒店客房管理系统
作 者 姓 名: 李芳、沈若冰
专业、班级 : 计算机科学与技术095
学 号 : 09422034、0942
指 导 教 师: 赵宏伟
完 成 日 期: -6-26
大连大学
Dalian University
摘要
随着计算机技术飞速发展,信息时代到来,信息变化了咱们这个社会。客房管理信息化限度体当前将计算机及网络与信息技术应用于经营与管理,以当代化工具代替老式手工作业。酒店客房管理系统是酒店经营管理中不可缺少某些,它内容对于经营决策者和管理者来说都至关重要。因此,使用网络信息化管理客房,不但可以避免使用老式人工方式管理文献档案时浮现效率低、保密性差,误差多等弊端,并且对于查询空房间及已定房间极为以便。这些长处可以极大地提高客房经营管理效率,也是公司科学化、正规化管理,与世界接轨重要条件。此外,办事效率也是决定收入一种核心因素。因此,电脑技术和电脑服务引入酒店管理成为一种必然趋势。建立酒店客房管理信息系统,采用计算机对客房信息进行管理,可以进一步提高酒店经济效益和当代化水平,协助酒店工作人员提高工作效率,实现客房信息管理工作流程系统化、规范化和自动化。本系统采用Visual C#.NET程序来编写,同步一种系统开发建立数据库是至关重要,因此本课题数据库采用是具备强大功能关系数据库语言SQL Server,通过建立数据源使得Visual C#.NET与后台数据库连接来运营。
目录
一、前景 3
1.1课题背景 3
1.2系统开发环境 3
二、需求分析 3
2.1 客房管理员对系统需求 3
2.2 前台工作人员对功能需求 4
2.3 数据流图构建 4
2.4 数据字典构建 5
三、系统功能总体设计 9
四、数据库构造设计与实现 10
4.1 实体关系(E-R)图设计 10
4.2建立数据库模型 11
4.3创立表 12
4.4 创立触发器 13
4.4创立视图 14
4.5创立存储过程 16
五、参照文献 20
一、 前景
1.1课题背景
随着社会发展,酒店服务行业与国际市场接轨已是大势所趋,酒店是一种服务至上行业,从客人预定开始,到入住登记直至最后退房结账,每一环节都要保持一致性。随着计算机科学飞速发展,给酒店计算机应用带来了蓬勃生机,计算机在酒店应用中,已进一步到各个部门,特别在信息解决方面,计算机成了最为重要工具。在酒店当代管理理论中,酒店管理系统是酒店经营必不可少工具。
本酒店管理系统是针对酒店客房管理,以以便管理酒店客房状态、信息,为顾客提供了简朴、迅速服务,让顾客及时理解酒店客房运营状况、经营状况,从而提高酒店服务质量,获得更好经济效益
1.2系统开发环境
本系统采用单机版构造,前台开发工具是ASP.NET,后台数据库是Microsoft SQL Server ,软件规定:操作系统为Windows 或Windows XP或更高版本。
二、需求分析
酒店在正常运营中需要对客房资源、顾客信息、客房结算信息进行管理,运用酒店客房管理系统及时理解各个环节中信息变更,提高管理效率。系统开发总体任务是实现客房信息系统化、规范化和自动化。重要涉及客房管理员、前台工作人员对功能需求。
2.1 客房管理员对系统需求
(1)顾客信息维护
浏览所有顾客信息。顾客信息涉及顾客编号、顾客角色、权限、密码、联系电话、电子邮件、所在部门等。还需要添加新顾客、删除过期顾客、修改顾客信息等功能。
(2)客房信息维护
浏览所有客房信息。客房信息涉及房间编号、房间类型编号、房间位置、房间描述、房间状态等。还需要添加新客房、删除房间、修改房间信息等功能。
(3)客房类型维护
浏览所有客房类型信息。客房类型涉及类型编号、类型名称、价格、类型描述、与否配备空调等。还需要添加新客房类型、删除过期类型、修改客房类型等功能。
(4)营业状况记录
按照不同需求,如按日期、房间号、房间类别等,对客房营业额记录。
2.2 前台工作人员对功能需求
(1)客房信息查询,涉及空闲、已住、所有客房信息。
(2)订房信息输入,涉及客房号、顾客身份证号、订房日期等。
(3)结算信息功能实现。核对顾客信息后,点击“退房”系统自动显示结算金额、退房时间。这一功能重要涉及房间号、房间类型、顾客身份证号、订房日期、退房日期等信息。
2.3 数据流图构建
数据流图(date flow diagram ,DFD),是SA办法中用于表达系统逻辑模型一种工具,它以图形方式描绘数据在系统中流动和解决过程,由于它只反映系统必要完毕逻辑功能,因此它是一种功能模型。数据流图是从数据角度来描述一种系统,数据流图适合于宏观地分析一种组织业务概况。
图一:酒店客房管理系统第一层数据流图
图二:合法性检查二层数据流图
图三:合法性检查二层数据流图
图四:事务解决二层数据流图
2.4 数据字典构建
数据字典作用是在软件分析和设计过程中给人提供关于数据描述信息。它重要是对数据流图中数据流、解决逻辑、外部实体、数据存储和数据项等方面进行详细定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统逻辑模型进行完整描述。
(1) 数据项定义
数据元素是不可再分数据单位,普通而言,涉及如下内容:数据项描述={数据项名,数据项含义阐明,别名,数据类型,长度,取值范畴,取值含义,与其她数据项逻辑关系,数据项之间联系}。其中,后两项定义了数据完整性约束条件,用于数据校验。详细内容,如表3.1所示。
表3.1 酒店客房管理系统数据项定义
编号
名称
别名
数据类型
长度
I01
UserID
顾客名
varchar
50
I02
UserPwd
顾客密码
varchar
50
I03
UserRole
顾客角色
varchar
50
I04
UserPower
顾客权限
int
4
I05
UserSex
顾客性别
bit
1
I06
UserName
顾客姓名
varchar
50
I07
UserAddress
顾客住址
varchar
50
I08
UserTel
顾客联系电话
varchar
50
I09
UserEmail
顾客电子邮箱
varchar
50
I10
UserDept
顾客所在部门
varchar
50
I11
TypeID
客房类型编号
varchar
50
I12
TypeName
客房类型名称
varchar
50
I13
TypeArea
客房原则面积
float
8
I14
TypeBedSum
客房原则床位
int
2
I15
TypePrice
原则收费
money
8
I16
TypeAirCondition
与否配备空调
bit
1
I17
TypeTV
与否配备电视
bit
1
I18
TypeDescribe
类型描述
varchar
200
I19
RoomID
房间编号
varchar
50
I20
RoomPosition
房间位置
varchar
50
I21
RoomDescribe
房间描述
varchar
200
I22
CusName
入住客人姓名
varchar
50
I23
CusIDCard
入住客人身份证号
varchar
19
I24
CusBookDate
订房日期
datetime
I25
CusEndDate
退房日期
datetime
I26
CusPay
结账金额
money
8
I27
SID
状态编号
varchar
50
I28
SClean
清洁状况
varchar
50
I29
SDescribe
状态描述
varchar
50
I30
State
房间当前状态
bit
1
(2) 数据流定义
酒店客房管理系统数据流:
数据流编号:D1
数据流名称:登录信息
数据流来源:顾客
数据流去向:管理系统
数据流构成:I01+I02
数据流编号:D2
数据流名称:顾客名
数据流来源:顾客
数据流去向:管理系统
数据流构成:I01
数据流编号:D3
数据流名称:权限
数据流来源:系统顾客表
数据流去向:管理系统
数据流构成:I04
数据流编号:D4
数据流名称:角色
数据流来源:系统顾客表
数据流去向:管理系统
数据流构成:I03
数据流编号:D13
数据流名称:顾客密码
数据流来源:管理系统
数据流去向:顾客信息表
数据流构成:I2
数据流编号:D6
数据流名称:预订信息
数据流来源:顾客
数据流去向:管理系统
数据流构成:I19+I22+I23+I24
数据流编号:D7
数据流名称:客房状态
数据流来源:客房状态表
数据流去向:管理系统
数据流构成:I30
数据流编号:D8
数据流名称:退房祈求
数据流来源:顾客
数据流去向:管理系统
数据流构成:I22+I23+I19
数据流编号:D9
数据流名称:费用结算
数据流来源:管理系统
数据流去向:顾客
数据流构成:I15+I24+I25
数据流编号:D10
数据流名称:退房信息
数据流来源:顾客
数据流去向:管理系统
数据流构成:I25+I26
数据流编号:D11
数据流名称:客房信息变动
数据流来源:客房
数据流去向:客房信息表
数据流构成:I11+I19+I20+I21+I27
数据流编号:D12
数据流名称:客房类型变动
数据流来源:客房
数据流去向:客房类型表
数据流构成:I11—I18
(3) 数据存储描述
数据存储编号:F1
数据存储名称:系统顾客表
简 述: 记录顾客信息。
数据存储构成:数据项I1—I10
数据存储编号:F2
数据存储名称:入住信息
简 述:存储顾客入住信息
数据存储构成: 顾客编号+顾客姓名+顾客身份证号+入住房间号+预订日期+退房时间+结算金额
数据存储编号:F3
数据存储名称:客房信息
简 述: 记录客房信息
数据存储构成:房间编号+房间类型+房间描述+房间状态编号+房间位置
数据存储编号:F4
数据存储名称:客房类型
简 述: 存储客房类型信息
数据存储构成:数据项I11—I18
数据存储编号:F5
数据存储名称:客房状态
简 述: 存储客房状态
数据存储构成:房间编号+房间状态
三、系统功能总体设计
在需求分析基本上,对酒店客房管理系统所要实现功能可以细分为如下几种模块:新顾客注册、顾客信息维护、客房信息维护、客房类型维护、客房营业状况记录、客房经营管理、个人密码修改。系统顾客可以分为两类权限:客房管理员、前台工作人员。其中客房经营管理模块分为客房状况浏览、客房状况控制,重要用于客房预订和退房结算解决。
系统功能图如图所示:
客房管理系统
客房经营管理模块
顾客信息维护模块
房间管理
退房操作
订房操作
营业状况记录
房间信息维护模块
房间信息维护模块
个人密码修改
删除顾客信息
添加顾客信息
新 顾客注册
房间类型高查询
添加房间类型
删除房间类型
房间类型修改
删除房间信息
房间信息修改
房间信息查询
添加房间信息
四、数据库构造设计与实现
由于在数据库设计是要同步考虑多方面问题,也使设计工作变得十分复杂,咱们需要使用数据库分析工具来实现。在酒店客房管理系统数据库设计中,咱们使用了PowerDesigner来进行E-R图设计和数据库模型实现。
4.1 实体关系(E-R)图设计
通过度析酒店客房管理系统需求和系统功能,咱们将酒店客房管理系统实体分为顾客、客房、客房状态、客房类型和入住客户。本系统E-R图如下:
4.2建立数据库模型
在E-R图基本上运用Powerdesigner生成数据库模型如下:
4.3创立表
表一:顾客信息表Users
序号
英文名
中文名
数据类型
长度
1
UserID
顾客名
varchar
50
2
UserPwd
顾客密码
varchar
50
3
UserPower
顾客权限
int
4
4
UserRole
顾客角色
varchar
50
5
UserName
顾客姓名
varchar
50
6
UserSex
性别
tinyint
1
7
UserAddress
住址
varchar
50
8
UserTel
联系电话
varchar
50
9
UserEmail
电子邮件
varchar
50
10
UserDept
所在部门
varchar
50
表二:入住信息表OccupyGuest
序号
英文名
中文名
数据类型
长度
1
RoomID
房间编号
varchar
50
2
CusName
顾客姓名
varchar
50
3
CusIDCard
顾客身份证号
varchar
19
4
CusBookDate
订房日期
datetime
8
5
CusEndDate
退房日期
datetime
8
6
CusPay
结账金额
money
8
表三:房间状态表RoomState
序号
英文名
中文名
数据类型
长度
1
SID
状态编号
varchar
50
2
State
空闲
tinyint
1
3
Sclean
清洁
varchar
50
4
SDescribe
描述
varchar
50
表四:房间类型表RoomType
序号
英文名
中文名
数据类型
长度
1
TypeID
类型编号
varchar
50
2
TypeName
类型名称
varchar
50
3
TypeArea
面积
real
4
4
TypeBedSum
床位数量
int
4
5
TypePrice
价格
money
8
6
TypeAirCondition
与否有空调
tinyint
1
7
TypeTV
与否有电视
tinyint
1
8
TypeDescribe
类型描述
varchar
200
表五:房间信息表Room
序号
英文名
中文名
数据类型
长度
1
RoomID
房间编号
varchar
50
2
TypeID
类型编号
varchar
50
3
SID
状态编号
varchar
50
4
RoomPosition
房间位置
varchar
50
5
RoomDescribe
房间描述
varchar
200
4.4 创立触发器
create trigger insert_OccupyGuest on OccupyGuest
for insert
as begin
declare @CusEndDate datetime
declare @CusBookDate datetime
select @CusBookDate=CusBookDate,@CusEndDate=CusEndDate
from inserted
if (@CusBookDate>@CusEndDate)
rollback transaction
end
当退房时结账日期在预定日期前时触发
create trigger insert_Users on Users
for insert
as begin
declare @sex tinyint
select @sex=UserSex from inserted
if (@sex not in ('1','0'))
rollback transaction
end
性别插入错误是触发,1表达男,0表达女
4.4创立视图
创立AllRoomList视图,显示所有房间有关信息
Create view AllRoomList
(RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe,State)
as select
RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe,State
from RoomType,Room,RoomState
where Room.TypeID=RoomType.TypeID and Room.SID=RoomState.SID
创立FreeRoomList视图显示空闲房间有关信息,订房时使用
create view FreeRoomList
(RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe)
as select
RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe
from RoomType,Room,RoomState
where Room.TypeID=RoomType.TypeID and
Room.SID=RoomState.SID and RoomState.State=0
创立RoomLiveDetail视图,显示已住房间有关信息,退房时使用
create view RoomLiveDetail
RoomLiveDetail
(RoomID,TypeName,CusBookDate,TypePrice,CusIDCard,CusName)
As select
OccupyGuest.RoomID,TypeName,CusBookDate,TypePrice,CusIDCard,CusName
from RoomType,Room,RoomState,OccupyGuest
where Room.TypeID=RoomType.TypeID and OccupyGuest.CusPay=0
and Room.SID=RoomState.SID and RoomState.State=1
and OccupyGuest.RoomID=Room.RoomID
创立RoomDetail视图,显示所有客房信息,对房间信息查询,更新时使用
Create view RoomDetailList
(RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe)
as select RoomID,TypeName,RoomPosition,TypePrice,RoomDescribe
from RoomType,Room
where Room.TypeID=RoomType.TypeID
create view RoomLiveCheckOut
(RoomID,CusName,CusBookDate,CusIDCard,TypePrice)
as select OccupyGuest.RoomID,CusName,CusBookDate,CusIDCard,TypePrice
from OccupyGuest,Room,RoomType
where OccupyGuest.CusPay=0 and OccupyGuest.RoomID=Room.RoomID
and Room.TypeID=RoomType.TypeID
创立RoomLiveCheckOut视图,顾客退房时从视图获取信息,做修改
create view RoomLiveCheckOut
(RoomID,CusName,CusBookDate,CusIDCard,TypePrice)
as select OccupyGuest.RoomID,CusName,CusBookDate,CusIDCard,TypePrice
from OccupyGuest,Room,RoomType
where OccupyGuest.CusPay=0 and OccupyGuest.RoomID=Room.RoomID and Room.TypeID=RoomType.TypeID
创立TypeDetailList视图,用于前台查询和更新操作
create view TypeDetailList
(TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe)
as select TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe
from RoomType
创立视图UserDetailList,用于管理员进入系统时查询和更新顾客信息
create view UserDetailList
(UserID,UserName,UserEmail,UserTel,UserRole)
as select UserID,UserName,UserEmail,UserTel,UserRole
from Users
创立SellBill视图,用于查询客房营业状况
create view SellBill
(RoomID,TypeName,CusBookDate,CusEndDate,CusPay)
As select
OccupyGuest.RoomID,RoomType.TypeName,CusBookDate,CusEndDate,CusPay
from RoomType,Room,OccupyGuest
where Room.TypeID=RoomType.TypeID
and OccupyGuest.RoomID=Room.RoomID and CusPay>0
create view TypeDetailList
(TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe)
as select TypeID,TypeName,TypeArea,TypeBedSum,TypePrice,TypeDescribe
from RoomType
create view UserDetailList
(UserID,UserName,UserEmail,UserTel,UserRole)
as select UserID,UserName,UserEmail,UserTel,UserRole
from Users
4.5创立存储过程
顾客密码修改存储过程
create procedure [PasswordModify]
(
@UserID [varchar](50),@UserPwd [varchar](50)
)
as update [Users]
set [UserPwd]=@UserPwd
where UserID=@UserID
GO
顾客退房结账时将结算金额,退房时间存入OccupyGuest表
CREATE procedure [RoomCheckOut]
( @RoomID [varchar](50),@CusIDCard [varchar](50),
@CusEndDate [datetime],@CusPay [money]
)
as update [HRM].[dbo].[OccupyGuest]
set [CusEndDate]=@CusEndDate,[CusPay]=@CusPay
where
(
[RoomID]=@RoomID and [CusPay]=0 and [CusIDCard]=@CusIDCard
)
GO
结账退房后将房间状态修改
CREATE procedure [RoomStateUpdate2]
(
@RoomID [varchar](50)
)
as update [HRM].[dbo].[Room]
set [SID]=0
where RoomID=@RoomID
GO
顾客订房时,将住房信息存入OccupyGuest表
CREATE procedure [OrderRoom]
(
@RoomID [varchar](50),@CusName [varchar](50),
@CusIDCard [varchar](50),@CusBookDate [datetime]
)
as insert into [HRM].[dbo].[OccupyGuest]
(
[RoomID],[CusName],[CusIDCard],[CusBookDate],[Cuspay]
)
values
(
@RoomID,@CusName,@CusIDCard,@CusBookDate,0
)
GO
订房后对房间状态做修改
CREATE procedure [RoomStateUpdate1]
(
@RoomID [varchar](50)
)
as update [HRM].[dbo].[Room]
set [SID]=1
where RoomID=@RoomID
GO
添加房间信息时,将新信息存入Room表
create procedure [RoomAdd]
(
@RoomID [varchar](50),@TypeID [varchar](50),
@SID [varchar](50),@RoomPosition [varchar](50),
@RoomDescribe [varchar](50)
)
as insert into [HRM].[dbo].[Room]
(
[RoomID],[TypeID],[SID],[RoomPosition],[RoomDescribe]
)
values
(
@RoomID,@TypeID,@SID,@RoomPosition,@RoomDescribe
)
GO
在Room表中删除房间信息
create procedure [GuestRoomUpdate]
(
@RoomID [varchar](50),
@TypeID [varchar](50),@SID [varchar](50),
@RoomPosition [varchar](50), @RoomDescribe [varchar](50)
)
as update [HRM].[dbo].[Room]
set
[TypeID]=@TypeID,[SID]=@SID,
[RoomPosition]= @RoomPosition,[RoomDescribe]=@RoomDescribe
where ([RoomID]=@RoomID)
GO
添加新居间类型到RoomType表
create procedure [RoomTypeAdd]
(
@TypeID [varchar](50),@TypeName [varchar](50),@TypeArea [real],
@TypeBedSum [int],@TypeAirCondition [bit],@TypeTV [bit],
@TypePrice [money],@TypeDescribe [varchar](50)
)
as insert into [HRM].[dbo].[RoomType]
(
[TypeID],[TypeName],[TypeArea],[TypeBedSum],[TypeAirCondition],[TypePrice],[TypeTV],[TypeDescribe]
)
values
(
@TypeID,@TypeName,@TypeArea,@TypeBedSum,
@TypeAirCondition,@TypePrice,@TypeTV,@TypeDescribe
)
GO
房间类型有更新时,将新信息插入RoomType表中
create procedure [RoomTypeUpdate]
(
@TypeID [varchar](50),@TypeName [varchar](50),@TypeArea [float] (8),
@TypeBedSum [int],@TypeAirCondition [bit],@TypeTV [bit],
@TypePrice [money],@TypeDescribe [varchar](50)
)
as update [HRM].[dbo].[RoomType]
set
[TypeName]=@TypeName,[TypeArea]=@TypeArea,[TypeBedSum]=@TypeBedSum,
[TypeAirCondition]=@TypeAirCondition,[TypePrice]=@TypePrice,[TypeTV]=@TypeTV,[TypeDescribe]=@TypeDescribe
where ([TypeID]=@TypeID)
GO
为顾客信息表添加新顾客,或注册新顾客
CREATE PROCEDURE [UserAdd]
(
@UserID [varchar](50),@UserPwd [varchar](50),
@UserPower [int],@UserSex [bit],@UserName [varchar](50),
@UserAddress [varchar](50),@UserTel varchar](50),
@UserEmail [varchar](50),@UserDept [varchar](50),
@UserRole [varchar](50)
)
AS INSERT INTO [HRM].[dbo].[Users]
(
[UserID],[UserPwd],[UserPower],[UserSex],[UserName],
[UserAddress],[UserTel],[UserEmail],[UserDept],[UserRole]
)
VALUES
(
@UserID,@UserPwd,@UserPower,@UserSex,@UserName,
@UserAddress,@UserTel,@UserEmail,@UserDept,@UserRole
)
GO
从顾客信息表中删除顾客
CREATE procedure [UserDelete]
(
@UserID [varchar](50)
)
as delete [HRM].[dbo].[Users]
where ([UserID]=@UserID)
GO
五、参照文献
[1] 王珊,萨师煊. 数据库系统概论第四版 [M]. 高等教诲出版社.
[2] 孙印杰. ASP.NET+SQL Server动态网站设计实例精解 [M]. 电子工业出版社.
展开阅读全文