1、酒店管理系统设计毕业论文设计(此文档为word格式,下载后您可任意编辑修改!) 酒店管理系统设计张平(德州学院物理系,山东德州253023)摘 要 本论文针对酒店管理系统的简单的功能进行设计,以求达到对酒店的简单管理。共分为三章。第一章主要阐述了该应用系统的设计思路,其中包括系统的功能目标、功能模块的设计图以及应用系统的开发工具;第二章主要讲述数据库设计过程,包括数据库的需求分析、概念结构设计以及逻辑结构设计;第三章是整个论文的主体部分,主要介绍各个主体模块的功能实现以及源程序代码。本论文的设计过程中,应用了图形界面的应用程序开发环境Power Builder 9.0以及SQL Server
2、7 作为后台数据库支持,通过PB9.0 与数据库的连接完成了对数据库现存数据的操作,从而实现了对整个酒店系统的管理。关键词 酒店管理系统; 功能模块; 数据库; Power Builder 9.0; SQL; Server 7绪论在科技高速发展的今天,一切的商业行为都能跟计算机搭上边。这不仅仅是为了不落后于时代,不被主流所淘汰,更是为了更好的借助于计算机来实现更大的商业利益。随着更多的人接受电子商务,以及年轻一代享受电脑带来的方便、迅速,酒店行业也不例外的加入了电子商务时代的行列。现代化的酒店是集客房、餐饮、通讯、娱乐,商务文化及其他各种服务与设施为一体化的消费场所。酒店在正常的运营中需要对客
3、房资源、顾客信息、结算信息等进行管理,但是酒店组织庞大,服务项目多,信息量大,要想提高效率,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。酒店管理系统正是为此而设计的。1 系统的功能框架设计1.1 功能目标 该酒店管理系统主要有两大功能模块,即:客房部管理和餐饮部管理。 1.1.1 客房管理 该模块主要用来实现客户登记,并打印入住单。根据客人的需求查询房间,进而选定房间,并填写客人信息,完成登记,最后打印入住单。要求实现查询客房状态(占用或空房)、显示客房类型(标准间、单人间、豪华间等)和查看已入住客户信息等功能。 1.1.2 餐饮管理餐饮管理分菜单
4、、点菜、结帐、报表、菜谱编辑等。下面列举一些最主要的功能: 菜单:列出常用菜名称、编号、所属类别、定价等内容。 点菜:记录点菜单、定价、台号、就餐人数、就餐人员类别、就餐时间、服务员等。结帐:记录结算信息。 1.1.3 系统维护 该功能模块为用户提供维护、设置功能。在相应的设置模块中用户可以自行设置系统的数据,设置完成以后该设置立刻会在系统中生效,并在下一次的使用中反映出来。在这里,数据维护非常重要的,它的作用是将系统中用户选择的数据进行初始化,一旦操作完成,系统中原有的数据将会被全部删除,所以需慎重使用。1.2 功能模块图酒店管理系统的功能模块如图1-1。图1-1 酒店管理系统功能模块图1.
5、3 开发工具选择 1.3.1 前台开发工具的选择 该酒店管理系统前端开发工具为PowerBuilder9.0,PowerBuilder是一个图形界面的应用程序开发环境。在ClientServer结构的应用中,PowerBuilder具有描述多个数据库连接与检索的前端能力。尤其是PowerBuilder能从大多数流行的RDBMS中存取数据,且不管数据存放在什么地方。另外,各种应用程序又可以独立于RDBMS,因为PowerBuilder可以与数据库的标准操纵语言SQL(结构化查询语言)进行通信。 PowerBuilder相对于其他应用程序开发环境来说,可使开发人员的工作更快、成本更低、质量更高、功
6、能更强。PowerBuilder为应用开发提供了全面支持,可以概括为如下五点。 事件驱动应用程序 PowerScript 语言与函数 面向对象的编程 跨平台开发 与数据库的连接性 1.3.2 数据库OS平台的选择 该酒店管理系统选用sql server7作为后台数据库支持。2 数据库设计2.1 数据库需求分析根据对客房部的功能需求分析,画出系统的数据流图,如图2-1。图2-1 客房部数据流图 通过对酒店客房部管理的内容和数据流程分析,设计的数据项和数据结构如下: 客房信息:包括的数据项有房间号、房间类型、房间状态。 客房登记信息:包含数据项有姓名、性别、职业、工作单位、联系电话、证件名称、 证
7、件号码、住址、国籍、房间号、登记时间、预付金、折扣、备注。 客房结帐信息:包含数据项有房间号、姓名、性别、证件名称、证件号、国籍、退房时间、住宿天数、预付金、住宿费、其他费用、总费用、折扣、收银员、备注。 客房预定信息:包含数据项有房间号、预定人姓名、证件名称、证件号码、押金、联系电话、操作员、备注。 根据对餐饮部的功能需求分析,画出系统的数据流图,如图2-1。图2-2 客房部数据流图餐桌信息:桌号、状态。菜单信息:包括的数据项有菜名、所属类别、所属子类、价格、折扣、实收价格、备注。菜统计:菜名、份数、金额、桌号、就餐时间、是否结帐。就餐结帐:桌号、就餐人数、就餐时间、结帐时间、服务员名、就餐
8、费、其他费用、总费用、支付方式、收银员、备注。定餐信息:桌号、定餐人姓名、联系电话、定餐时间、就餐时间、备注。2.2 数据库概念结构设计根据上面设计,规划出实体ER图有:客房实体、客户实体、开房登记实体、退房结帐实体。图2-3 客房实体ER图图2-4 客户实体ER图图2-5 开房登记实体ER图图2-6 退房结帐实体ER图图2-7 菜单信息实体ER图图2-8 就餐结帐实体ER图图2-9 菜统计实体ER图图2-10 定餐信息实体ER图2.3 数据库逻辑结构设计表2-1 客房类型(kf_leixing)字段名字段类型字段长度可否为空 说明Kf_leixing varchar10Not null 客房
9、类型(主键)Kf_jageNumeric8.2Null 客房价格Kf_mzzongshuintegerNull 每种客房总数Kf_beizhuvarchar100 Null 备注表2-2 房间信息(kf_xinxi)字段名字段类型字段长度可否为空 说明Kf_noVarchar6Not null 房间号(主键)Kf_leixingVarchar10Null 客房类型(外键)Kf_kongfouVarchar2Null 是否空闲表2-3 客房登记信息(kf_dengjixinxi)字段名字段类型字段长度可否为空 说明NameVarchar10Not null 登记人姓名SexVarchar2Nul
10、l 登记人性别ZhiyeVarchar40Null 职业GzdanweiVarchar40Null 工作单位TelVarchar12Null 联系电话ZhengjiannameVarchar10Null 证件名称ZhengjianhaoVarchar20Null 证件号码ZhuzhiVarchar40Null 住址GuojiVarchar10Null 国籍Kf_noVarchar6Null 房间号(外键)DengjishijianTimestampNull 登记时间YufujinNumeric 6.2Null预付金zhifufangshiVarchar20Null 支付方式(外键)zhekou
11、Numeric 2.1Null 折扣beizhuVarchar100 Null 备注表2-4 客房预定(kf_yuding)字段名字段类型字段长度可否为空 说明IdVarchar10Not null Id号Kf_noVarchar3Null 客房号NameVarchar10Null 预定人姓名ZhengjiannameVarchar20Null 证件名ZhengjianhaoVarchar20Null 证件号YajinNumeric 9Null 押金LianxitelVarchar12Null 联系电话CaozuoyuanVarchar10Null 操作员beizhuVarchar512Nul
12、l 备注表2-5 客房结帐(kf_jiezhang)字段名字段类型字段长度可否为空 说明Kf_noVarchar6Not null 房间号(主键)NameVarchar10Not null 姓名SexVarchar2Null 性别ZhengjiannameVarchar10Null 证件名称ZhengjianhaoVarchar20Null 证件号GuojiVarchar10Null 国籍TuifangdateTimestampNull 退房时间Yufujin Numeric 6.2Null 预付金ZhekouNumeric 2.1Null 折扣Zhusutianshuinteger3Null
13、 住宿天数ZhusufeiNumeric 6.2Null 住宿费QitafeiNumeric 6.2Null 其他费用ZongfeiNumeric 6.2Null总费用XujiaofeiNumeric 6.2Null 续交费用ShouyinyuanVarchar10Null 收银员beizhuVarchar100 Null 备注表2-6 菜单信息(caidan1)字段名字段类型字段长度可否为空 说明cainameVarchar10Not null 菜名class Varchar20Null 所属类别subclassVarchar20Null 所属子类JiageNumeric 11.2 Null
14、 价格ZhekouNumeric 4.2Null折扣ShishoujiageNumeric 11.2 Null 实收价格beizhuVarchar512Null 备注表2-7 就餐结帐(jc_jiezhang)字段名字段类型字段长度可否为空 说明zhuohaovarchar5Not null 桌号jiucanrenshuint2Null 就餐人数jiucanshijianTimestampNull 就餐时间jiezhangshijianTimestampNull 结帐时间Fuwuyuan_noVarchar10Null 服务员名jiucanfeiNumeric 9.2Null 就餐费Qitaf
15、eiNumeric 9.2Null 其他费用ZongfeiyongNumeric 9.2Null 总费用zhifufangshiVarchar20Null 支付方式(外键)ShouyinyuanVarchar10Null 收银员BeizhuVarchar1000Null 备注表2-8 定餐信息(dc_xinxi)字段名字段类型字段长度可否为空 说明Zhu_noVarchar5Not null 桌号NameVarchar10Null 定餐人姓名telVarchar12Null 联系电话DizhiVarchar60Null 地址DctimeTimestampNull 定餐时间JctimeTimes
16、tampNull 就餐时间Beizhuvarchar512 Null 备注表2-9 餐桌信息(canzhuoinfo)字段名字段类型字段长度可否为空 说明Zhuohaovarchar5Not null 桌号(主键)zhuangtaiVarchar10Null 状态表2-10 菜统计(cai_tongji)字段名字段类型字段长度可否为空 说明IdVarchar10Not null (主键)CaimingVarchar30Null 菜名FenshuInt Null 份数JineNumeric 9Null 金额ZhuohaoVarchar5Null 桌号JiucantimeDatetime Null
17、 就餐时间shifoujiezhangvarchar4Null 是否结帐表2-11 就餐登记字段名字段类型字段长度可否为空 说明idvarchar5Not null id号zhuohaoVarchar5Not null 桌号Jiucanren_nameVarchar10Null 姓名renshuVarchar2Null人数jiucantimedatetimeNull 就餐时间FuwuyuanVarchar10Null 服务员姓名3 系统实现3.1 客房登记模块 该系统模块完成的功能主要为用户登记并打印入住单发票,是客房管理系统的重要模块之一。展现给用户的两个界面,即两个窗口分别为w_kf_de
18、ngji和w_kf_dengji_ruzhudan和以上窗口相关连还有三个数据窗口和四个表,分别为dw_kf_all,dw_kf_zhuangtai,dw_kf_rzxx;kf_dengjixinxi,kf_leixing,kf_xinxi,kf_jiezhang。其实现登记功能的界面如图3-1所示。图3-1 实现登记功能的界面 该界面主要分为两大区域,即客房状态区和用户注册区。在客房状态区的左上角的下拉列表框中显示的是所有可供选择的房间的类别,根据住客需求来选择某类房间时,在下拉菜单选项中“空房间”,即可进行检索。检索结果在左边的下半部(数据窗口dw_1)中显示出来,其中包括房号,类别,价格
19、。具体实现代码如下: if ddlb_1.text=所有可供 then ddlb_1.text=所有可供 dw_1.dataobject=dw_kf_all dw_1.settransobject(sqlca) dw_1.retrieve(空房间) dw_1.selectrow(0,false) else dw_1.dataobject=dw_kf_zhuangtai dw_1.settransobject(sqlca) dw_1.retrieve(ddlb_1.text,空房间) dw_1.selectrow(0,false) end if 在dw_1中双击某一行时,该行相关信息将显示在该窗
20、口的右半部分,即用户注册区。实现代码为: sle_1.text=dw_1.GetItemstring(dw_1.getrow(),1) sle_2.text=dw_1.GetItemstring(dw_1.getrow(),2) sle_3.text=string(dw_1.GetItemnumber(dw_1.getrow(),3) 当成功的完成了用户信息的注册后,即点击cb_1按扭则具有该用户信息的空房间记录将被修改为入住房,则在下一次检索空房间记录时,此房间信息将不被显示。该过程用insert语句将用户的信息插入到表kf_dengjixinxi和kf_jiezhang中。具体实现代码如下
21、: select count(id) into :num from kf_dengjixinxi; bb=string(num+1) insert into kf_dengjixinxi values (:bb,:sle_9.text,:sle_8.text,:sle_6.text,:sle_5.text,:sle_7.text,:ddlb_2.text,:sle_12.text,:sle_15.text,:sle_14.text,:sle_1.text,:dt,:cc,:ddlb_3.text,:dd,:mle_1.text,:sle_16.text,否); update kf_xinxi
22、set kf_zhuangtai=入住房 where kf_no=:sle_1.text; select count(id) into :num1 from kf_jiezhang; jz_num=string(num1+1) insert into kf_jiezhang (id,kf_no,name,sex,zhengjianname,zhengjianhao,guoji,yufujin,shouyinyuan,beizhu,shifoujiezhang) values (:jz_num,:sle_1.text,:sle_9.text,:sle_8.text,:ddlb_2.text,:s
23、le_12.text,:sle_14.text,:cc,:sle_16.text,:mle_1.text,否); commit; dw_1.dataobject=dw_kf_all dw_1.settransobject(sqlca) dw_1.retrieve(空房间) sle_4.setfocus() sle_13.text=string(datetime(today(),now() 此窗口中用游标实现数据窗口取数据的代码为: string ch int shu,i DECLARE kf_lx CURSOR FOR SELECT kf_leixing FROM kf_leixing; se
24、lect count(kf_leixing) into :shu from kf_leixing; open kf_lx; for i=1 to shu fetch kf_lx into :ch ; ddlb_1.additem(ch) next close kf_lx; ddlb_1.text=所有可供 dw_1.dataobject=dw_kf_all dw_1.settransobject(sqlca) dw_1.retrieve(空房间) dw_1.selectrow(0,false) if dw_1.rowcount()1 then messagebox(,暂时没有空房间!) cb_
25、1.enabled=false else sle_4.setfocus() sle_13.text=string(datetime(today(),now() end if 当点击cb_2(代码为:open(w_kf_dengji_ruzhudan))时显示的是客房入住单的界面,如图3-2。图3-2 客房入住单界面 此窗口中实现数据窗口取数据代码为: dw_1.settransobject(sqlca) dw_1.retrieve(rzxx_kfno1,否) 完成的功能为打印发票单据。3.2 就餐登记模块 客人在就餐前,一定要定下菜,主食和酒水等,即就餐登记,所以该系统包含了就餐登记,也就是开
26、单的功能。该功能所涉及的数据库表为:菜单信息表(candan1)、菜统计表(cai_tongji)。 实现该功能的第一个界面如图3-3。 图3-3 第一个界面 该界面主要分两个区域,左边是桌号图标显示区,右边是桌号图标调整区。具体操作过程为:选中一个桌号后,点击确定按钮即可显示该餐桌的详细信息,是否可用。 确定的代码如下: string zhuohao,zhuozt currentbnum=integer(left(currentitem.label,3) zhuohao=string(currentbnum) SELECT canzhuoinfo.zhuangtai INTO :zhuozt
27、 FROM canzhuoinfo WHERE canzhuoinfo.zhuohao = :zhuohao; if zhuozt=结帐 then UPDATE canzhuoinfo SET zhuangtai = 开单 WHERE canzhuoinfo.zhuohao = :zhuohao; open(w_cy_kaidan) close(parent) else messagebox(抱歉,对不起,此桌已被占用!) end if 实现该功能的第二个界面如图3-4。图3-4 第二个界面 该界面主要分两个区域,左边(数据窗口dw_1)显示所有菜的名称、价格、折扣。右边(数据窗口dw_2)显
28、示桌的详细信息,其中包括该桌所点的所有菜的名称、数量、金额以及合计多少钱等。 要添加菜,只需双击左下方的数据窗口中相应的菜即可,或选中该菜,单击添加按钮即可添加。要删除菜,只需在右侧窗口中选中要删除的菜,单击删除按钮即可。 该功能实现的具体思路是:在窗口打开代码中检索出数据窗口dw_1、dw_2的数据,在窗口打开后就将菜谱信息显示出来。添加菜时,首先检索表cai_tongji中是否有要添加的菜的信息,如果有,用update语句将该菜的份数加一,金额增加相应的数目,如果没有则在cai_tongji表中用insert语句插入该菜的信息,包括菜的名称、数量、金额、所属桌号等。然后数据窗口dw_2重新检索数据,即所添加的菜显示在数据窗口dw_2
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1