版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河南科技大学课 程 设 计 说 明 书课程名称 程序设计方法课程设计 题 目 酒店餐饮管理系统的设计 院 系 继续教育学院 班 级 电子商务071 学生姓名 XXX 指导教师 靖恒昌 日 期 2010年01月16日 课程设计任务书(指导教师填写)课程设计名称 程序设计方法课程设计 学生姓名 吴星星 专业班级 信管052 设计题目 酒店餐饮管理系统 一、 课程设计目的(任务书请参考文件“课程设计任务书-参考.doc”)该课程设计是信息管理本科集中实践性环节之一,是学习完数据库基础与应用和程序设计方法课程后进行的一次全面的综合练习。其目的是通过本课程设计使学生对具体问题应用程序设计方法课程中所学的
2、方法与技术,进行需求分析及软件设计的过程,不仅对程序设计方法课程中的所有知识点进行一个全面的复习巩固,更重要的是增强学生解决实际问题的能力。二、 设计内容、技术条件和要求(1)本环节要求学生根据程序设计方法整个课程的所学内容,自己独立设计完成一个比较复杂的小型管理系统。(2)所设计的小型管理系统要求功能比较完善,应包含输入输出、查询、插入、删除、打印等基本功能(2)程序内容自己灵活设计,包括规划自己的数据库和设计程序功能和界面设计。(3)数据库中不能少于两个表。(5)程序应功能完善,界面友好,容错性好,操作方便。三、时间进度安排系统分析与规划 半周系统设计与调试 一周撰写课程设计说明书 半周四
3、、主要参考文献(参考文献部分格式不够规范,靖恒昌2009-12-23注)郑阿奇,PowerBuilder 实用教程(第二版),电子工业出版社董军,王玉,康祥顺,PowerBuilder案例开发集锦,电子工业出版社张长富,PowerBuilder9.0实例教程,电子科技大学出版社指导教师签字: 2008 年 12 月 23 日酒店餐饮管理系统1概述(整个文档编排较差,层级不清晰,靖恒昌2009-12-23注)餐厅系统是按国内餐饮行业最新要求开发的全新概念信息管理系统。该系统将餐厅收银、往来帐务结算管理及销售情况统计工作在单微机或网络系统中完成。主要特点包括:(1)代码菜谱编制,方便统计,方便输入
4、;(2)开单、改单、结算、打印、用户界面方便友好;(3)系统专设往来帐、内部帐,结算方式灵活多样,结算信息详尽翔实;(4)系统可同前台系统衔接,查询客人信贷情况,往前台客人帐户转账;(5)帐务系统的可扩充性。由于餐厅业务的扩展,势必要求帐务结算系统随之扩展,在不修改程序的前提下,本系统可在相当可观的范围内,由用户扩展其营业项目和结算手段。(6)帐务操作数据的可校验性。本系统提供了多种方便的查询、校核和统计功能,供帐务操作人员和专职核数人员自核及校对帐务数据。例如,当班收银员下班时直接统计当班期间的输单、收银情况。为餐饮企业管理人员提供及时准确的经营状况和帐务信贷情况。餐厅系统需要完成的功能有以
5、下几点。(1)订餐管理:订餐、订餐修改、订餐取消、订餐查询。(2)收款管理:立帐、折扣设定。(3)系统维护:餐厅代码设定、餐台号码以及贵宾房设定、特色分类设定、特色编码设定、折扣率设定、营业统计项目设定、成本统计项目设定、使用者权限维护。2系统功能模块设计酒店管理系统中餐饮系统的功能模块图如下,(插图不要用图片的形式,这样不清晰,建议最好用visio,或直接用word画图靖恒昌2009-12-23注)通过对酒店餐饮管理的内容和数据流程分析,设计的数据项和数据结构如下。l 菜谱信息。包括的数据项有菜谱号、名称、所属种类、价格、描述等。l 值班员信息。包括的数据项有值班员姓名和口令。l 荣誉客户信
6、息。包括的数据项有客户号、客户姓名、年龄、性别、职称、联系电话、工作单位等。l 订餐信息。包括的数据项有桌号、菜号、菜名、数量、价格、订餐日期。l 结算信息。包括的数据项有客户号、桌号、结算日期、打折情况、总计等。有了上面的数据结构、数据项和数据流程,就能进行下面的数据库设计。3. 数据库概念结构设计(E-R图部分可以不要,但是必须有表结构)根据上面的设计规划出的实体有:菜谱实体、值班员实体、客户实体、订餐实体、结算实体。各个实体具体的描述E-R图及其之间关系描述如下。图1为菜谱实体E-R图。图1 菜谱实体E-R图图2为值班员实体E-R图。图2 值班员实体E-R图图3为客户实体E-R图。图3
7、客户信息实体E-R图图4为订餐信息实体E-R图。图4 订餐信息实体E-R图图5为结算信息实体E-R图。图5 结算信息实体E-R图实体和实体之间的关系E-R图如图6所示。图6 实体之间关系E-R图4. 数据库逻辑结构设计在上面的实体以及实体之间关系的基础上,形成数据库中的表格以及各个表格之间的关系。酒店管理系统数据库中各个表格的设计结果如下面的几个表格所示。每个表格表示在数据库中的一个表。表7为菜谱信息表CP。表7 菜谱信息表CP列 名数据类型可否为空说 明CP_NOVARCHAR2(10)NOT NULL菜谱号(主键)CP_NAMEVARCHAR2(20)NULL菜名称CP_KINDVARCH
8、AR2(20)NULL种类CP_PRICENUMBER(10)NULL价格CP_DETAILVARCHAR2(50)NULL描述表8为值班员信息表ZBP。表8 值班员表ZBY列 名数据类型可否为空说 明ZBY_NAMEVARCHAR2(20)NOT NULL值班员名(主键)ZBY_PAWDVARCHAR2(10)NOT NULL口令表9为荣誉客户信息表KH。表9 荣誉客户信息表KH列 名数据类型可否为空说 明KH_NOVARCHAR2(10)NOT NULL客户号(主键)KH_NAMEVARCHAR2(20)NULL姓名KH_SEXVARCHAR2(2)NULL性别KH_AGENUMBER(3
9、)NULL年龄KH_JOBVARCHAR2(20)NULL职务KH_TELVARCHAR2(20)NULL联系电话KH_COMPANYVARCHAR2(20)NULL工作单位表10为订餐信息表DC。表10 订餐信息表DC列 名数据类型可否为空说 明DC_DESKVARCHAR2(20)NOT NULL桌号(主键)CP_NOVARCHAR2(10)NOT NULL菜谱号(主键)CP_NAMEVARCHAR2(20)NULL菜名称DC_NUMBER NUMBER(3)NULL数量DC_DATEDATENULL订餐日期(主键)表11为结算信息表JS。表11 结算信息表JS列 名数据类型可否为空说 明
10、KH_NO VARCHAR2(20)NOT NULL客户号(主键)DC_DESK VARCHAR2(20)NULL桌号JS_DZ NUMBER(3)NULL打折情况TOTALNUMBER(5)NULL总计JS_DATEDATENULL日期5. 数据库结构的实现(1)创建菜谱信息表格CP(2)创建值班员表ZBY(3)创建客户信息表KH(4)创建订餐信息表DC(5)创建结算信息表JS6创建应用程序对象上面我们创建了酒店管理系统中餐饮管理部分的数据库结构,数据库中的各个表格都是空的。关于数据的输入可以右击表点“edit data”-“grid”.然后在下面右击选“insert row”.餐饮管理系统
11、应用程序对象的创建步骤如下。(1) 单击菜单“FileNew”,选择应用程序对象模板画板,单击“OK”按钮在出现的对话框中完成应用程序对象名、库文件名的设置.(2)单击“Finish”按钮,进入应用程序对象设计画面。在应用程序对象的Open事件中输入如下的程序代码:/ Profile Jiudian_proSQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "Connectstring='DSN=jiudian'"connect using sqlca;if sqlca.sq
12、lcode <> 0 thenmessagebox("对不起","数据库连接错误!")returnend ifopen(w_open)sleep(1)close(w_open)open(w_login)应用程序运行后第一个出现的窗口是上面语句打开的w_open窗口,过一秒之后再出现w_login登录窗口。7. w_open窗口的设计。在应用程序对象的Open事件的程序代码有下面一条语句:open (w_open)该语句就是打开w_open窗口的语句。该窗口如图13所示。图13该窗口上的控件有picture control,用来放置一图片。该窗
13、口是popup!,normal!没有toolbar!。8.自定义一个按扭的用户对象。定义一个标准的可视用户对象my_command.在select standard visual type中选commandbutton,如下图,并为该按扭新建一个事件ue_enternew,事件id为pbm_keydown.并输入如下代码,if keydown(keyenter!) thenthis.triggerevent(clicked!)end if当按下回车时触发该按扭。在下面窗口的按扭都是用这个用户对像。9登录窗口的设计。在应用程序对象的Open事件的程序代码有下面一条语句:open (w_login
14、)该语句就是打开登录窗口的语句。登录窗口如图14所示。控件如上图所示.(1)在W_login窗口的Open事件中输入如下的程序代码:Environment l_envint l_ScrWidth,l_ScrHeightsetRedraw(false)GetEnvironment(l_env)/取得屏幕的高度和宽度l_ScrWidth=PixelsToUnits(l_env.ScreenWidth,XpixelsToUnits!)l_ScrHeight=PixelsToUnits(l_env.ScreenHeight,YpixelsToUnits!)Move(l_scrwidth - this.
15、width)/2,(l_scrheight - this.height)/2)/移动窗口到屏幕中间setredraw(true)/打开窗口刷新这样登录窗口将会显示在屏幕的中央。(2)按钮控件cb_1的Click事件中的程序代码如下:string l_id,l_passwardstring l_passward0int il_id=trim(sle_1.text)l_passward=trim(sle_2.text)if l_id="" then messagebox("提示","请输入用户名!")returnend ifsle_1.s
16、etfocus()if l_passward="" then messagebox("提示","请输入密码!")returnend ifsle_2.setfocus()select count(*)into :ifrom zbywhere zby_name = :l_idusing sqlca;if i<1 then messagebox("提示","该用户不存在!")sle_1.text="" sle_2.text="" sle_1.setfocu
17、s()returnend ifselect zby_pawd into:l_passward0from zbywhere zby_name=:l_idusing sqlca;if l_passward0=l_passward thenopen(w_main) close(parent) integer li_FileNum string ls_Emp_Input long ll_FLength ll_FLength = FileLength("F:学习pb我的PB订餐系统1.txt") li_FileNum = FileOpen("F:学习pb我的PB订餐系统1.
18、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/显示交班管理制度elsemessagebox("警告","密码错误,请重新输入法!")sle_2.text="" sle_2.setfocus()e
19、nd if其功能是将用户在sle_1和sle_2控件中输入的用户名和口令与数据库中保存的值班员姓名和口令做比较。如果一致,则打开应用程序主窗口,并关闭登录窗口,同时显示交班管理制度;如果不成功,则输入显示信息,提示输入不正确请重试。(3)按钮控件cb_2的Click事件中的程序代码如下:Halt用于终止应用程序的执行.(4) 按钮控件cb_3的Click事件中的程序代码如下:open(w_zhuche)用来打开注册窗口.(5)在两个输入静态文本控件的Click事件中的程序代码: if KeyDown(KeyEnter!) thencb_1.triggerevent(Clicked!)end i
20、f当输入完之后,直接按回车即可触发“确定”控扭。在下面一些窗口的也有类似情况,不再一一描述。10交班管理制度显示的制作。(1)在该系统文件目录下新建一个”1.txt”在里面输入相应的内容。在登录窗口的cb_1下的代码integer li_FileNum string ls_Emp_Input long ll_FLength ll_FLength = FileLength("F:学习pb我的PB订餐系统1.txt") li_FileNum = FileOpen("F:学习pb我的PB订餐系统1.txt",StreamMode!,read!, shared!
21、) 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/显示交班管理制度这段代码就是在进入系统时显示该信息,如下图,。11注册窗口的设计所要布置的控件如上图所示.(1)在”检测用户名”按扭控件的click事件中输入如下代码:string l_userl_user=sle_1.textif l_user="" the
22、nmessagebox("警告","请输入用户名!",Exclamation!)sle_1.setfocus()return 1end ifint iselect count(*)into :ifrom zbywhere zby_name=:l_user;if i>0 thenmessagebox("警告","用户名已存在,请重试!",Exclamation!)sle_1.text=""sle_1.setfocus()returnelsemessagebox("",&q
23、uot;恭喜你,该用户名可以使用!")return end if用来判断所要注册的用户名是否与数据库里的重复。如果是则弹出不能注册的信息,否则显示可以注册信息。(2) 在”提交”按扭控件的click事件中输入如下代码:string l_userl_user=sle_1.textif sle_1.text="" thenmessagebox("提示","请输入用户名!")return 1end ifstring aa,bbaa=sle_2.textbb=sle_3.textif aa="" thenmess
24、agebox("提示","密码不能为空!")return 1end ifif aa<>bb thenmessagebox("提示","输入的密码不一致nr请重新输入!")sle_2.text=""sle_3.text=""sle_2.setfocus()return end if INSERT INTO "zby" ( "zby_name", "zby_pawd" ) VALUES ( :l_user,
25、:aa ) using sqlca;if sqlca.sqlcode=0 then messagebox("提示","注册成功,请牢记rn用户名"+sle_1.text+"rn密码"+sle_2.text)close(parent)elsemessagebox("提示","注册失败!")return end if该代码是用来注册的,如果两次输入的密码不一样,则不能通过。如果成功则显示用户名和密码的信息,并要求牢记。如下图,.未标*号的为选填。此时已把数据存入了zby表里。(3) 在”取消”按扭控
26、件的click事件中输入如下代码: close(parent)12主菜单的设计。菜单如下图所示,(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
27、_dc)(6)“订餐管理”菜单下“订餐修改”子菜单的Click事件程序代码:open(w_ujttyyytt)(7) “订餐管理”菜单下“订餐取消”子菜单的Click事件程序代码:open(w_dc_qx)(8) “订餐管理”菜单下“订餐查询”子菜单的Click事件程序代码:open(w_dc_search)(9)“收款管理”菜单的“立帐”子菜单的Click事件程序代码:open(w_jiesuan)(10) “收款管理”菜单的“折扣设定”子菜单的Click事件程序代码:open(w_zksd)(11) “打印”菜单的“打印帐单”子菜单的Click事件程序代码:open(w_print)(12
28、) “帮助”菜单的Click事件程序代码:open(w_help)sleep(1)close(w_help)(13)快捷键及工具栏如图所示。还要建个w_main窗口用来挂上菜单。该窗口类型为mdihelp!。Title为酒店餐饮管理系统1.0。另外在窗口上布置一个图片控件,用来做为系统的背景。在登录窗口的“确定”按扭的click事件中有句open(main)的代码,即为打开此窗口。13值班员信息维护窗口w_zby的设计该窗口上的控件好上图所示,其显示部分是一个数据窗口。数据窗口对象d_zby在编辑状态下如下图,该数据窗口对象所链接的数据库表格为ZBY,其数据源表示如下: SELECT &quo
29、t;zby"."zby_name", "zby"."zby_pawd" FROM "zby" (1)在值班员信息维护窗口的Open事件中输入如下的程序代码:dw_1.settransobject(sqlca)dw_1.retrieve()值班员信息维护窗口的CloseQuery事件中输入如下的程序代码,这样窗口在关闭时会自动询问用户是否保存所做的修改。int i_countlong bbi_count=dw_1.modifiedcount()+dw_1.deletedcount()if i_count&g
30、t;0 thenbb=messagebox("提示","是否保存未保存的数据",question!,yesnocancel!,1)choose case bbcase 1if dw_1.update()=1 then commit using sqlca;return 0else rollback using sqlca;messagebox("提示","数据保存失败!")end ifcase 2return 0case 3return 1end chooseend if(2)“增加”按钮控件的Click事件用于增
31、加一个值班员,程序代码如下:dw_1.scrolltorow(dw_1.insertrow(0)dw_1.setcolumn(0)dw_1.setfocus()(3) “删除”按钮控件的Click事件用于删除一个值班员,程序代码如下:long netnet=messagebox("","你确定要删除吗",question!,yesno!,1)/提示是否要删除choose case netcase 1dw_1.deleterow(dw_1.getrow()/删除当前行case 2return 1end choose(4) “保存”按钮控件的Click事件将
32、用于保存用户所做的修改,程序代码如下:int i_counti_count=dw_1.modifiedcount()+dw_1.deletedcount()/判断改变和删除的数目。if i_count>0 thenif dw_1.update()=1 thencommit using sqlca;messagebox("提示","已成功保存"+string(i_count)+"纪录")elserollback using sqlca;messagebox("提示","保存失败")end i
33、fend if(5)“退出”按钮控件的Click事件将用于退出该程序窗口。14菜谱信息维护窗口w_choose_receive的设计菜谱信息维护窗口用于维护系统中的菜谱信息。菜谱信息维护窗口界面如下图所示。在该窗口中可以完成查询、增加、删除和保存的功能。ddlb_1、ddlb_2属性相同,其Items属性页如下图所示。ddlb_3、ddlb_4属性也相同,其Items属性页如下图所示。ddlb_5的Items属性页如下图所示其他的控件如窗口上所示。所链接的数据窗口对象d_cp在编辑状态下,如图下所示该数据窗口对象所链接的数据库表格为CP,其数据源表示如下: SELECT "cp&qu
34、ot;."cp_no", "cp"."cp_name", "cp"."cp_kind", "cp"."cp_price", "cp"."cp_detail" FROM "cp" (1) 在窗口w_cp的Open事件中输入如下的程序代码:dw_1.settransobject(sqlca)ddlb_1.text="菜谱号"ddlb_4.text="="ddlb
35、_7.text="and"(2) “查询”按钮控件的Click事件用于执行条件查询,并将结果显示在数据窗口中,其程序代码如下:int istring lookforcondition/定义参数:查询条件综合结果string lookforitem1,lookforitem2,lookforitem3/定义参数:要查询的列string lookforwhat1,lookforwhat2,lookforwhat3/定义参数:要查询的内容string lookforhow1,lookforhow2,lookforhow3/定义参数:查询的符号string lookforopera
36、tor1,lookforoperator2/定义参数:不同查询条件组合操作符号lookforhow1=ddlb_3.textlookforhow2=ddlb_4.textif ddlb_5.text="与" thenlookforoperator1="and"elseif ddlb_5.text="或" thenlookforoperator1="or"elseif ddlb_5.text="非" thenlookforoperator1="not"end ifif ddlb
37、_1.text="菜谱号" thenlookforitem1="cp_no"lookforwhat1="'"+sle_1.text+"'"elseif ddlb_1.text="菜名" thenlookforitem1="cp_name"lookforwhat1="'"+sle_1.text+"'"elseif ddlb_1.text="种类" thenlookforitem1=&qu
38、ot;cp_kind"lookforwhat1="'"+sle_1.text+"'"elseif ddlb_1.text="价格" thenlookforitem1="cp_price"lookforwhat1=sle_1.textelseif ddlb_1.text="备注" thenlookforitem1="cp_detail"lookforwhat1="'"+sle_1.text+"'"
39、end ifif ddlb_2.text="菜谱号" thenlookforitem2="cp_no"lookforwhat2="'"+sle_2.text+"'"elseif ddlb_2.text="菜名" thenlookforitem2="cp_name"lookforwhat1="'"+sle_2.text+"'"elseif ddlb_2.text="种类" thenloo
40、kforitem2="cp_kind"lookforwhat2="'"+sle_2.text+"'"elseif ddlb_2.text="价格" thenlookforitem2="cp_price"lookforwhat2=sle_2.textelseif ddlb_2.text="备注" thenlookforitem2="cp_detail"lookforwhat2="'"+sle_2.text+&quo
41、t;'"end ifif ddlb_2.text="" or ddlb_4.text="" thenlookforcondition=lookforitem1+lookforhow1+lookforwhat1elselookforcondition=lookforitem1+lookforhow1+lookforwhat1+" "+lookforoperator1+" "+lookforitem2+lookforhow2+lookforwhat2end ifdw_1.setfilter(lookf
42、orcondition)filter(dw_1)i=dw_1.retrieve()if i<1 thenmessagebox("提示","没有相关记录!",Exclamation!)sle_1.text=""sle_2.text=""return end if(3) “增加”按钮控件的Click事件用于增加一个菜谱,程序代码如下:dw_1.scrolltorow(dw_1.insertrow(0)dw_1.setcolumn(0)dw_1.setfocus()(4)“删除”按钮控件的Click事件用于删除一个
43、菜谱,程序代码与上述的“删除”按钮相同. (5) “保存”按钮控件的Click事件将用于保存用户所做的修改,程序代码与上述“保存”按钮相同. (6) “退出”按钮控件的Click事件将用于退出该程序窗口。15. 修改口令模块的设计窗口w_changekl是用来修改口令.窗口如下图,,控件如图所示。(1)按钮控件”修改”的Click事件,用于修改用户的口令,首先判断两次输入的新密码是否一致,再判断输入的原密码是否正确,然后进行口令修改,程序代码如下:string correct_pswd,ls_user,ls_pswdls_user=trim(sle_1.text)ls_pswd=trim(sl
44、e_2.text)if ls_user="" thenmessagebox("","用户名不能为空!")returnend ifif ls_pswd="" thenmessagebox("","请输入原口令!")returnend ifif sle_4.text<>sle_3.text thenmessagebox("警告","两次输入的口令不一致,请重新输入")sle_3.text=""sle_4.te
45、xt=""sle_3.setfocus()elseselect zby_pawd into:correct_pswdfrom zbywhere zby_name=:ls_user;if correct_pswd<>ls_pswd thenmessagebox("警告","原口令不正确!")elseupdate zby set zby_pawd=:sle_3.text where zby_name=:ls_user;commit using sqlca;close(parent)messagebox("注意&quo
46、t;,"你的口令已经修改,请牢记!")end ifend if(2)“取消”按扭用来退出该窗口。16. 订餐窗口w_dc的设计订餐窗口用于订餐的输入过程。订餐窗口界面如下图所示。所链接的数据窗口对象d_dc在编辑状态下,如下图所示。该数据窗口对象所链接的数据库表格为DC,其数据源表示如下: SELECT "dc"."dc_desk", "dc"."cp_no", "dc"."cp_name", "dc"."dc_num&quo
47、t;, "dc"."dc_data" FROM "dc" 在桌号那一列的edit类型为dropdownlistbox,属性code table如下图菜谱号和菜名两列的edit类型相同都是dropdowndw.菜谱号的如图a菜名有如图b.图a 图b这样可以更快,更准确的订餐.(1)在窗口的open事件中输入如下代码:int g_rownumberg_rownumber=dw_1.insertrow(0)dw_1.settransobject(sqlca)dw_1.setfocus()date g_dc_dateg_dc_date=tod
48、ay()dw_1.setitem(g_rownumber,"dc_data",g_dc_date)/在数据窗口的日期这列显示当前日期dw_1.scrolltorow(g_rownumber)dw_1.setcolumn(0)(2) “下一道菜”按钮控件的Click事件用于取得已经输入的订餐桌号和日期,然后将它们复制到新增加的数据中,程序代码如下:int g_rownumberg_rownumber=dw_1.insertrow(0)date g_dc_dateg_dc_date=today()dw_1.setitem(g_rownumber,"dc_data&qu
49、ot;,g_dc_date)dw_1.setfocus()dw_1.scrolltorow(g_rownumber)dw_1.setcolumn(1)(3) “删除”按钮控件的Click事件用于删除一个菜谱,程序代码与上述的“删除”按钮控件相同.(4) “保存”按钮控件的Click事件将用于保存用户所做的修改,程序代码与上述的“保存”按钮相同。(5) “退出”按钮控件的Click事件将关闭该窗口。17. 订餐修改窗口的设计订餐修改窗口w_ujttyyytt用于修改所输入的订餐信息。窗口上面可以设置订餐的查询条件,符合条件的订餐信息将会显示在下面的数据窗口控件中,窗口布局如下图所示。Ddlb_1
50、和ddlb_2两个控件的属性一样,其item属性如下图,所链接的数据窗口对象d_dc (1)在订餐修改窗口的Open事件中输入如下的程序代码:/设置事务对象dw_1.settransobject(sqlca)ddlb_1.text="="ddlb_5.text="="(2)“显示订餐”按钮控件的Click事件用于显示符合条件的订餐,程序代码如下:int istring lookforconditionstring lookforitem1,lookforitem2string lookforwhat1,lookforwhat2string lookfor
51、how1,lookforhow2lookforhow1=ddlb_1.textlookforhow2=ddlb_2.textlookforitem1="dc_desk"lookforwhat1="'"+sle_1.text+"'"lookforitem2="date(dc_data)"lookforwhat2=sle_3.textif sle_3.text="" thenlookforcondition=lookforitem1+lookforhow1+lookforwhat1e
52、lselookforcondition=lookforitem1+lookforhow1+lookforwhat1+" "+"and"+" "+lookforitem2+lookforhow2+lookforwhat2end ifdw_1.setfilter(lookforcondition)filter(dw_1)i=dw_1.retrieve()if i<1 thenmessagebox("提示","没有相关记录!",Exclamation!)return end if(3) “增加”
53、按钮控件的Click事件用于增加一个值班员,程序代码如下,int g_rownumberg_rownumber=dw_1.insertrow(0)date g_dc_dateg_dc_date=today()dw_1.setitem(g_rownumber,"dc_data",g_dc_date)/为数据窗口的日期列显示当前日期dw_1.setfocus()dw_1.scrolltorow(g_rownumber)dw_1.setcolumn(1)(4) “删除”按钮控件的Click事件用于删除一个值班员,程序代码与上面所述的“删除”按钮控件相同.(5) “保存”按钮控件的
54、Click事件将用于保存用户所做的修改,程序代码与上面所述的“保存”按钮控件相同.(6) “退出”按钮控件的Click事件将用于退出该程序窗口。(7)在该数据窗口的doubleclick事件中输入如下代码:string ssif ="cp_name" thenss=getitemstring(row,"cp_name")openwithparm(w_dc_cp,ss)end if.该代码的功能是当双击该数据窗口里的菜名这一列里的数据时,会弹出菜谱信息的窗口w_dc_cp.如下图该窗口的按件如上图,其数据窗口为d_dc_cp,其在编辑状态下
55、如下图该数据窗口对象所链接的数据库表格为CP,其数据源表示如下: SELECT "cp"."cp_no", "cp"."cp_name", "cp"."cp_kind", "cp"."cp_price", "cp"."cp_detail" FROM "cp" WHERE "cp"."cp_name" = :aa (1)在该窗口的open事
56、件中输入如下代码:string aaaa=message.stringparmdw_1.settransobject(sqlca)dw_1.retrieve(aa)(2)”返回”按扭控件用来关闭该窗口.17.订餐取消模块的设计窗口w_dc_qx是用来退订所定的菜,界面如下图,控件如图所示,所连接的数据窗口为d_dc2,与d_dc不同的是它的各列edit类型为默认.ddlb_1与ddlb_2的属性相同.ddlb_1的item属性图a, ddlb_2的item属性图b图a 图b(1)在该窗口的open事件中输入代码:dw_1.settransobject(sqlca)(2)”确定”按扭的click
57、ed事件用于查看要退订的餐桌,代码:int iif ddlb_1.text="" thenmessagebox("","请选择要退餐的桌号!")return end ifstring l_dc_deskl_dc_desk="dc_desk='"+ddlb_1.text+"'"dw_1.setfilter(l_dc_desk)filter(dw_1)i=dw_1.retrieve()if i<1 thenmessagebox("","此桌无消费记
58、录!")ddlb_1.text=""elsemessagebox("","请选择要退定的菜!")returnend if(3) ”确定”按扭的clicked事件用于退订选中在菜的菜的数量,如成功则保存到订餐的数据库中.代码如下:double l_dc_num1,l_dc_num2string l_cp_namel_dc_num1=double(ddlb_2.text)l_cp_name=dw_1.getitemstring(dw_1.getrow(),"cp_name")l_dc_num2=dw_1.ge
59、titemnumber(dw_1.getrow(),"dc_num")int retret=messagebox("","你确定要退定"+string(l_dc_num1)+"一份"+l_cp_name,question!,yesnocancel!,2)choose case retcase 1if ddlb_2.text="all" thendw_1.deleterow(0)if dw_1.update()=1 thenmessagebox("","退定成功!")close(parent)elsemessagebox("","退定失败,请重试!")returnend ifelseif l_dc_num1>l_dc_num2 thenmessagebox("警告","退定出错,请查看数量!")return 1end ifUPDATE "dc" SET "dc_num" = :l_dc_num2 - :l_dc_num1; if dw_1.update()=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年海洋柔性软管设计与选型技术手册
- 2026年充电站投资回本周期从两年拉长至四年深度原因解析
- 2026年PureAir新风系统与空调联动风避人吹技术应用
- 2026年智能体工具链稳定性保障:检索 写入 接口调用的兜底设计
- 海南省琼海市2026年初三下第一次学情调查化学试题含解析
- 2026年湖南省部分地区初三化学试题4月质量调研测试(二模)试题含解析
- 山东省滨州市滨城区东城中学2026届初三下学期七调考试化学试题含解析
- 2026届重庆巴蜀常春藤中考预测金卷化学试题(安徽卷)含解析
- 广西崇左市江州区重点名校2026届初三4月联考化学试题试卷含解析
- 山东省聊城市冠县东古城镇中学2026届下学期初三生物试题二模考试试卷含解析
- 2026江苏徐州丰县综合检验检测中心招聘编外工作人员10人笔试备考题库及答案解析
- 2026年微机电系统(MEMS)设计原理
- 2026年黑龙江艺术职业学院单招综合素质考试题库含答案解析
- 2026广东事业单位招聘(公基)考试真题及答案
- 2026年春季开学收心大会校长讲话:马年春风送暖奋楫逐梦启新程
- 深圳爆破证考试题库及答案
- 宁夏德渊集团招聘笔试题库2026
- 安全启航逐梦新学期2026年寒假开学第一课
- 高速护栏施工培训课件
- 庐山课件教学
- 2026年江西工商职业技术学院单招综合素质考试题库及完整答案详解1套
评论
0/150
提交评论