酒店管理系统(上)
数据库原理课程设计——酒店管理系统
实验报告
实验目的
1、掌握数据库设计和实现的基本方法。
2、掌握数据库模式设计、分析和实现的方法,理解规范化的作用。
3、通过 SQL 查询的设计进一步理解数据库模式的实现技巧。
4、掌握数据库应用系统开发的方法和技巧。
5、了解应用软件开发的一般过程。
实验工具
1、SQL Server 2000
2、Microsoft Visual Studio 2005
酒店管理系统概述
随着社会的发展,人们生活水平的提高,旅游成为当今休闲娱乐的新时尚。而酒
店是旅游业的三大支柱之一,是旅游综合接待能力的重要构成因素,在旅游业中
有重要的地位和作用。如何有效、规范、自动地管理酒店就显得非常重要。本次
课程设计将实现一个酒店管理系统,能自动管理旅客登记、预订房间、旅客退房、
房间查看以及房间增删等。
需求分析
本实验是设计一个酒店前台使用的提供旅客住房、订房以及查询各种信息等服务
的酒店管理系统。
酒店管理系统主要由旅客住房登记,旅客预订登记、旅客退房登记、住店旅客的
信息查询、旅客预订查询、酒店房间信息的查询、酒店房间管理等功能模块组成。
功能描述具体如下图:
概念模型设计
根据需求分析所得,可以设计出所需的数据库的概念模型。使用实体联系模型,
即 ER 图来表示数据库概念模型。
首先确定各个实体及其联系。在此 ER 模型中,主要的实体有“旅客”和“房间”。
旅客和房间之间可以通过“订房”或者“住房”来联系。
“旅客”的属性包括:姓名,性别,证件类型,证件号码,电话,籍贯,住房或
预订。其中证件号码作为该旅客实体的标识符。(“住房或预订”属性是用来标
明该旅客是住房人还是预订人或者两者都是,在删除住房记录或预订记录等情况
下需要根据此字段来决定对旅客信息的处理方式。)
“房间”的属性包括:房间号,房间类型,房价,是否空房,是否预订。其中房
间号是该房间实体的标识符。
联系也有属性。“订房”的属性包括:预订时间,预订入住时间,预订入住天数。
“住房”的属性包括:入住时间,退房时间,住房天数,费用。
经过分析后,所得 ER 模型如下图:
逻辑模型设计
得出概念模型后,就可以设计数据库的逻辑模型。逻辑模型采用关系模型。根据
ER 图可以迅速得到逻辑模型,即把 ER 模型中的实体类型和联系类型转换成关系
模式。
从上述 ER 模型中可得出“旅客信息”,“房间信息”,“住房记录”,“订房
记录”4 个关系模式。但是对“房间信息”经过分析后发现,由于房价是按照房
间类型来区别的,不同的房间类型有不同的房价标准,相同的房间类型有相同的
房价标准,若将房价包括在“房间信息”这个关系模式中的话,该关系模式将不
符合第三范式的要求,因此这里需要定义一个新的关系模式,将该关系模式命名
为收费标准,其属性是房间类型和房价。
“住房记录”表中存放当前在住旅客的住房记录,当旅客退房时,将删除相关的
住房记录。因此,关于旅客住房的天数、退房时间和费用不设置在住房记录里,
而是存放在另一个数据库表中,为该表取名为“住房历史记录”。
由于旅客的“住房历史记录”保存的是各个旅客在酒店的住房历史记录,以提供
酒店的业绩查询分析等用途,而此时的旅客信息和房间信息可能已经被删除或者
修改,因此该表中的属性应包括住房旅客的基本信息以及其住房信息,包括入住
时间,退房时间,住房天数,费用,所住房间号,房间类型,房价等信息。
经过分析后得出该数据库的逻辑模型。其关系模式集如下:
旅客信息(姓名,性别,证件类型,,电话,籍贯,住房或预订);
房间信息(,,是否空房,是否预订);
收费标准(,房价);
住房记录(,,入住时间);
订房记录(,,预订时间,预订入住时间,预订住房天数);
住房历史记录(姓名,性别,证件类型,证件号码,电话,籍贯,房间号,房间
类型,房价,,退房时间,住房天数,费用);
说明:
根据把 ER 图中的实体类型和联系类型转换成关系模式的算法,由于实体旅客和
房间的联系,即预订和住房都是 1:N 的二元联系,因此转换的处理是在 N 端即
房间模式中加入“预订”及“住房”的属性和“旅客”的主键。但是这样将在
“房间”的关系模式中产生较多的空属性值,因此设计时将把预订信息和住房信
息均作为一个独立的关系模式来处理。
建立数据库
得出关系模型后,就可以去建立数据库了。
打开 SQL Server 2000 的企业管理器,在其中新建一个名为“酒店管理系统”的
数据库。将数据库登录认证模式设置成 SQL Server 和 Windows 身份验证模式。
接着在查询分析器中,对上述 6 个关系模式一一建立基本表。
建表的代码如下:
1、收费标准
create table 收费标准 /*收费标准*/
(房间类型 char(16),
房价 int not null,
primary key(房间类型)
)
2、房间信息
create table 房间信息 /*房间信息*/
(房间号 char(5),
房间类型 char(16) not null,
是否空房 char(5) not null,
是否预订 char(5) not null,
primary key(房间号),
foreign key(房间类型)references 收费标准(房间类型)
)
3、旅客信息
create table 旅客信息 /*旅客信息*/
(姓名 char(20) not null,
性别 char(5),
证件类型 char(20) not null,
证件号码 char(20),
电话 char(20),
籍贯 char(10),
住房或预订 char(10) not null,
primary key(证件号码)
)
4、住房记录
create table 住房记录 /*住房记录*/
(证件号码 char(20) not null,
房间号 char(5),
入住时间 datetime not null,
primary key(房间号),
foreign key(证件号码)references 旅客信息(证件号码),
foreign key(房间号)references 房间信息(房间号)
)
5、订房记录
create table 订房记录 /*订房记录*/
(证件号码 char(20) not null,
房间号 char(5),
预订时间 datetime,
预订入住时间 datetime not null,
预订住房天数 int,
primary key(房间号),
foreign key(证件号码)references 旅客信息(证件号码),
foreign key(房间号)references 房间信息(房间号)
)
6、住房历史记录
create table 住房历史记录 /*住房历史记录*/
(姓名 char(20),
性别 char(5),
证件类型 char(20),
证件号码 char(20),
电话 char(20),
籍贯 char(10),
房间号 char(5) not null,
房间类型 char(16),
房价 int,
入住时间 datetime not null,
退房时间 datetime,
住房天数 int,
费用 int,
primary key(入住时间)
)
建立完各基本表后,需要事先将酒店的基本信息先输入到表中。酒店的基本信息
包括酒店房间的信息和房间收费标准。
至此,数据库设计并建立完成。
酒店管理系统(中)
系统总体设计
本酒店管理系统将以 Windows 窗体的形式来实现。在系统主界面中,用户即酒店
前台服务员可以通过单击菜单栏中的各项命令,以进入各个子功能窗体中,实现
旅客的住房、订房以及查询等操作。
整个系统共分成 9 个功能模块。每个功能对应一个操作窗体。其中包括旅客住房
登记,旅客预订登记,旅客退房登记,在住旅客信息查询,旅客预订查询,房间
查询,旅客住房历史记录查看,房间管理和房间收费查看与调整。
详细设计
以下分别为每个功能模块的实现进行详细设计。
1、主界面
设计主界面的各个菜单项,并为每个菜单项添加单击事件,以产生一个相应功能
窗口的新实例。
2、旅客住房登记
此窗体的主要功能是提供对旅客住房服务的登记。当旅客在前台登记入住酒店时,
前台服务员需输入该旅客的基本信息,然后为旅客分配适当的空房间供其入住。
因此,在此窗体中,首先服务员要输入旅客信息,包括旅客的姓名、性别、证件
类型、证件号码、电话及籍贯等(姓名,证件类型和证件号码为必填项,其余选
填),然后再按照旅客要求(为商务办公或休闲旅游,房价范围等)选择适当类
型的空房间。(说明:由于预订人信息和在住旅客信息存放在一张表中,故当住
房登记添加信息时,应先查看该旅客信息是否存在,若存在,还要查看该旅客是
否已住房,若已住房则不用再修改,若只有预订那么需要在该字段(“住房或预
订”)中加入“住房”;若旅客信息不存在,这时才将登记页面上的旅客信息添
加到旅客信息表中。)
当信息全部填写完成后,点击“确定”按钮,即可实现在数据库中添加旅客信息
到“旅客信息”表中、添加住房信息到“住房记录”中以及修改旅客所住房间的
状态,即更新“房间信息”中的房间“是否空房”属性等。点击“清空”按钮,
可删除服务员所输入的信息,以供下一位旅客登记。点击“取消”,关闭该窗体。
另外,在选择分配房间时,服务员还可以通过点击“空房间查询”按钮来打开另
一个窗体,来查看房间情况。
3、预订房间
此窗体功能与住房登记差别不大,首先也是输入预订者信息,然后再选择预订的
房间,同时必须注明该旅客的预定入住时间。声明:本酒店系统可接受 5 天内的
旅客住房预订,预订期间内,本酒店将会保留旅客预订的房间。一旦预订超出期
限,该预订即无效。
填完信息后,点击“确定”按钮,可添加旅客信息到“旅客信息”表中(旅客信
息添加过程与“住房登记”中相似),添加一条预订记录到“订房记录”表中,
修改所选房间的状态,即将该房间的“是否预订”属性设置成“是”。点击“清
空”按钮,可删除服务员所输入的信息。点击“取消”,关闭该窗体。
该窗体也设置了一个“空房间查询”按钮,功能同上。
4、退房登记
该窗口提供旅客的退房服务。
操作过程是由旅客提供退房的房间号,服务员选择了该房间号后,窗体上即会显
示该旅客的信息,以及其住房时间,退房时间(即当前时间),住房天数,其所
住房间的房间类型和房价,并在最终计算出该旅客应付的费用等信息。