收藏 分销(赏)

餐饮管理系统设计模板.doc

上传人:w****g 文档编号:9285473 上传时间:2025-03-19 格式:DOC 页数:38 大小:2.30MB
下载 相关 举报
餐饮管理系统设计模板.doc_第1页
第1页 / 共38页
餐饮管理系统设计模板.doc_第2页
第2页 / 共38页
点击查看更多>>
资源描述
餐饮管理系统设计 38 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 课程设计报告 课程名称: PowerBuilder10.5程序设计基础 设计题目: 酒店餐饮管理系统 专业: 信息与计算科学 班级: 姓名: XXXX 学号: XXXXXXXX 指导教师: XXX XXX学院数理系 XXXX 年XX 月 课程设计题目( 问题) 描述 随着人们生活的富裕, 人们出入酒店也越来越多, 随之而来, 酒店管理人员管理酒店的事情越来越多, 为了帮助酒店管理人员更好的管理酒店, 我们设计了这个酒店管理系统。 它实现了对值班人员的调配与管理和对菜单的变更, 以及对订餐, 订餐的修改、 取消、 查询及在收费时的立账, 打折设定的等方面的功能。 本 组 成 员 情 况 姓 名 学号 承 担 的 任 务 成 绩 杜雅笛 登陆界面、 系统维护、 打印、 帮助模块的代码编写及系统的调试 郭晓丽 登陆界面、 订餐管理、 收费管理模块的代码编写及系统的调试 莫鹏飞 资料查询、 登陆界面、 代码编写及系统的调试 教 师 评 语 签名: 注: 本设计报告中各个部分如果页数不够, 请大家自行扩页, 原则是一定要把报告写详细, 能说明本组设计的成果和特色, 能够反应小组中每个人的工作。报告中应该叙述设计中的每个模块。设计报告将是评定每个人成绩的一个重要组成部分。 一、 本 组 设 计 的 功 能 描 述 ( 含所有实现的模块的功能) 登录界面的功能: 在登陆界面正确输入用户名与口令就能够登陆主界面, 如用户名与口令不匹配则有提醒, 点开免费注册界面, 能够录入新的管理人员的信息, 退出注册界面输入刚注册的用户名和口令就可登陆主界面。 系统主界面的功能: ● 系统维护: ☆值班员信息维护: 实现对值班员的添加、 删除功能 ☆菜谱信息维护: 实现对已有菜单的查询、 添加和删除 ☆修改口令: 实现对用户口令的更改。 ● 订单管理: ☆订餐: 实现对订餐信息的添加 ☆订餐修改: 实现对已经订餐的信息的修改 ☆订餐取消: 实现对已经订餐的信息的取消 ☆订餐查询: 实现对订餐订单按桌号、 菜谱号、 菜名的查询 ● 收费管理: ☆折扣设定: 实现了对用餐人员的折扣设定 ☆客户信息: 显示客户信息 ● 打印: ☆打印客户消费账单 二、 本 组 设 计 的 主 要 特 色 主要特色有如下: 1、 登陆界面能够注册新用户 2、 在登陆主界面是弹出交班管理制度的界面 3、 可对值班人员、 菜谱信息进行添加, 删除 4、 可对订餐情况进行添加、 删除、 查询等功能 5、 对客户的费用进行打折, 打印客户消费单 三、 系 统 分 析 与 设 计 2.1数据库的设计与连接 ( 1) 在SQL SEVER 开发环境下打开对象资源管理器, 依据创立数据库的步骤, 创立物理数据库XSCJ, 在PowerBuilder开发环境下打开数据库画板, 依次定义ODBC数据源, 定义DB Profile , 连接数据库。 根据功能需求, 在数据库中先创立5个表 列名 数据类型 可否为空 说明 DC_DESK Char(20) Not null 桌号( 主键) CP_NO Char(10) Not null 菜谱号 CP_NAME Char(20) null 菜名 DC_NUMBER Char(3) null 数量 DC_DATE datetime Null 订餐日期 表1订餐信息表DC 列名 数据类型 可否为空 说明 CP_NO CHAR(10) NOT NULL 菜谱号( 主键) 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) NOT NULL 客户号( 主键) DC_DESK CHAR(20) NULL 桌号 JS_DZ CHAR(3) NULL 打折情况 TOTAL CHAR(5) NULL 总计 JS_DATE DATETIME NULL 日期 表3 结算信息表JS 列名 数据类型 可否为空 说明 KH_NO CHAR(10) NOT NULL 客户号( 主键) 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) NOT NULL 值班员名( 主键) ZBY_PAWD CHAR(10) NUT NULL 口令 表5 值班员表ZBY 实体和实体之间的关系E-R图 系统详细设计 ( 1) 单击菜单”File|New”, 选择应用程序对象模板画板, 单击”OK”按钮在出现的对话框中完成应用程序对象名、 库文件名的设置. ( 2) 单击”Finish”按钮, 进入应用程序对象设计画面。 1、 在应用程序对象的Open事件中输入如下的程序代码 // Profile jiudian 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事件中输入如下的程序代码 Environment l_env int l_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事件中的程序代码如下: string l_id,l_passward string l_passward0 int i l_id=trim(sle_1.text) l_passward=trim(sle_2.text) if l_id="" then messagebox("提示","请输入用户名!") return end if sle_1.setfocus() if l_passward="" then messagebox("提示","请输入密码!") return end if sle_2.setfocus() select count(*) into :i from zby where rtrim(zby_name) = :l_id using sqlca; if i<1 then messagebox("提示","该用户不存在!") sle_1.text="" sle_2.text="" sle_1.setfocus() return end if select zby_pawd into :l_passward0 from zby where rtrim(zby_name)=:l_id using sqlca; if trim(l_passward0)=l_passward then open(w_main) close(parent) integer li_FileNum string ls_Emp_Input long ll_FLength ll_FLength = FileLength("D:\Microsoft SQL Server\1.txt") li_FileNum = FileOpen("D:\Microsoft SQL Server\1.txt",StreamMode!,read!, shared!) IF ll_FLength < 32767 THEN FileRead(li_FileNum, ls_Emp_Input) filewrite(li_FileNum,ls_Emp_Input) messagebox("",ls_Emp_Input,None!) return END IF //显示交班管理制度 else messagebox("警告","密码错误,请重新输入法!") sle_2.text="" sle_2.setfocus() end if ( 3) 按钮控件cb_2( 取消) 的Click事件中的程序代码如下: Halt用于终止应用程序的执行. (4) 按钮控件cb_3( 免费注册) 的Click事件中的程序代码如下: open(w_zhuche)用来打开注册窗口. 交班管理制度显示的制作。 (5)在该系统文件目录下新建一个”1.txt”在里面输入相应的内容。 在登录窗口的cb_1( 确定) 下的代码 integer li_FileNum string ls_Emp_Input long ll_FLength ll_FLength = FileLength("D:\Microsoft SQL Server\1.txt") li_FileNum = FileOpen("D:\Microsoft SQL Server\1.txt",StreamMode!,read!, shared!) IF ll_FLength < 32767 THEN FileRead(li_FileNum, ls_Emp_Input) filewrite(li_FileNum,ls_Emp_Input) messagebox("",ls_Emp_Input,None!) return END IF 这段代码就是在进入系统时显示该信息,如下图, 3. 注册窗口的设计 (1)在”检测用户名”按扭控件的click事件中输入如下代码: string l_user l_user=sle_1.text if l_user="" then messagebox("警告","请输入用户名!",Exclamation!) sle_1.setfocus() return 1 end if int i select count(*) into :i from ZBY where ZBY_NAME = :l_user; if i>0 then messagebox("警告","用户名已存在,请重试!",Exclamation!) sle_1.text="" sle_1.setfocus() return else messagebox("","恭喜你,该用户名能够使用!") return end if (2) 在”提交”按扭控件的click事件中输入如下代码: string l_user l_user=sle_1.text if sle_1.text="" then messagebox("提示","请输入用户名!") return 1 end if string aa,bb aa=sle_2.text bb=sle_3.text if aa="" then messagebox("提示","密码不能为空!") return 1 end if if aa<>bb then messagebox("提示","输入的密码不一致~n~r请重新输入!") sle_2.text="" sle_3.text="" sle_2.setfocus() return end if insert INTO zby ( zby_name, zby_pawd ) VALUES ( :l_user, :aa ) using sqlca; if sqlca.sqlcode=0 then messagebox("提示","注册成功,请牢记~r~n用户名"+sle_1.text+"~r~n密码"+sle_2.text) close(parent) else messagebox("提示","注册失败!") return end if (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事件代码: int i_count long bb i_count=dw_1.modifiedcount()+dw_1.deletedcount() if i_count>0 then bb=messagebox("提示","是否保存未保存的数据",question!,yesnocancel!,1) choose case bb case 1 if dw_1.update()=1 then commit using sqlca; return 0 else rollback using sqlca; messagebox("提示","数据保存失败!") end if case 2 return 0 case 3 return 1 end choose end if (3) 增加 按钮代码: dw_1.scrolltorow(dw_1.insertrow(0)) dw_1.setcolumn(0) dw_1.setfocus() (4) 删除按钮代码: long net net=messagebox("","你确定要删除吗",question!,yesno!,1) //提示是否要删除 choose case net case 1 dw_1.deleterow(dw_1.getrow())//删除当前行 case 2 return 1 end choose (5) 保存按钮代码: int i_count i_count=dw_1.modifiedcount()+dw_1.deletedcount()//判断改变和删除的数目。 if i_count>0 then if dw_1.update()=1 then commit using sqlca; messagebox("提示","已成功保存"+string(i_count)+"纪录") else rollback using sqlca; messagebox("提示","保存失败") end if end if 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) 查询代码 int i string lookforcondition//定义参数: 查询条件综合结果 string lookforitem1,lookforitem2,lookforitem3//定义参数: 要查询的列 string lookforwhat1,lookforwhat2,lookforwhat3//定义参数: 要查询的内容 string lookforhow1,lookforhow2,lookforhow3//定义参数: 查询的符号 string lookforoperator1,lookforoperator2//定义参数: 不同查询条件组合操作符号 lookforhow1=ddlb_3.text lookforhow2=ddlb_4.text if ddlb_5.text="与" then lookforoperator1="and" elseif ddlb_5.text="或" then lookforoperator1="or" elseif ddlb_5.text="非" then lookforoperator1="not" end if if ddlb_1.text="菜谱号" then lookforitem1="cp_no" lookforwhat1="'"+sle_1.text+"'" elseif ddlb_1.text="菜名" then lookforitem1="cp_name" lookforwhat1="'"+sle_1.text+"'" elseif ddlb_1.text="种类" then lookforitem1="cp_kind" lookforwhat1="'"+sle_1.text+"'" elseif ddlb_1.text="价格" then lookforitem1="cp_price" lookforwhat1=sle_1.text elseif ddlb_1.text="备注" then lookforitem1="cp_detail" lookforwhat1="'"+sle_1.text+"'" end if if ddlb_2.text="菜谱号" then lookforitem2="cp_no" lookforwhat2="'"+sle_2.text+"'" elseif ddlb_2.text="菜名" then lookforitem2="cp_name" lookforwhat1="'"+sle_2.text+"'" elseif ddlb_2.text="种类" then lookforitem2="cp_kind" lookforwhat2="'"+sle_2.text+"'" elseif ddlb_2.text="价格" then lookforitem2="cp_price" lookforwhat2="'"+sle_2.text+"'" elseif ddlb_2.text="备注" then lookforitem2="cp_detail" lookforwhat2="'"+sle_2.text+"'" end if if ddlb_2.text="" or ddlb_4.text="" then lookforcondition=lookforitem1+lookforhow1+lookforwhat1 else lookforcondition=lookforitem1+lookforhow1+lookforwhat1+" "+lookforoperator1+" "+lookforitem2+lookforhow2+lookforwhat2 end if dw_1.setfilter(lookforcondition) filter(dw_1) i=dw_1.retrieve() if i<1 then messagebox("提示","没有相关记录!",Exclamation!) sle_1.text="" sle_2.text="" return end if (3) 增加代码: dw_1.scrolltorow(dw_1.insertrow(0)) dw_1.setcolumn(0) dw_1.setfocus() ( 4) ”删除”按钮控件的Click事件用于删除一个菜谱, 程序代码与上述的”删除”按钮相同. (5) ”保存”按钮控件的Click事件将用于保存用户所做的修改, 程序代码与上述”保存”按钮相同. (6) ”退出”按钮控件的Click事件将用于退出该程序窗口。 7. 修改口令w_changek设计 ( 1) 修改按钮代码: string correct_pswd,ls_user,ls_pswd ls_user=trim(sle_1.text) ls_pswd=trim(sle_2.text) if ls_user="" then messagebox("","用户名不能为空!") return end if if ls_pswd="" then messagebox("","请输入原口令!") return end if if sle_4.text<>sle_3.text then messagebox("警告","两次输入的口令不一致,请重新输入") sle_3.text="" sle_4.text="" sle_3.setfocus() else select rtrim(zby_pawd) into :correct_pswd from zby where rtrim(zby_name)=:ls_user; if correct_pswd<>ls_pswd then messagebox("警告","原口令不正确!") else update zby set zby_pawd =:sle_3.text where rtrim(zby_name)=:ls_user; commit using sqlca; close(parent) messagebox("注意","你的口令已经修改,请牢记!") end if end if (2)”取消”按扭用来退出该窗口。 8、 订餐w_dc窗口设计 所链接的的数据窗口对象在编辑状态如图 该数据窗口对象所链接的数据库表格为DC, 其数据源表示如下: SELECT "dc"."dc_desk", "dc"."cp_no", "dc"."cp_name", "dc"."dc_num", "dc"."dc_data" FROM "dc" ( 1) open事件 int g_rownumber g_rownumber=dw_1.insertrow(0) dw_1.settransobject(sqlca) dw_1.setfocus() date g_dc_date g_dc_date=today() //在数据窗口的日期这列显示当前日期 dw_1.scrolltorow(g_rownumber) dw_1.setcolumn(0) ( 2) 下一道菜 int g_rownumber g_rownumber=dw_1.insertrow(0) date g_dc_date g_dc_date=today() dw_1.setfocus() dw_1.scrolltorow(g_rownumber) dw_1.setcolumn(1) (3) ”删除”按钮控件的Click事件用于删除一个菜谱, 程序代码与上述的”删除”按钮控件相同. (4) ”保存”按钮控件的Click事件将用于保存用户所做的修改, 程序代码与上述的”保存”按钮相同。 (5) ”退出”按钮控件的Click事件将关闭该窗口。 9、 订餐修改窗口w_ujttyyytt设计 Ddlb_1和ddlb_2两个控件的属性一样,其item属性如下图, 所链接的数据窗口对象dc ( 1) open事件 //设置事务对象 dw_1.settransobject(sqlca) ddlb_1.text="=" ddlb_2.text="=" ( 2) 显示订单 int i string lookforcondition string lookforitem1,lookforitem2 string lookforwhat1,lookforwhat2 string lookforhow1,lookforhow2 lookforhow1=ddlb_1.text lookforhow2=ddlb_2.text lookforitem1="dc_desk" lookforwhat1="'"+sle_1.text+"'" lookforitem2="dc_date" lookforwhat2="datetime('"+sle_2.text+" 00:00:00')" if sle_2.text="" then lookforcondition=lookforitem1+lookforhow1+lookforwhat1 else lookforcondition=lookforitem2+lookforhow2+lookforwhat2 //lookforitem1+lookforhow1+lookforwhat1+" "+"and"+" "+ end if dw_1.setfilter(lookforcondition) filter(dw_1) i=dw_1.retrieve() if i<1 then messagebox("提示","没有相关记录!",Exclamation!) return end if ( 3) 增加 int g_rownumber g_rownumber=dw_1.insertrow(0) date g_dc_date g_dc_date=today() //为数据窗口的日期列显示当前日期 dw_1.setfocus() dw_1.scrolltorow(g_rownumber) dw_1.setcolumn(1) (4) ”删除”按钮控件的Click事件用于删除一个值班员, 程序代码与上面所述的”删除”按钮控件相同. (5) ”保存”按钮控件的Click事件将用于保存用户所做的修改, 程序代码与上面所述的”保存”按钮控件相同. (6) ”退出”按钮控件的Click事件将用于退出该程序窗口。 10、 订餐取消w_dc_qc设计 ,控件如图所示,所连接的数据窗口为dc. ddlb_1与ddlb_2的属性相同.ddlb_1的item属性图a, ddlb_2的item属性图b 图a 图b ( 1) open: dw_1.settransobject(sqlca) ( 2) 确定 int i if ddlb_1.text="" then messagebox("","请选择要退餐的桌号!") return end if string l_dc_desk l_dc_desk="dc_desk='"+ddlb_1.text+"'" dw_1.setfilter(l_dc_desk) filter(dw_1) i=dw_1.retrieve() if i<1 then messagebox("","此桌无消费记录!") ddlb_1.text="" else messagebox("","请选择要退定的菜!") return end if ( 3) 退订的菜 double l_dc_num1,l_dc_num2 string l_cp_name l_dc_num1=double(ddlb_2.text) l_cp_name=dw_1.getitemstring(dw_1.getrow(),"cp_name") l_dc_num2=Long(dw_1.getitemstring(dw_1.getrow(),"dc_number")) int ret ret=messagebox("","你确定要退定"+string(l_dc_num1)+"一份"+l_cp_name,question!,yesnocancel!,2) choose case ret case 1 if ddlb_2.text="all" then dw_1.deleterow(0) if dw_1.update()=1 then messagebox("","退定成功!") close(parent) else messagebox("","退定失败,请重试!") return end if else if l_dc_num1>l_dc_num2 then messagebox("警告","退定出错,请查看数量!") return 1 end if UPDATE dc SET dc_number = : l_dc_num2 - :l_dc_num1 ; if dw_1.update()=1 then messagebox("","退定成功!") close(parent) return end if return end if case 2 return 0 case 3 return 1 end choo
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服