餐饮管理系统设计.docx

上传人:b****7 文档编号:8965558 上传时间:2023-02-02 格式:DOCX 页数:54 大小:1.58MB
下载 相关 举报
餐饮管理系统设计.docx_第1页
第1页 / 共54页
餐饮管理系统设计.docx_第2页
第2页 / 共54页
餐饮管理系统设计.docx_第3页
第3页 / 共54页
餐饮管理系统设计.docx_第4页
第4页 / 共54页
餐饮管理系统设计.docx_第5页
第5页 / 共54页
点击查看更多>>
下载资源
资源描述

餐饮管理系统设计.docx

《餐饮管理系统设计.docx》由会员分享,可在线阅读,更多相关《餐饮管理系统设计.docx(54页珍藏版)》请在冰豆网上搜索。

餐饮管理系统设计.docx

餐饮管理系统设计

课程设计报告

 

课程名称:

PowerBuilder10.5程序设计基础

设计题目:

酒店餐饮管理系统

专业:

信息与计算科学班级:

姓名:

XXXX学号:

XXXXXXXX

指导教师:

XXX

 

XXX学院数理系

XXXX年XX月

课程设计题目(问题)描述

随着人们生活的富裕,人们出入酒店也越来越多,随之而来,酒店管理人员管理酒店的事情越来越多,为了帮助酒店管理人员更好的管理酒店,我们设计了这个酒店管理系统。

它实现了对值班人员的调配与管理和对菜单的变更,以及对订餐,订餐的修改、取消、查询及在收费时的立账,打折设定的等方面的功能。

本组成员情况

姓名

学号

承担的任务

成绩

杜雅笛

2012314201

登陆界面、系统维护、打印、帮助模块的代码编写及系统的调试

郭晓丽

2012314206

登陆界面、订餐管理、收费管理模块的代码编写及系统的调试

莫鹏飞

2012314220

资料查询、登陆界面、代码编写及系统的调试

教师评语

 

签名:

注:

本设计报告中各个部分如果页数不够,请大家自行扩页,原则是一定要把报告写详细,能说明本组设计的成果和特色,能够反应小组中每个人的工作。

报告中应该叙述设计中的每个模块。

设计报告将是评定每个人成绩的一个重要组成部分。

 

一、本组设计的功能描述

(含所有实现的模块的功能)

登录界面的功能:

在登陆界面正确输入用户名与口令就可以登陆主界面,如用户名与口令不匹配则有提醒,点开免费注册界面,可以录入新的管理人员的信息,退出注册界面输入刚注册的用户名和口令就可登陆主界面。

系统主界面的功能:

●系统维护:

☆值班员信息维护:

实现对值班员的添加、删除功能

☆菜谱信息维护:

实现对已有菜单的查询、添加和删除

☆修改口令:

实现对用户口令的更改。

●订单管理:

☆订餐:

实现对订餐信息的添加

☆订餐修改:

实现对已经订餐的信息的修改

☆订餐取消:

实现对已经订餐的信息的取消

☆订餐查询:

实现对订餐订单按桌号、菜谱号、菜名的查询

●收费管理:

☆折扣设定:

实现了对用餐人员的折扣设定

☆客户信息:

显示客户信息

●打印:

☆打印客户消费账单

二、本组设计的主要特色

主要特色有如下:

1、登陆界面可以注册新用户

2、在登陆主界面是弹出交班管理制度的界面

3、可对值班人员、菜谱信息进行添加,删除

4、可对订餐情况进行添加、删除、查询等功能

5、对客户的费用进行打折,打印客户消费单

三、系统分析与设计

2.1数据库的设计与连接

(1)在SQLSEVER2005开发环境下打开对象资源管理器,依据创建数据库的步骤,创建物理数据库XSCJ,在PowerBuilder开发环境下打开数据库画板,依次定义ODBC数据源,定义DBProfile,连接数据库。

根据功能需求,在数据库中先创建5个表

列名

数据类型

可否为空

说明

DC_DESK

Char(20)

Notnull

桌号(主键)

CP_NO

Char(10)

Notnull

菜谱号

CP_NAME

Char(20)

null

菜名

DC_NUMBER

Char(3)

null

数量

DC_DATE

datetime

Null

订餐日期

 

表1订餐信息表DC

列名

数据类型

可否为空

说明

CP_NO

CHAR(10)

NOTNULL

菜谱号(主键)

CP_NAME

CHAR(20)

NULL

菜名

CP_KIND

CHAR(20)

NULL

种类

