酒店管理系统设计毕业论文设计Word文档下载推荐.docx
《酒店管理系统设计毕业论文设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《酒店管理系统设计毕业论文设计Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
1.1.3系统维护
该功能模块为用户提供维护、设置功能。
在相应的设置模块中用户可以自行设置系统的数据,设置完成以后该设置立刻会在系统中生效,并在下一次的使用中反映出来。
在这里,数据维护非常重要的,它的作用是将系统中用户选择的数据进行初始化,一旦操作完成,系统中原有的数据将会被全部删除,所以需慎重使用。
1.2功能模块图
酒店管理系统的功能模块如图1-1。
图1-1酒店管理系统功能模块图
1.3开发工具选择
1.3.1前台开发工具的选择
该酒店管理系统前端开发工具为PowerBuilder9.0,PowerBuilder是一个图形界面的应用程序开发环境。
在ClientServer结构的应用中,PowerBuilder具有描述多个数据库连接与检索的前端能力。
尤其是PowerBuilder能从大多数流行的RDBMS中存取数据,且不管数据存放在什么地方。
另外,各种应用程序又可以独立于RDBMS,因为PowerBuilder可以与数据库的标准操纵语言SQL(结构化查询语言)进行通信。
PowerBuilder相对于其他应用程序开发环境来说,可使开发人员的工作更快、成本更低、质量更高、功能更强。
PowerBuilder为应用开发提供了全面支持,可以概括为如下五点。
Ø
事件驱动应用程序
PowerScript语言与函数
面向对象的编程
跨平台开发
与数据库的连接性
1.3.2数据库OS平台的选择
该酒店管理系统选用sqlserver7作为后台数据库支持。
2数据库设计
2.1数据库需求分析
根据对客房部的功能需求分析,画出系统的数据流图,如图2-1。
图2-1客房部数据流图
通过对酒店客房部管理的内容和数据流程分析,设计的数据项和数据结构如下:
客房信息:
包括的数据项有房间号、房间类型、房间状态。
客房登记信息:
包含数据项有姓名、性别、职业、工作单位、联系电话、证件名称、证件号码、住址、国籍、房间号、登记时间、预付金、折扣、备注。
客房结帐信息:
包含数据项有房间号、姓名、性别、证件名称、证件号、国籍、退房时间、住宿天数、预付金、住宿费、其他费用、总费用、折扣、收银员、备注。
客房预定信息:
包含数据项有房间号、预定人姓名、证件名称、证件号码、押金、联系电话、操作员、备注。
根据对餐饮部的功能需求分析,画出系统的数据流图,如图2-1。
图2-2客房部数据流图
餐桌信息:
桌号、状态。
菜单信息:
包括的数据项有菜名、所属类别、所属子类、价格、折扣、实收价格、备注。
菜统计:
菜名、份数、金额、桌号、就餐时间、是否结帐。
就餐结帐:
桌号、就餐人数、就餐时间、结帐时间、服务员名、就餐费、其他费用、总费用、支付方式、收银员、备注。
定餐信息:
桌号、定餐人姓名、联系电话、定餐时间、就餐时间、备注。
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
varchar
10
Notnull
客房类型(主键)
Kf_jage
Numeric
8.2
Null
客房价格
Kf_mzzongshu
integer
每种客房总数
Kf_beizhu
varchar
100
备注
表2-2房间信息(kf_xinxi)
Kf_no
Varchar
6
房间号(主键)
客房类型(外键)
Kf_kongfou
2
是否空闲
表2-3客房登记信息(kf_dengjixinxi)
Name
登记人姓名
Sex
登记人性别
Zhiye
40
职业
Gzdanwei
工作单位
Tel
12
联系电话
Zhengjianname
证件名称
Zhengjianhao
20
证件号码
Zhuzhi
住址
Guoji
国籍
房间号(外键)
Dengjishijian
Timestamp
登记时间
Yufujin
Numeric
6.2
预付金
zhifufangshi
支付方式(外键)
zhekou
2.1
折扣
beizhu
表2-4客房预定(kf_yuding)
Id
Id号
3
客房号
预定人姓名
证件名
证件号
Yajin
9
押金
Lianxitel
Caozuoyuan
操作员
512
表2-5客房结帐(kf_jiezhang)
姓名
性别
Tuifangdate
退房时间
Yufujin
预付金
Zhekou
Zhusutianshu
住宿天数
Zhusufei
住宿费
Qitafei
其他费用
Zongfei
总费用
Xujiaofei
续交费用
Shouyinyuan
收银员
表2-6菜单信息(caidan1)
cainame
菜名
class
所属类别
subclass
所属子类
Jiage
11.2
价格
4.2
折扣
Shishoujiage
实收价格
表2-7就餐结帐(jc_jiezhang)
zhuohao
5
桌号
jiucanrenshu
int
就餐人数
jiucanshijian
就餐时间
jiezhangshijian
结帐时间
Fuwuyuan_no
服务员名
jiucanfei
9.2
就餐费
Zongfeiyong
总费用
Beizhu
1000
表2-8定餐信息(dc_xinxi)
Zhu_no
定餐人姓名
tel
Dizhi
60
地址
Dctime
定餐时间
Jctime
512
表2-9餐桌信息(canzhuoinfo)
Zhuohao
桌号(主键)
zhuangtai
状态
表2-10菜统计(cai_tongji)
(主键)
Caiming
30
Fenshu
Int
份数
Jine
金额
Jiucantime
Datetime
shifoujiezhang
4
是否结帐
表2-11就餐登记
id
id号
Jiucanren_name
renshu
人数
jiucantime
datetime
Fuwuyuan
服务员姓名
3系统实现
3.1客房登记模块
该系统模块完成的功能主要为用户登记并打印入住单发票,是客房管理系统的重要模块之一。
展现给用户的两个界面,即两个窗口分别为w_kf_dengji和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)中显示出来,其中包括房号,类别,价格。
具体实现代码如下:
ifddlb_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_kf_zhuangtai"
dw_1.retrieve(ddlb_1.text,"
endif
在dw_1中双击某一行时,该行相关信息将显示在该窗口的右半部分,即用户注册区。
实现代码为:
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中。
selectcount(id)into:
numfromkf_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,'
否'
);
updatekf_xinxisetkf_zhuangtai='
入住房'
wherekf_no=:
sle_1.text;
num1fromkf_jiezhang;
jz_num=string(num1+1)
kf_jiezhang(id,kf_no,name,sex,zhengjianname,zhengjianhao,guoji,yufujin,shouyinyuan,beizhu,shifoujiezhang)
jz_num,:
sle_16.text,:
mle_1.text,'
commit;
sle_4.setfocus()
sle_13.text=string(datetime(today(),now()))
此窗口中用游标实现数据窗口取数据的代码为:
stringch
intshu,i
DECLAREkf_lxCURSORFOR
SELECTkf_leixing
FROMkf_leixing;
selectcount(kf_leixing)
into:
shu
fromkf_leixing;
openkf_lx;
fori=1toshu
fetchkf_lxinto:
ch;
ddlb_1.additem(ch)
next
closekf_lx;
ddlb_1.text="
ifdw_1.rowcount()<
1then
messagebox("
"
"
暂时没有空房间!
cb_1.enabled=false
sle_4.setfocus()
sle_13.text=string(datetime(today(),now()))
当点击cb_2(代码为:
open(w_kf_dengji_ruzhudan))时显示的是客房入住单的界面,如图3-2。
图3-2客房入住单界面
此窗口中实现数据窗口取数据代码为:
dw_1.retrieve(rzxx_kfno1,'
完成的功能为打印发票单据。
3.2就餐登记模块
客人在就餐前,一定要定下菜,主食和酒水等,即就餐登记,所以该系统包含了就餐登记,也就是开单的功能。
该功能所涉及的数据库表为:
菜单信息表(candan1)、菜统计表(cai_tongji)。
实现该功能的第一个界面如图3-3。
图3-3第一个界面
该界面主要分两个区域,左边是桌号图标显示区,右边是桌号图标调整区。
具体操作过程为:
选中一个桌号后,点击确定按钮即可显示该餐桌的详细信息,是否可用。
确定的代码如下:
stringzhuohao,zhuozt
currentbnum=integer(left(currentitem.label,3))
zhuohao=string(currentbnum)
SELECTcanzhuoinfo.zhuangtai
INTO:
zhuozt
FROMcanzhuoinfo
WHEREcanzhuoinfo.zhuohao=:
zhuohao;
ifzhuozt="
结帐"
UPDATEcanzhuoinfo
SETzhuangtai='
开单'
open(w_cy_kaidan)
close(parent)
messagebox("
抱歉"
对不起,此桌已被占用!
endif
实现该功能的第二个界面如图3-4。
图3-4第二个界面
该界面主要分两个区域,左边(数据窗口dw_1)显示所有菜的名称、价格、折扣。
右边(数据窗口dw_2)显示桌的详细信息,其中包括该桌所点的所有菜的名称、数量、金额以及合计多少钱等。
要添加菜,只需双击左下方的数据窗口中相应的菜即可,或选中该菜,单击添加按钮即可添加。
要删除菜,只需在右侧窗口中选中要删除的菜,单击删除按钮即可。
该功能实现的具体思路是:
在窗口打开代码中检索出数据窗口dw_1、dw_2的数据,在窗口打开后就将菜谱信息显示出来。
添加菜时,首先检索表cai_tongji中是否有要添加的菜的信息,如果有,用update语句将该菜的份数加一,金额增加相应的数目,如果没有则在cai_tongji表中用insert语句插入该菜的信息,包括菜的名称、数量、金额、所属桌号等。
然后数据窗口dw_2重新检索数据,即所添加的菜显示在数据窗口dw_2