酒店客房数据库设计.docx
《酒店客房数据库设计.docx》由会员分享,可在线阅读,更多相关《酒店客房数据库设计.docx(21页珍藏版)》请在冰豆网上搜索。
酒店客房数据库设计
酒店客房数据库设计
1.系统概述
1.1酒店数据库开发前言
随着计算机技术的飞速发展,信息时代的到来,信息改变了我们这个社会。
各类行业在日常经营管理各个方面也在悄悄地走向规范化和网络化。
作为计算机及网络应用的一部分,使用计算机对客房信息进行管理,具有手工管理所无法比拟的优点。
例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高客房经营管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。
且办事效率也是决定收入的一个关键因素。
现代化的酒店组织庞大、服务项目多、信息量大,使用传统人工的方式管理文件档案,这种管理方式几乎是不可能实现的。
要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来对酒店客房进行现代化的信息管理。
所以就必须建立一个合适高效的酒店客房信息的数据库。
1.2可行性分析
现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。
一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多弊端,如:
效率低、保密性差,容易出现差错等,且对于查询空房间及已定房间等极为不方便。
所以在工作效率方面来说建立一个这样的系统是完全可行的。
另外,客房管理系统是酒店经营管理中不可缺少的部分,它的内容对于经营的决策者和管理者来说都至关重要,所以客房管理系统、信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
在酒店客房管理系统的主要任务是对酒店的客房进行管理,使用户能轻松地找到所需要的客房信息,提供订房和退房服务,并对酒店客房的业绩进行统计。
通常,酒店客房管理系统的数据库主要记录以下几个方面的信息。
(1)记录用户信息:
对酒店客房管理系统的使用员工进行管理,包括对员工的基本信息(如用户姓名、所属部门、用户类型等)进行检索、录入和修改。
(2)记录客房类型:
用户可自定义客房类型,并对其进行管理,包括对客房类型的基本信息(如类型名称、面积、床位、价格等)进行检索、录入和修改。
(3)记录客房信息:
用户对客房信息进行管理,包括对客房的基本信息(如客房号、客房类型、客房位置等)进行检索、录入和修改。
(4)记录客房经营信息:
实现对客房的订房和退房管理,包括对客房的业务信息(如客房号、入房时间、退房时间、金额等)进行检索、录入和修改。
(5)查询客户信息:
用户可对入住过酒店的客户信息进行查询,包括对客户的基本信息(如身份证号、客户姓名、联系电话)进行检索。
(6)统计经营状况:
根据酒店客房的业务记录,用户可选择不同的统计方式对营业额进行统计。
从功能描述的内容来看,本数据库的组成可以用下列六个方面的内容来描述。
我们根据这些组成成分,对应的可以给出该系统具有的六大基本功能。
系统的功能模块组成如下图:
通过以上分析可以看出要实现这些功能在技术上也是可行的。
那些数据记录的实现可以用MsSQLServer、Access、VFP中建立一定的关系表来实现。
我在设计这个数据库时是在mysql的环境下实现的。
具体实施时分为前台部分和后台管理维护两部分来设计。
在建立好数据库后,可以应用在VB、.net、JAVA的一些应用程序中,前台查询可以客房信息、为客户办理登记和预定信息并将其录入到数据库中。
后台管理员具有对数据库修改、维护、更新等所有操作权限。
所以说该系统的实现在技术上来说也是可行的。
2.系统目标和建设原则
2.1系统设计目标
本系统现在只是在局域网中应用,但是将来可以将其进行进一步的更改使其完善且可应用于广域网中,这样就可成为网上预约定房系统,可扩大经营范围提高酒店影响力等。
对于系统本身可将其应用到大、中、小等各酒店之中,来提高工作效率。
总之是本着方便用户使用,方便经营者管理客房,客房工作人员更快捷了解客房,客户更方便办理入住手续等目标来设计的。
2.2系统建设原则
本数据库在设计的过程中始终坚持以下四点基本原则:
(1)实现整体数据的结构性原则。
即在数据库中的数据不在仅仅针对某一个应用,而是面向全组织;不仅数据内部是结构化的,数据之间也是具有联系的。
(2)尽量保持数据的共享性高,冗余度低,并且容易扩充的原则。
由于设计的数据是面对整个系统且有结构的数据,不仅可以被多个用户使用,而且可以增加新的应用,使得数据库系统弹性大,易于扩充,可以适应各种需求,用户可以选取整体数据的各种子集用于不同的系统,当应用需求改变或增加时,只要重新选取不同的子集或加上一部分数据便可以满足新的需求。
(3)保持数据高度独立性的原则。
数据与程序的独立把数据的定义从程序中分离出去,加上数据的存储又由DBMS负责,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
(4)设计时必须满足关系数据库的三类完整性约束:
实体完整性、参照完整性和用户定义的完整性。
这是给定的数据模型中数据及其联系所具有的制约
和依存规则,用以限定符合数据模型的数据库状态的变化,以保证数据正确、有效、相容。
3.支撑环境规划
3.1网络逻辑结构
本系统基于的网络逻辑结构是三层C/S体系结构。
三层C/S结构分为三部分:
客户、应用服务器和数据库服务器。
客户:
实现用户界面,提供一个可视化接口来显示信息和收集数据,只与应用服务器打交道。
应用服务器:
实现应用逻辑,是连接客户与数据库服务器的桥梁,它响应用户发来的请求执行某种业务任务,并与数据库服务器打交道。
在应用过程中,该层的组件通常可分为两个以上的层次。
数据库服务器:
实现数据的定义、维护、访问、更新以及管理,并响应应用服务器的数据请求。
物理实现可以在某一种数据库管理系统中,也可以是多个异种数据库的集合,这种数据库可以驻留在多种平台上。
基于三层C/S的酒店客房管理系统的结构示意图下:
3.2软件支撑环境及开发工具
系统可以在Windows98以上系列操作系统正确运行。
系统开发环境及开发工具:
操作系统:
MicrosoftWindowsXPProfessional版本2002ServicePack2
开发工具:
mysql
NetBeansIDE5.0
4.系统总体结构
4.1总体DFD
DFD,数据流图可以表示现行系统的信息流动和加工处理等详细情况,是现行系统的一种逻辑抽象,独立于系统的实现。
在系统的设计过程中可以根据系统的业务流程分别来设计数据流图。
通过对系统业务流程进行分析,可以初步预定系统的总体数据流图如下:
4.2功能结构设计
根据题目所给要求知道该系统的主要具有以下几个功能:
(1)入住:
就是客户通过在酒店前台服务员登记后直接住入自己所要求客房。
入住客房流程如下图
(1)所示。
(2)退房:
就是客户结束与该酒店之间的业务。
退房流程如下图所示。
(3)转房:
客户在一个房间入住一段时间后,又通过申请转到另一间客房入住。
转房业务如上图
(2)所示。
(4)房租:
指客户从入住到客房到退房的这个过程中,按照单价和住宿时间应该向酒店缴纳的住房费用。
(5)房间状况:
指房间内的软硬件状况。
(6)房间预定:
指客户在入住之前首先与酒店联系,缴纳一定的定金后与酒店约定在将来的某个时候入住哪个或一些房间。
4.3数据库结构
4.3.1数据字典
数据字典表达了数据和处理的关系,是系统中各类数据描述的集合,是进行详细的数据收集和数据分析所获得的主要成果。
数据字典的内容将在数据库的设计过程中不断的修改、充实和完善。
一般数据字典中包含以下几部分的数据描述:
数据项:
数据的最小单位。
描述包含数据项名、含义、别名、类型、长度、取值范围以及与其他数据项的逻辑关系。
数据结构:
若干数据项有意义的集合。
描述包含数据结构名、含义说明和组成该数据结构的数据项名。
数据流:
可以是数据项,更一般的情况下是数据结构,表示某一处理过程的输入或输出数据。
描述包含数据流名、说明、从什么处理过程来,到什么处理过程去以及组成该数据流的数据结构或数据项。
通过对本系统业务流程的理解分析可以建立以下数据项:
客房类型的数据项描述:
数据项名
数据项含义
类型
长度
备注
类型编号
客房所属类型的编号
INT
4
对应唯一一个客房类型
类型名称
客房所属类型的名称
CHAR
4
客房面积
客房的大小
FLOAT
8
面积为平方米
床位个数
客房最多能住的客户数
INT
4
最大取值为4
客房单价
病人电话
DECIMAL
8,0
单位(元/天)
客房条件描述
说明客房的软硬件设施
VARCHAR
50
客房的数据项描述:
数据项名
数据项含义
类型
长度
备注
客房编号
客房编号
INT
4
唯一确定一间客房
类型编号
病房位置
CHAR
4
客房状态
客房当前状所处态
INT
4
0表示空,1表示已被预定,2表示已入住
客房位置
客房位置
VARCHAR
20
酒店员工的数据项描述:
数据项名
数据项含义
类型
长度
备注
员工编号
员工编号
INT
4
唯一确定一名员工
员工姓名
员工名字
VARCHAR
10
员工性别
病房位置
CHAR
2
只能取‘男’或‘女’
联系方式
与员工联系的方法
VARCHAR
50
可以是电话、E-mail、地址等
所属部门
所属部门
VARCHAR
10
客户的数据项描述:
数据项名
数据项含义
类型
长度
备注
证件号码
客户证件的
VARCHAR
20
唯一确定一个客户
客户姓名
客户名字
VARCHAR
10
客户性别
性别记录
CHAR
2
只能取‘男’或‘女’
客户电话
与联系客户
VARCHAR
10
预定房的数据项描述:
数据项名
数据项含义
类型
长度
备注
员工编号
员工编号
INT
4
唯一确定一名员工
证件号码
客户证件的编号
VARCHAR
20
唯一确定一个客户
预定时间
预定时间
DATA
预定时的时间
客房编号
客房编号
INT
4
唯一确定一名客房
住房情况的数据项描述:
数据项名
数据项含义
类型
长度
备注
客房编号
客房编号
INT
4
唯一确定一名客房
入住时间
客户开始入住的时间
DATA
退房时间
客户退房的时间
DATA
预定时的时间
住房费用
这段时间内的住房费用
DECIMAL
8,0
用单价和天数相乘
证件号码
客户证件的编号
VARCHAR
20
唯一确定一个客户
4.3.2E-R图设计
E-R图提供了表示实体型、属性和联系的方法。
实体型用矩形表示,矩形框内写明实体名。
属性用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型。
如果一个联系也具有属性,则这些属性也要用无向边与该联系连接起来。
下面将要对所设计数据库中涉及到的实体、实体属性和实体间的联系进行分析和设计。
(1)实体及其属性分析
根据分析可以确定数据库中游以下四个实体:
酒店员工、客房类型、客房和客户。
其中酒店员工这个实体包含的属性有员工编号、员工姓名、员工性别、联系方式、所属部门。
客房类型实体包含的属性有类型编号、类型名称、客房面积、床位个数、单价、条件描述。
客房实体包含的属性有客房编号、类型编号、客房状态、客房位置。
客户实体包含的属性有证件号码、客户姓名、客户性别客户电话。
(2)分E-R图设计
1)客房类型与客房之间的关系。
一间客房只能属于一种类型,但是一种类型的客房可以有多间,它们间的实体联系图可以表示为:
2)客房与客户之间的关系。
一个客房可能同时有几个客户入住,但是一个客户依次只能入住一个房间,它们间的实体联系图可以表示为:
3)员工与客户之间的关系。
一个员工可以为多个客户办理预定房手续,一个客户也可以找多个员工办理预定房手续,它们间的实体联系图可以表示为:
(3)整体E-R设计
对于分E-R图,它们之间往往存在冲突。
合并时不能简单的将上述的各个分E-R图画在一起,必须要消除各个分E-R图中的冲突,以形成一个能为全系统所有用户所共同理解和接受的统一的概念模型。
该系统整体E-R图如下:
4.3.3关系数据库模式
关系模型的逻辑结构是一组关系模式的集合。
将E-R图转换为关系模型实际上就是将实体型、实体型的属性和实体之间的联系转换为一组关系模式。
根据设计好的E-R图和转换需要遵守以下原则可以将本系统E-R图转换为以下一组关系模式,其中关系模式的码用下横线标出。
酒店员工(员工编号,员工姓名,员工性别,联系方式,所属部门)
客房类型(类型编号,类型名称,客房面积,床位个数,单价,条件描述)
客房(客房编号,类型编号,客房状态,客房位置)
客户(证件号码,客户姓名,客户性别,客户电话)
入住信息(客房编号,入住时间,证件号码,退房时间,住房费用)
预定信息(员工编号,证件号码,预定时间,客房编号)
5.总体实施计划
5.1基本表的建立
根据4.3.3节中建立的关系数据库模式可以建立一个数据库,切概述句哭中包括了6个基本表。
数据库及基本表可以直接在SQLServer的企业管理器中建立,也可以用SQL语句在SQLServer的查询分析器中建立。
因为在SQLServer的企业管理器中建立是可视化的操作,这里就不详述,读者可以自己根据提示去建立。
以下描述用SQL语句在SQLServer的查询分析器中建立的方法,在建的过程中注意设置一些完整性的约束,以保持数据的一致性。
1.建立酒店员工信息表:
CREATETABLE员工
(员工编号INTNOTNULL,
员工姓名VARCHAR(10)NOTNULL,
员工性别CHAR
(2)CHECK(员工性别IN('男','女')),
联系方式VARCHAR(50)NOTNULL,
所属部门VARCHAR(10)NOTNULL,
primarykey(员工编号)
)
2.建立客户信息表:
CREATETABLE客户
(证件号码VARCHAR(20)NOTNULL,
客户姓名VARCHAR(10)NOTNULL,
客户性别CHAR
(2)CHECK(客户性别IN('男','女')),客户电话VARCHAR(10),
primarykey(证件号码))
3.建立客房信息表:
CREATETABLE客房
(客房编号int(4)NOTNULL,
类型编号int(4)NOTNULL,
客房状态int(4)CHECK(客房状态IN('0','1','2')),
客房位置VARCHAR(20),
primarykey(客房编号))
altertable客房
addconstraint客房_客房类型foreignkey(类型编号)references客房类型(类型编号)
ondeleterestrictonupdaterestrict
4.建立客房类型表:
CREATETABLE客房类型
(类型编号char(4)NOTNULL,
类型名称varchar(10)NOTNULL,
客房面积float(8)notnull,
床位个数int(4)notnull,
单价DECIMAL(8)notnull,
条件描述varchar(50)notnull,
primarykey(类型编号)
)
5.建立入住登记表:
CREATETABLE入住登记
(客房编号int(4)NOTNULL,
入住时间dateNOTNULL,
证件号码varchar(20)notnull,
退房时间datenotnull,
住房费用DECIMAL(8)notnull,
primarykey(客房编号,入住时间)
)
altertable入住登记
addconstraint入住_客房编号foreignkey(客房编号)references客房(客房编号)
ondeleterestrictonupdaterestrict
altertable入住登记
addconstraint入住_证件号码foreignkey(证件号码)references客户(证件号码)
ondeleterestrictonupdaterestrict
altertable预定信息
addconstraint预定_员工编号foreignkey(员工编号)references员工(员工编号)
ondeleterestrictonupdaterestrict
6.建立预定信息表:
CREATETABLE预定信息
(员工编号int(4)NOTNULL,
证件号码varchar(20)notnull
预定时间datetimenotnull,
客房编号int(4)notnull,
primarykey(证件号码,预定时间)
)
altertable预定信息
addconstraint预定_证件号码foreignkey(证件号码)references客户(证件号码)
ondeleterestrictonupdaterestrict
altertable预定信息
addconstraint预定_客房编号foreignkey(客房编号)references客房(客房编号)
ondeleterestrictonupdaterestrict
5.2关系图设计
在建立好基本表之后,可以在企业管理器你所建的数据库的关系图栏目中建立6个表的关系图如下:
5.3创建角色
由于不用的系统用户会拥有不同的权限,这样才能保证数据库的安全性。
所以为了合理的分配权限,可以在数据库中建立不同的角色,并授于不同的权限,再把这些角色的权限分配给用户。
在这个系统中我建立了两个角色:
一个相当与管理员,他拥有对该数据库的所有操作权限;一个相当于酒店前台服务员,他拥有多昂信息的查询,为客户处理业务(包括登记和预定)等业务。
管理员这个角色我命名为admin,赋予的权限如下:
6.应用程序访问
经过上面的设计,进行数据库相关的初始化后,利用JAVA语言设计出系统的雏形,并实现和设计出的数据库互连。
鉴于演示和测试,这里只实现功能需求中的2个模块:
员工登陆和入住登记。
员工登陆界面,如图:
初始化的数据库中员工数据有,如下图:
当输入的员工姓名和编号为:
王六,0,显示为:
当输入的员工姓名和编号为:
李瑞,0,显示为:
选择入住功能界面为:
输入正确后信息,在数据库表客户,客房,入住登记中的数据记录均显示正确。
7.研制报告
7.1研制过程
本次课程设计在研制的过程中,我到图书馆借阅了许多的许多参考文献,另外还在互连网上下载了写相关的资料作为参考,再结合自己的理解及和同学们的讨论最终研制完成的。
其中在研制的过程中,遇到的最大困难就是在于确定实体及实体间的联系,并画出合理的E-R图。
在和同学的讨论过程中大家提出了不少意见,但都不太合理,最后是把自己的理解和同学们的意见综合完成的。
但是,老师在检查时提了不少问题,给了不少很好的意见,最终根据老师的意见在原来的基础上修改成现在这个数据库。
7.2系统的特点、不足
我认为这个系统的最大不足在于没有实现和客户的交互部分。
因为现在的大型酒店随处都有供客户查询信息的设备,而该系统中没有设定客户级的使用权限,所以对于大型酒店来说是不适用的。
另外现在许多酒店都实现了网络互联,客户在网上看到有关酒店的各种信息,还可以直接在网上实现预定的业务。
虽然这个系统存在这些不足,但它完全本次课程设计的要求,实现入住、退房、转房、房租、房间状况、房间预定等主要功能。
7.3心得体会
通过此次数据库的课程设计我感觉收获很多。
不仅仅温故了学过的课本知识,更重要的是为我们提供了一次专业方面的实践机会,为我们积累了实践经验。
数据库可以说是一门及其重要的课程,尤其我们作为软件工程专业的学生,因为任何一个系统都离不数据库。
只靠在书本上学的那点知识要来开发一个高效的数据库是远远不够的。
这次课程设计为我们提供了一次实践的好机会,提高了我们把课本所学的知识运用到实践中来,利用所掌握的课本知识来分析解决实际问题的能力。
另外,通过此次课程设计,让我充分任务到了自己在许多方面的不足之处,使自己给以后的学习过程中不断改进,从而取得更大的进步。
6.参考文献
1.王珊.数据库系统简明教程.北京:
高等教育出版社,2004
2.杨昭,数据库技术课程设计案例精编。
中国水利水电出版社,2006
3.萨师煊,王珊.数据库系统概论.第三版.北京:
高等教育出版社,2000
4.王珊,陈红.数据库系统教程.北京:
清华大学出版社,2006
5.周龙骧等.分布式数据库管理系统实现技术.北京:
科学出版社,1998
6.徐洁磐,马玉书,范明.数据库系统导论.北京:
科学出版社,1999
7.李昭原.数据库技术新进展.北京:
清华大学出版社,1997
8.何守才.数据库综合大词典.上海:
上海科学技术文献出版社,2007