CP_PRICE

NUMBER(10)

NULL

价格

CP_DETAIL

CHAR(50)

NULL

备注

表2菜谱信息表CP

列名

数据类型

可否为空

说明

KH_NO

CHAR(20)

NOTNULL

客户号(主键)

DC_DESK

CHAR(20)

NULL

桌号

JS_DZ

CHAR(3)

NULL

打折情况

TOTAL

CHAR(5)

NULL

总计

JS_DATE

DATETIME

NULL

日期

表3结算信息表JS

列名

数据类型

可否为空

说明

KH_NO

CHAR(10)

NOTNULL

客户号(主键)

KH_NAME

CHAR(20)

NULL

姓名

KH_SEX

CHAR

(2)

NULL

性别

KH_AGE

CHAR(3)

NULL

年龄

KH_JOB

CHAR(20)

NULL

职务

KH_TEL

CHAR(20)

NULL

联系电话

KH_COMPANY

CHAR(20)

NULL

工作电话

表4荣誉客户信息表KH

列名

数据类型

可否为空

说明

ZBY_NAME

CHAR(20)

NOTNULL

值班员名(主键)

ZBY_PAWD

CHAR(10)

NUTNULL

口令

表5值班员表ZBY

实体和实体之间的关系E-R图

系统详细设计

(1)单击菜单“File|New”,选择应用程序对象模板画板,单击“OK”按钮在出现的对话框中完成应用程序对象名、库文件名的设置.

(2)单击“Finish”按钮,进入应用程序对象设计画面。

1、在应用程序对象的Open事件中输入如下的程序代码

//Profilejiudian

SQLCA.DBMS="ODBC"

SQLCA.AutoCommit=False

SQLCA.DBParm="ConnectString='DSN=jiudian;UID=;PWD='"

connect;

open(w_open)

sleep

(1)

close(w_open)

open(w_login)

该语句就是打开w_open窗口的语句。

“欢迎登陆餐饮管理系统”如图:

2、登录窗口的设计。

登录窗口如图

(1)在W_login窗口的Open事件中输入如下的程序代码

Environmentl_env

intl_ScrWidth,l_ScrHeight

setRedraw(false)

GetEnvironment(l_env)

//取得屏幕的高度和宽度

l_ScrWidth=PixelsToUnits(l_env.ScreenWidth,XpixelsToUnits!

l_ScrHeight=PixelsToUnits(l_env.ScreenHeight,YpixelsToUnits!

Move((l_scrwidth-this.width)/2,(l_scrheight-this.height)/2)

//移动窗口到屏幕中间

setredraw(true)

//打开窗口刷新

(2)按钮控件cb_1(确定)的Click事件中的程序代码如下:

stringl_id,l_passward

stringl_passward0

inti

l_id=trim(sle_1.text)

l_passward=trim(sle_2.text)

ifl_id=""then

messagebox("提示","请输入用户名!

")

return

endif

sle_1.setfocus()

ifl_passward=""then

messagebox("提示","请输入密码!

")

return

endif

sle_2.setfocus()

selectcount(*)

into:

i

fromzby

wherertrim(zby_name)=:

l_id

usingsqlca;

ifi<1then

messagebox("提示","该用户不存在!

")

sle_1.text=""

sle_2.text=""

sle_1.setfocus()

return

endif

selectzby_pawdinto

:

l_passward0

fromzby

wherertrim(zby_name)=:

l_id

usingsqlca;

iftrim(l_passward0)=l_passwardthen

open(w_main)

close(parent)

integerli_FileNum

stringls_Emp_Input

longll_FLength

ll_FLength=FileLength("D:

\MicrosoftSQLServer\1.txt")

li_FileNum=FileOpen("D:

\MicrosoftSQLServer\1.txt",StreamMode!

read!

shared!

IFll_FLength<32767THEN

FileRead(li_FileNum,ls_Emp_Input)

filewrite(li_FileNum,ls_Emp_Input)

messagebox("",ls_Emp_Input,None!

return

ENDIF

//显示交班管理制度

else

messagebox("警告","密码错误,请重新输入法!

")

sle_2.text=""

sle_2.setfocus()

endif

(3)按钮控件cb_2(取消)的Click事件中的程序代码如下:

Halt用于终止应用程序的执行.

(4)按钮控件cb_3(免费注册)的Click事件中的程序代码如下:

open(w_zhuche)用来打开注册窗口.

交班管理制度显示的制作。

(5)在该系统文件目录下新建一个”1.txt”在里面输入相应的内容。

在登录窗口的cb_1(确定)下的代码

integerli_FileNum

stringls_Emp_Input

longll_FLength

ll_FLength=FileLength("D:

\MicrosoftSQLServer\1.txt")

li_FileNum=FileOpen("D:

\MicrosoftSQLServer\1.txt",StreamMode!

read!

shared!

IFll_FLength<32767THEN

FileRead(li_FileNum,ls_Emp_Input)

filewrite(li_FileNum,ls_Emp_Input)

messagebox("",ls_Emp_Input,None!

return

ENDIF

这段代码就是在进入系统时显示该信息,如下图,

3.注册窗口的设计

(1)在”检测用户名”按扭控件的click事件中输入如下代码:

stringl_user

l_user=sle_1.text

ifl_user=""then

messagebox("警告","请输入用户名!

",Exclamation!

sle_1.setfocus()

return1

endif

inti

selectcount(*)

into:

i

fromZBY

whereZBY_NAME=:

l_user;

ifi>0then

messagebox("警告","用户名已存在,请重试!

",Exclamation!

sle_1.text=""

sle_1.setfocus()

return

else

messagebox("","恭喜你,该用户名可以使用!

")

return

endif

(2)在”提交”按扭控件的click事件中输入如下代码:

stringl_user

l_user=sle_1.text

ifsle_1.text=""then

messagebox("提示","请输入用户名!

")

return1

endif

stringaa,bb

aa=sle_2.text

bb=sle_3.text

ifaa=""then

messagebox("提示","密码不能为空!

")

return1

endif

ifaa<>bbthen

messagebox("提示","输入的密码不一致~n~r请重新输入!

")

sle_2.text=""

sle_3.text=""

sle_2.setfocus()

return

endif

insertINTOzby

(zby_name,zby_pawd)

VALUES(:

l_user,

:

aa)

usingsqlca;

ifsqlca.sqlcode=0then

messagebox("提示","注册成功,请牢记~r~n用户名"+sle_1.text+"~r~n密码"+sle_2.text)

close(parent)

else

messagebox("提示","注册失败!

")

return

endif

(3)在”取消”按扭控件的click事件中输入如下代码:

close(parent)

4.主菜单的设计

(1)“系统维护”菜单下“退出”子菜单的Click事件程序代码:

halt

其功能是关闭主窗口w_main,退出应用程序。

(2)“系统维护”菜单下“值班员信息维护”子菜单的Click事件程序代码:

open(w_zby)

(3)“系统维护”菜单下“菜谱信息维护”子菜单的Click事件程序代码:

open(w_choose_receive)

(4)“系统维护”菜单下“修改口令”子菜单的Click事件程序代码:

open(w_changekl)

(5)“订餐管理”菜单下“订餐”子菜单的Click事件程序代码:

open(w_dc)

(6)“订餐管理”菜单下“订餐修改”子菜单的Click事件程序代码:

open(w_ujttyyytt)

(7)“订餐管理”菜单下“订餐取消”子菜单的Click事件程序代码:

open(w_dc_qc)

(8)“订餐管理”菜单下“订餐查询”子菜单的Click事件程序代码:

open(w_dc_search)

(9)“收款管理”菜单的“折扣设定”子菜单的Click事件程序代码:

open(w_zksd)

(10)“收款管理”菜单下的“客户信息”子菜单的CLICK事件程序代码:

open(w_kh)

(11)“打印”菜单的“打印帐单”子菜单的Click事件程序代码:

open(w_print)

(12)“帮助”菜单的”版本信息”子菜单的Click事件程序代码:

open(w_help)

(13)快捷键及工具栏如图所示。

还要建个w_main窗口用来挂上菜单。

该窗口类型为mdihelp!

Title为酒店餐饮管理系统1.0。

另外在窗口上布置一个图片控件,用来做为系统的背景。

在登录窗口的“确定”按扭的click事件中有句open(main)的代码,即为打开此窗口。

5.值班员信息维护窗口w_zby的设计

该窗口上的控件好上图所示,其显示部分是一个数据窗口。

数据窗口对象zby在编辑状态下如下图,

该数据窗口对象所链接的数据库表格为ZBY,其数据源表示如下:

SELECT"zby"."zby_name",

"zby"."zby_pawd"

FROM"zby"

(1)open事件代码:

dw_1.settransobject(sqlca)

dw_1.retrieve()

(2)窗口的closequery事件代码:

inti_count

longbb

i_count=dw_1.modifiedcount()+dw_1.deletedcount()

ifi_count>0then

bb=messagebox("提示","是否保存未保存的数据",question!

yesnocancel!

1)

choosecasebb

case1

ifdw_1.update()=1then

commitusingsqlca;

return0

else

rollbackusingsqlca;

messagebox("提示","数据保存失败!

")

endif

case2

return0

case3

return1

endchoose

endif

(3)增加按钮代码:

dw_1.scrolltorow(dw_1.insertrow(0))

dw_1.setcolumn(0)

dw_1.setfocus()

(4)删除按钮代码:

longnet

net=messagebox("","你确定要删除吗",question!

yesno!

1)

//提示是否要删除

choosecasenet

case1

dw_1.deleterow(dw_1.getrow())//删除当前行

case2

return1

endchoose

(5)保存按钮代码:

inti_count

i_count=dw_1.modifiedcount()+dw_1.deletedcount()//判断改变和删除的数目。

ifi_count>0then

ifdw_1.update()=1then

commitusingsqlca;

messagebox("提示","已成功保存"+string(i_count)+"纪录")

else

rollbackusingsqlca;

messagebox("提示","保存失败")

endif

endif

6.菜谱信息维护窗口w_choose_receive设计

ddlb_1、ddlb_2属性相同,其Items属性页如下图所示。

ddlb_3、ddlb_4属性也相同,其Items属性页如下图所示。

ddlb_5的Items属性页如下图所示

其他的控件如窗口上所示。

所链接的数据窗口对象在编辑状态下,如图下所示

该数据窗口对象所链接的数据库表格为CP,其数据源表示如下:

SELECT"cp"."cp_no",

"cp"."cp_name",

"cp"."cp_kind",

"cp"."cp_price",

"cp"."cp_detail"

FROM"cp"

(1)Open事件:

dw_1.settransobject(sqlca)

ddlb_1.text="菜谱号"

ddlb_4.text="="

ddlb_5.text="and"

(2)查询代码

inti

stringlookforcondition//定义参数:

查询条件综合结果

stringlookforitem1,lookforitem2,lookforitem3//定义参数:

要查询的列

stringlookforwhat1,lookforwhat2,lookforwhat3//定义参数:

要查询的内容

stringlookforhow1,lookforhow2,lookforhow3//定义参数:

查询的符号

stringlookforoperator1,lookforoperator2//定义参数:

不同查询条件组合操作符号

lookforhow1=ddlb_3.text

lookforhow2=ddlb_4.text

ifddlb_5.text="与"then

lookforoperator1="and"

elseifddlb_5.text="或"then

lookforoperator1="or"

elseifddlb_5.text="非"then

lookforoperator1="not"

endif

ifddlb_1.text="菜谱号"then

lookforitem1="cp_no"

lookforwhat1="'"+sle_1.text+"'"

elseifddlb_1.text="菜名"then

lookforitem1="cp_name"

lookforwhat1="'"+sle_1.text+"'"

elseifddlb_1.text="种类"then

lookforitem1="cp_kind"

lookforwhat1="'"+sle_1.text+"'"

elseifddlb_1.text="价格"then

lookforitem1="cp_price"

lookforwhat1=sle_1.text

elseifddlb_1.text="备注"then

lookforitem1="cp_detail"

lookforwhat1="'"+sle_1.text+"'"

endif

ifddlb_2.text="菜谱号"then

lookforitem2="cp_no"

lookforwhat2="'"+sle_2.text+"'"

elseifddlb_2.text="菜名"then

lookforitem2="cp_name"

lookforwhat1="'"+sle_2.text+"'"

elseifddlb_2.text="种类"then

lookforitem2="cp_kind"

lookforwhat2="'"+sle_2.text+"'"

elseifddlb_2.text="价格"then

lookforitem2="cp_price"

lookforwhat2="'"+sle_2.text+"'"

elseifddlb_2.text="备注"then

lookforitem2="cp_detail"

lookforwhat2="'"+sle_2.text+"'"

endif

ifddlb_2.text=""orddlb_4.text=""then

lookforcondition=lookforitem1+lookforhow1+lookforwhat1

else

lookforcondition=lookforitem1+lookforhow1+lookforwhat1+""+lookforoperator1+""+lookforitem2+lookforhow2+lookforwhat2

endif

dw_1.setfilter(lookforcondition)

filter(dw_1)

i=dw_1.retrieve()

ifi<1then

messagebox("提示","没有相关记录!

",Exclamation!

sle_1.text=""

sle_2.text=""

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1