




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE18南京审计学院信息科学学院课程设计报告书ﻩﻩﻩﻩ课程名称: 信息系统开发工具课程设计 ﻩﻩﻩ课题名称: 餐饮管理系统ﻩ ﻩﻩ专业: 信息管理与信息系统ﻩﻩ班级:ﻩﻩ08级信息管理1班 ﻩﻩﻩﻩ学号:ﻩ ﻩ061415309姓名:ﻩﻩﻩ孙晓刚ﻩﻩﻩﻩﻩ ﻩ成绩:ﻩﻩﻩﻩ ﻩ ﻩ 2010年12月26日目录TOC\o"1-3"\h\z\uHYPERLINK\l”_Toc170190870"第一章系统需求分析ﻩ1HYPERLINK\l”_Toc170190871"1。1系统功能需求分析ﻩ1HYPERLINK\l”_Toc170190873"1.2系统数据流图ﻩ1HYPERLINK\l"_Toc170190873"1。3数据字典 2HYPERLINK\l”_Toc170190875"第二章系统概要设计 5HYPERLINK\l”_Toc170190876”2.1系统总体框图设计ﻩ5HYPERLINK\l”_Toc170190877"2.2各模块功能分析ﻩ。...。...。..5HYPERLINK\l"_Toc170190878”第三章数据库设计ﻩ7HYPERLINK第四章系统详细设计及实现ﻩ11HYPERLINK4。1系统登陆界面设计ﻩ11HYPERLINK\l”_Toc170190884”4.2系统主界面设计ﻩ15HYPERLINK\l"_Toc170190885"4.3菜谱设置模块ﻩ19HYPERLINK\l”_Toc170190886”4.3.1菜谱信息设置设计 19HYPERLINK\l”_Toc170190886"4.3。2菜谱查询设计 20HYPERLINK\l"_Toc170190886”4。3。3菜谱添加设计 22HYPERLINK\l"_Toc170190887"4.3。4菜谱修改设计 24HYPERLINK4.3.5菜谱删除设计 25HYPERLINK\l”_Toc170190890”4.4开台管理模块ﻩ27HYPERLINK\l”_Toc170190891"4.4.1搜索台号设计ﻩ27HYPERLINK\l"_Toc170190892"4。4.2开台设置设计ﻩ30HYPERLINK\l”_Toc170190892"4.4。3台号信息查询的设计 32HYPERLINK\l"_Toc170190892”4.4.4房台列表显示函数的设计ﻩ34HYPERLINK\l"_Toc170190893"4。5点菜管理模块ﻩ34HYPERLINK\l”_Toc170190894”4.5。1客户点菜设计ﻩ354.5.2客户放弃开台设计..。。..。...。...。..。.。.。。..。。。。。...。....374.5.3客户点菜完毕返回设计.。...。。.。.。。。。...。..。。....。.。...。...。。..37HYPERLINK\l”_Toc170190909"第五章数据模块的创建与实现.。。...。...。.。.......。。。。。.....。。...。45HYPERLINK\l"_Toc170190910”5.1数据模块的创建ﻩ45HYPERLINK\l"_Toc170190911"5.2数据模块的实现ﻩ46HYPERLINK\l”_Toc170190909”第六章系统调试与测试 。....53HYPERLINK\l"_Toc170190910"6。1软件功能测试ﻩ47HYPERLINK\l”_Toc170190912”第七章结论ﻩ54HYPERLINK\l"_Toc170190913”7。1系统开发遇到的问题 54HYPERLINK\l"_Toc170190914"7。2系统改进方面ﻩ54HYPERLINK\l"_Toc170190915”7.3总结 54摘要近几年来,随着我国国民经济的稳定增长,餐饮业的竞争也越来越激励,想在这样竞争激励的环境下生存,就必须运用科学的管理思想与先进的管理方法,使用点餐与管理一体化。这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使得管理者能够准确,有效的管理餐饮。因此,餐饮业的管理者更需要一种综合实时的管理模式,希望从更科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜。结合管理信息系统的开发方法及步骤,以此为理论根据,开发出一个信息管理系统.-—餐饮管理系统。它采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象。关键字:餐饮管理系统、提高服务水平、提高工作效率第一章系统需求分析1.1系统功能需求分析随着现在连锁餐饮店的不断崛起,作为餐饮业不可缺少的一部分—-餐饮管理系统,它的内容对于餐饮业的决策者和管理者来说都非常重要。本系统基于餐饮管理系统之下的一个子系统,可以把整个餐饮店的日常经营管理信息化,包括点餐、库存管理、员工信息等日常经营的一些统计功能。现在此系统还不够完善,将来使此系统会集成更多的功能,例如:餐饮管理系统的开发成功,实现了餐饮业的现代化,表明了餐饮管理正与国际化接轨,有了更为深入的发展。《餐软管理系统》采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂。具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象。根据实际情况的需要,系统主要功能如下:=1\*GB2⑴前台管理:开台管理、客户结账、退出系统.=2\*GB2⑵系统管理:权限管理、系统管理、帮助。=3\*GB2⑶基础信息管理:酒水信息查询、菜谱信息查询及设置。1。2系统数据流图根据实际情况要求,系统数据流图如图1.2。1所示图1.2.1数据流图1。3数据字典在这定义的酒店餐饮数据字典,主要对数据流程图中的数据流、数据存储和处理过程进行说明。(1)主要的数据流定义1)数据流名称:客户信息位置:客户ﻩP2定义:客户信息=房间台号+所点菜+酒水+开单时间+服务员编号数据流量:说明:客人点菜时可以进行特色菜和酒水信息的查询,买单时要核对消费名目是否属实。2)数据流名称:菜谱信息位置:菜谱 P2定义:菜谱信息=编号+房间台号+菜名+单位+价格+菜系类别+口味说明数据流量:说明:编号不能有重复的.3)数据流名称:桌台状况位置:桌台ﻩP1定义:桌台状况=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态数据流量:说明:只有状态为空闲的房台才能开台。4)数据流名称:开台人位置:服务员ﻩP1定义:开台人=编号+姓名+员工类别+密码数据流量:说明:不同的员工类别具有不同的权限,管理员具有所有权限,服务员不具备系统维修等权限。5)数据流名称:员工信息位置:P3ﻩP1定义:员工信息=员工编号+姓名+性别+出生日期+联系电话+联系地址+聘用日期+工作部门+员工类别+身份证号+备注数据流量:说明:员工编号不可相同。6)数据流名称:管理员情况位置:管理员ﻩP3定义:管理员=姓名+口令数据流量:平均流量为每年传输50次。说明:通过管理员来不断的更新和维护这个系统.7)数据流名称:开台信息位置:P1 P4定义:开台信息=房间台号+服务费数据流量:说明:服务费可以省去。8)数据流名称:点菜信息位置:P2 P4定义:点菜信息=房间台号+类别+编号+名称+类型+数量+价格+合计+点但日期+结单日期+服务员编号+服务员姓名+结帐编号数据流量:说明:房间台号是根据开台而来的。(2)主要的数据存储定义1)数据存储编号:D1数据存储名称:桌台信息输入:P1输出:P2数据结构:桌台信息=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态存取方式:检索和更新处理,以检索为主。说明:编号具有唯一性,状态只能是空闲或者营业。2)数据存储编号:D2数据存储名称:员工信息输入:P1输出:P3数据结构:员工信息=员工类别+口令存取方式:主要是检索。说明:根据员工类别的不同,在后面的操作中具有不同的权限.3)数据存储编号:D3数据存储名称:菜谱信息输入:P2输出:P2数据结构:菜谱信息=菜名+单位+价格+菜系类别+口味说明存取方式:检索说明:在点菜时对菜谱进行查询。(3)主要处理过程1)处理过程编号:P1处理过程名:开台输入:服务员权限,桌台状况输出:开台信息处理说明:综合各方面信息,进行客人消费前最基本的准备.2)处理过程编号:P2处理过程名:点菜ﻫ输入:D1,D3,D4输出:点菜信息处理说明:客人根据菜谱信息,酒水信息,特色菜信息,选择自己中意的项目进行。3)处理过程编号:P3处理过程名:权限管理输入:员工类型,口令输出:相应的操作权限处理说明:输入员工类别和口令获得相应的操作权限,管理员比服务员具有更多的操作权限。第二章系统概要设计2.1系统总体框架设计根据业务情况,该系统共分为开台管理、客人买单、菜谱信息设置、客户点菜、酒水信息设置等模块,系统结构图如图2。1所示。图2.1餐饮管理系统结构图2.2各模块功能分析(1)系统登录窗口主要功能:1)以图标形式显示数据库中操作员,并凭口令登入到主界面.2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统。3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。(2)系统主界面主要功能1)根据操作员权限设置相应权限的菜单和工具栏功能.2)可通过菜单或快捷键进入相应子界面。3)显示了系统当前时间和相应操作员。(3)系统菜谱信息设置界面主要功能:实现对菜谱信息的添加、修改、删除、查询的功能。(4)系统开台管理界面主要功能:1)以图标模式显示空台、营业台,点击台号图标则自动显示相应台号信息.2)通过输入台号检索符合条件的台号。3)点击空房自动弹出与昂查询窗口从而自动开台。(5)系统点菜界面主要功能:1)实现菜谱,酒水查询的链接。2)点击“开始点菜”按钮台号状态自动变为开台,并聚焦到编号栏.3)在编号栏输入菜编号按回车自动录入菜的信息,.4)自动生成结账编号,输入菜数量自动计算合计消费金额。5)可实现挂单、读单、放弃开台和点菜完毕返回的功能。第三章数据库设计3.1系统E-R图的设计系统E—R图如图3.1所示图3.1系统E—R图3。2数据库结构设计数据库结构设计是总体设计阶段非常重要的环节,好的数据库结构可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成编码的改动,所以必须认真设计数据库后再进行编码,从而避免了无谓的重复的工作.本系统采用了SQLServer数据库,数据库名称为060412079。该数据库包含4个表,分别是:开台表,点菜表,菜谱费用信息表,台号信息表。下面分别介绍数据表的结构。开台表开台表用于保存开台的相关信息。开台表的结构见表3-2-1所示。表3—2—1开台表结构字段名称数据类型字段大小允许为空否编号int4设置为主键房台名称char30允许为空类型说明char20允许为空餐饮部门char20允许为空服务费money8允许为空简要说明char30允许为空状态char20允许为空点菜表点菜表用于保存点菜信息和相应的消费信息。点菜表的结构见表3-2—2所示。表3-2-2点菜表结构字段名称数据类型字段大小是否允许为空idchar16设置为主键房间台号int4允许为空类别Char10允许为空编号int4允许为空名称char50允许为空类型char20允许为空单位char10允许为空数量int4允许为空价格money8允许为空合计Money8允许为空点单日期datetime8允许为空结单日期datetime8允许为空服务员编号int8允许为空服务员姓名char12允许为空状态char10允许为空结账编号int4允许为空是否结单char10允许为空3、菜谱费用信息表用于查询餐饮店所有的菜的信息。菜谱费用信息表的结构如图3—2-3所示。表3-2-3菜谱费用信息结构字段名称数据类型字段大小是否允许为空编号int4设为主键菜名char50允许为空单位char10允许为空价格money8允许为空菜系类别char20允许为空口味说明char30允许为空4、台号信息表用于台号信息的查询,方便了消费者选台,开台及其他的作用.台号信息表的结构如图3-2—4示。表3—2—4台号信息表结构字段名称数据类型字段大小是否允许为空编号int4设为主键房台名称char30设为主键类型说明Char20允许为空餐饮部门Char20允许为空服务费money8允许为空简要说明char30允许为空状态char10允许为空容纳人数Int4允许为空第四章系统详细设计及实现4.1系统登陆界面设计1.实现目标程序启动后,首先登陆此界面验证操作员的密码。主要实现的功能如下:1)以图标形式显示数据库中操作员,并凭口令登入到主界面。2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统.3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。系统登录界面如图4。1.1所示.图4.1.1系统登录界面2。实现过程(1)添加窗体设置窗体caption属性为“登录窗口",保存窗体为u79in.pas。(2)向窗体中添加Datasource、Query、Edit、Listview、ImageList、Image、Time、Label等控件。主要控件对象的属性如表4-2-1所示。表4—2-1主要控件对象的属性列表控件名属性值功能Query1DatabasenameSQL060412079Select*from员工信表权限查询Database1DatasetQuery1设置数据源3.程序主要代码如下:=1\*GB3①单击“登陆"按钮,将判断操作员、操作密码是否正确,如果正确进入主界面并根据操作员权限设置菜单和工具是否可用。如果输入密码错误将提醒并返回,三次错误输入则自动退出系统。procedureTUser.BitBtn1Click(Sender:TObject);beginMainForm.ToolButton1.Enabled:=True;MainForm.ToolButton2.Enabled:=True;MainForm。ToolButton5。Enabled:=True;MainForm.ToolButton6.Enabled:=True;MainForm.N1.Enabled:=True;MainForm.N2.Enabled:=True;MainForm.N4.Enabled:=True;MainForm.N3。Enabled:=True;MainForm。N5.Enabled:=True;MainForm.N6.Enabled:=True;MainForm.N7.Enabled:=True;MainForm.N8.Enabled:=True;MainForm.N9.Enabled:=True;MainForm.N17。Enabled:=True;MainForm.N19.Enabled:=True;ifQuery1.FieldByName('编号’).AsString=’controller’then//如果是系统管理员beginifEdit1.Text<>Query1.FieldByName(’密码’).AsStringthenbeginShowMessage('['+Query1.FieldByName(’姓名')。AsString+']的口令错误.');//口令错误Edit1.SetFocus;EndElsebeginMainForm.StatusBar1.Panels[1].Text:='用户['+Query1.FieldByName('姓名')。AsString+']';MainForm。User1:=Query1。FieldByName(’姓名').AsString;User_Close:=3;Timer1。Enabled:=False;Close;end;EndElsebeginMainForm.ToolButton1。Enabled:=False;MainForm。ToolButton2.Enabled:=False;MainForm.ToolButton5.Enabled:=False;MainForm.N1.Enabled:=False;MainForm。N2.Enabled:=False;MainForm。N4。Enabled:=False;MainForm.N3.Enabled:=False;MainForm.N5。Enabled:=False;MainForm.N6.Enabled:=False;MainForm.N7。Enabled:=False;MainForm.N8.Enabled:=False;MainForm.N9.Enabled:=False;MainForm.N17.Enabled:=False;MainForm.N19.Enabled:=False;ifEdit1.Text〈>Query1。FieldByName('密码')。AsStringthenbeginShowMessage('['+Query1.FieldByName('姓名’)。AsString+']的口令错误.’);Edit1.SetFocus;EndElsebeginName:=Query1.FieldByName('权限').AsString;MainForm.EnabledKey(Name);//设置操作员权限MainForm.StatusBar1。Panels[1]。Text:='用户['+Query1.FieldByName('姓名’).AsString+']’;User_Close:=3;Timer1.Enabled:=False;Close;end;end;END;=2\*GB3②窗体启动,关闭钥匙,后将所有操作员添加到操作员列表.procedureTUser.FormShow(Sender:TObject);varList:Array[0..1]ofTListItem;beginTimer1。Enabled:=True;User_Close:=0;//打开关闭钥匙Query1.Close;Query1.Open;ListView1。Items。Clear;WhilenotQuery1.EofdobeginList[0]:=ListView1.Items.Add;List[0].Caption:=Query1。FieldByName('姓名’).AsString;ifQuery1。FieldByName('编号').AsString=’controller’thenbeginList[0]。ImageIndex:=0;EndElsebeginList[0].ImageIndex:=1;end;Query1。Next;end;end;=3\*GB3③选择操作员,点击其中一个则将员工的姓名和类型添加到了相应位置。procedureTUser.ListView1Click(Sender:TObject);varList:Array[0。.1]ofTListItem;beginList[0]:=ListView1。Selected;ifList[0]<>NilthenbeginQuery1。Locate('姓名',List[0].Caption,[loCaseInsensitive]);//查询姓名,但是如果有从名的按第一个算.end;end;4.2主界面设计1、程序启动后。系统在“登陆界面”验证操作员密码后,将进入此界面。系统主界面主要功能:=1\*GB2⑴根据操作员权限设置相应权限的菜单和工具栏功能。=2\*GB2⑵可通过菜单或快捷键进入相应子界面.=3\*GB2⑶显示了系统当前时间和相应操作员.主程序界面如图4.2。1所示。图4。2。1主程序界面2。实现过程(1)启动Delphi,设置窗体名为mainfrom,设置窗体caption为“餐饮管理系统”,保存为u791.pas。(2)向窗体中添加Imagelist、mainmenu、image、toolbutton、stausbar、panel、time、label等控件主要属性为:控件名属性值功能Toolbar1imagesImagelist1设置工具栏图标stausbar1Panel1用户登录【管理员】显示程序状态、参数(3)主要程序代码如下:=1\*GB3①使应用项目的提示信息挂钩程序。procedureTMainForm.FormCreate(Sender:TObject);beginApplication.OnHint:=DisPlayHint;//与应用项目的提示信息挂钩end;=2\*GB3②先调用系统登陆窗口,再设置窗体状态参数程序。procedureTMainForm。FormShow(Sender:TObject);varYear,Month,Day:Word;beginClose_1:=1;User.ShowModal;//调用系统登陆窗口IfClose_1=0ThenCloseElsebeginApplication。MainForm.WindowState:=wsMaximized;Application.MainForm。WindowState:=wsNormal;DecodeDate(StrToDate(DateTOStr(Date)),Year,Month,day);//分解日期StatusBar1.Panels[2]。Text:=’系统日期:'+IntToStr(Year)+'年’+IntToStr(Month)+'月'+IntToStr(day)+'日';end;end;=3\*GB3③调入开台界面程序。procedureTMainForm.N8Click(Sender:TObject);beginIfAssigned(KTGL)ThenbeginDataModule1.THXX.Open;//打开台号信息表DataModule1。cybmb。Open;//打开餐饮部门表DataModule1.JZBH.Open;//打开结帐编号表KTGL:=TKTGL.Create(Self);KTGL.ShowModal;end;end;=4\*GB3④设置“B”类权限有系统管理和系统维护操作权,“A”类权限即系统管理员的操作享有一切操作权限.如图4.2.2所示。图4。2。2B类权限主程序界面代码如下:FunctionTMainForm。EnabledKey(key:String):Boolean;//声明操作权限函数EnabledKeybeginifPos('A’,key)>0then//具有"A"类权限beginMainForm。ToolButton1。Enabled:=True;MainForm.ToolButton2。Enabled:=True;MainForm.ToolButton5。Enabled:=True;MainForm。ToolButton6。Enabled:=True;MainForm.N1.Enabled:=True;MainForm.N2.Enabled:=True;MainForm。N4.Enabled:=True;MainForm.N3.Enabled:=True;MainForm.N8。Enabled:=True;MainForm。N9.Enabled:=True;MainForm。N17.Enabled:=True;MainForm。N19。Enabled:=True;EndElseifPos('B’,key)>0then//具有”B"类权限beginMainForm.ToolButton1.Enabled:=True;MainForm.ToolButton2.Enabled:=True;MainForm。ToolButton6.Enabled:=True;MainForm.N1.Enabled:=True;MainForm。N5。Enabled:=True;MainForm。N6.Enabled:=True;MainForm。N7。Enabled:=True;MainForm.N4.Enabled:=True;MainForm.N3.Enabled:=True;MainForm。N8.Enabled:=True;MainForm.N9.Enabled:=True;MainForm.N17。Enabled:=True;MainForm。N19。Enabled:=True;End;end;=5\*GB3⑤调入菜谱信息设置界面程序。procedureTMainForm.N6Click(Sender:TObject);beginIfAssigned(CPXXSZ)ThenbeginDataModule1。CPFYXX.Open;//打开菜谱费用信息表DataModule1。cxlbxx.open;//打开菜系类别信息表CPXXSZ:=TCPXXSZ。Create(Self);CPXXSZ.ShowModal;end;end;4。3菜谱信息设置界面设计4.3.1菜谱设置模块1.实现目标程序启动后,调用菜单“基础信息设置”下的“菜谱信息设置”项,将打开“菜谱信息设置界面"。系统菜谱信息设置界面主要功能:实现对菜谱信息的添加、修改、删除、查询的功能。2。实现过程(1)添加新窗体,设置窗体名为cpxxsz,设置窗体caption为“菜谱信息设置”,保存为u79cpset.pas。(2)向窗体中添加query、panel、groupbox、dbgrid、dbedit、edit、dbtext、bitbtn、dblookupcombobox、time、datasetfrist、actionlist、label等控件,主要控件属性如表4—3-1所示.表4—3—1主要控件属性对象属性值功能Query1Databasenamesql060412079SlectMAX(编号)from菜谱信息费用表设置数据范围DatasetFrist1DatasourceCaptionHintDatabase1.cpxxfys首记录移动到第一条记录移动到首记录DatasetLast1DatasourceCaptionHintDatabase1.cpxxfys尾记录移动到最后一条记录移动到尾记录DatasetNext1DatasourceCaptionHintDatabase1.cpxxfys下一条记录移动到下一条记录移动到下一条记录DatasetPrior1DatasourceCaptionHintDatabase1.cpxxfys上一条记录移动到上一条记录移动到上一条记录DBLookupComBox1ListsourceKeyfieldListfieldDatasourceDtafirldDatabase1。cpfyxxs菜系名称菜系名称Database1.cxlbxxs菜系类别选择菜系类别4.3.2菜谱查询设计1。菜谱信息设置查询界面如图4.3。1所示。图4。3.1菜谱信息查询设置界面2.代码如下:procedureTCPXXSZ.BitBtn1Click(Sender:TObject);vara,b,c:integer;d:String;beginIfLength(Edit1.Text)=0Then//如果输入查询信息为空beginShowMessage('请输入查询的[编号或菜名]信息’);Edit1。SetFocus;EndElsebegina:=Length(Edit1.Text);c:=0;forb:=1toado//for语句用于判断查询是按菜谱编号还是按菜名查询beginD:=COPY(edit1.text,b,1);if(D='0')or(D〈=’9')thenbeginc:=c+1;end;end;Ifc=Length(Edit1。Text)Then//按菜谱编号查询beginifDataModule1.CPFYXX。Locate(’编号',StrTOInt(Edit1.Text),[loCaseInsensitive])thenbeginDBGrid1.Setfocus;DBGrid1。SelectedIndex:=0;EndElsebeginShowMessage('对不起,没有找到。');Edit1。setfocus;end;EndElse//按菜谱编号查询beginifDataModule1.CPFYXX.Locate(’菜名’,Edit1.Text,[loPartialKey])thenbeginDBGrid1.Setfocus;DBGrid1.SelectedIndex:=1;EndElsebeginShowMessage(’对不起,没有找到。');Edit1.setfocus;end;end;end;end;4。3.3菜谱添加设计1。菜谱信息设置添加界面如图4。3.2所示.图4。3.2菜谱信息添加设置界面2。代码如下:procedureTCPXXSZ.BitBtn2Click(Sender:TObject);vara:integer;beginQuery1.Close;Query1.Open;ifQuery1.RecordCount〈>0thena:=Query1.Fields[0].AsIntegerelsea:=1;ifBitbtn2.Caption='添加'then//添加菜谱信息beginDataModule1.CPFYXX.Refresh;IfDataModule1。CPFYXX.RecordCount=0ThenA:=79000//添加菜谱信息ElsebeginDataModule1。CPFYXX.Last;a:=DataModule1。CPFYXX.FieldByName(’编号')。AsInteger;end;BitBtn2.Caption:='保存';BitBtn3。CaPtion:='取消';Aenabled(1);DataModule1.CPFYXX.Insert;DataModule1.CPFYXX.FieldByName(’编号').AsInteger:=a+1;DataModule1.CPFYXX。FieldByName('菜系类别').AsString:=DataModule1。CXLBXX.FieldByName('菜系名称’).AsString;DBEdit2.SetFocus;EndElse//保存菜谱信息beginif(Length(DataModule1.CPFYXX。FieldByname('菜名’)。AsString)=0)or(Length(DataModule1.CPFYXX.FieldByname(’单位').AsString)=0)or(Length(DataModule1.CPFYXX.FieldByname('价格').AsString)=0)thenbeginShowMessage(’请将[菜名、单位、价格]的数据添全。');DBEdit1.SetFocus;EndElsebeginAEnabled(2);BitBtn2。Caption:=’添加’;BitBtn3。Caption:='修改';DataModule1.CPFYXX.Post;//保存菜谱信息end;end;end;4.3。4菜谱修改设计1.菜谱信息设置修改界面如图4.3。3所示.图4.3.3菜谱信息设置修改界面2.代码如下:procedureTCPXXSZ.BitBtn3Click(Sender:TObject);beginifBitBtn3.Caption='修改’thenbeginDataModule1.CPFYXX。Refresh;IfDataModule1.CPFYXX.RecordCount=0Then//如果数据为空beginShowMessage(’对不起,没有数据可以修改。’);EndElse//如果数据不为空beginAEnabled(1);BitBtn2。Caption:='保存';BitBtn3。Caption:='取消';DataModule1.CPFYXX.Edit;//编辑DBEdit1.SetFocus;end;EndElsebeginAENabled(2);Bitbtn2.Caption:=’添加’;BitBtn3。Caption:='修改’;DataModule1.CPFYXX。Cancel;//取消保存信息end;end;4.3.5菜谱删除设计1.菜谱信息设置删除界面如图4。3.3所示。图4.3.3菜谱信息设置删除界面2.代码如下:procedureTCPXXSZ.BitBtn4Click(Sender:TObject);beginDataModule1.CPFYXX。Refresh;IfDataModule1。CPFYXX.RecordCount=1ThenbeginShowMessage(’对不起,这是最后一个菜,不能删除.');EndElseifMessageDLG('确认删除指定的菜谱信息吗?’,mtCustom,[mbYes,mbNO],0)=mrYesthenbeginDataModule1。CPFYXX。Delete;//删除数据end;end;5.状态编辑与浏览状态函数functionAEnabled(key:integer):Boolean;//定义状态编辑与浏览状态函数beginIfkey=1Then//编辑状态beginCPXXSZ.BitBtn4。Enabled:=False;//“删除“按钮不可用CPXXSZ.BitBtn5.Enabled:=False;//“退出“按钮不可用CPXXSZ。BitBtn1.Enabled:=False;//“查询“按钮不可用CPXXSZ.Edit1。Enabled:=False;//查询输入框不可用CPXXSZ.DBGrid1.Enabled:=False;CPXXSZ。GroupBox1.Visible:=True;EndElse//浏览状态beginCPXXSZ.BitBtn4.Enabled:=True;//“删除“按钮可用CPXXSZ。BitBtn5.Enabled:=True;//“退出“按钮可用CPXXSZ.BitBtn1。Enabled:=True;//“查询“按钮可用CPXXSZ.Edit1.Enabled:=True;CPXXSZ。DBGrid1.Enabled:=True;CPXXSZ.GroupBox1.Visible:=False;end;end;4。4系统开台管理设计1。实现目标程序启动后,调用菜单“前台管理"下的“开台管理”项,将打开“开台管理”界面。系统开台管理界面主要功能:=1\*GB2⑴以图标模式显示空台、营业台,点击台号图标则自动显示相应台号信息.=2\*GB2⑵通过输入台号检索符合条件的台号。=3\*GB2⑶点击空房自动弹出与昂查询窗口从而自动开台。2。实现过程(1)添加新窗体,设置窗体名为ktgl,设置窗体caption为“开台管理”,保存为u79ktgl。pas.(2)向窗体中添加datasource、query、groupbox、panel、pagecontrol、dbgrid、dbedit、edit、dbtext、bitbtn、dblookupcombobox、image、label等控件,主要控件属性如表4-3-1所示。表4-3-1主要控件属性控件名属性值功能打他搜如厕DatasetQuery设置数据源DBLookupComBox1ListsourceKeyfieldListfieldDatabase1。cybmbs部门名称部门名称选择餐饮部门Dbgrid1datasourceDatabase1.thxxs显示台号信息4.4。1搜索台号设计1.开台管理搜索台号界面如图4.4—1所示。图4.4-1开台管理搜索台号界面2.代码如下:procedureTKTGL。BitBtn1Click(Sender:TObject);//搜索房台varList:TListItem;Lists:integer;ListText:String;a,b,c:integer;d:String;beginIfLength(Edit1.Text)=0ThenbeginShowMessage('请输入查询的[房台编号或房台名称]信息');Edit1.SetFocus;EndElsebegina:=Length(Edit1.Text);c:=0;forb:=1toadobeginD:=COPY(edit1.text,b,1);if(D='0’)or(D<='9')thenbeginc:=c+1;end;end;Ifc=Length(Edit1.Text)ThenbeginifDataModule1.THXX。Locate(’编号',StrTOInt(Edit1.Text),[loCaseInsensitive])thenbeginifDataModule1.THXX.FieldByName('状态’).AsString〈〉'空闲'thenbeginPageControl1.ActivePageIndex:=1;//显示第二页BitBtn6。SetFocus;//将焦点移到点菜服务按扭上EndElsebeginPageControl1.ActivePageIndex:=0;//显示第一页BitBtn3.SetFocus;//将焦点移到开台设置按扭上end;EndElsebeginShowMessage('对不起,没有找到。');end;EndElsebeginifDataModule1.THXX.Locate('房台名称',Edit1。Text,[loPartialKey])thenbeginifDataModule1。THXX.FieldByName('状态’)。AsString<〉'空闲’thenbeginPageControl1.ActivePageIndex:=1;//显示第二页BitBtn6.SetFocus;//将焦点移到点菜服务按扭上EndElsebeginPageControl1。ActivePageIndex:=0;//显示第一页BitBtn3。SetFocus;//将焦点移到开台设置按扭上end;EndElsebeginShowMessage('对不起,没有找到。');end;end;end;end;4.4.2开台设置设计1.开台管理开台设置界面如图4。4.2所示。图4。4.2开台管理开台设置界面2.代码如下:procedureTYGCX.BitBtn1Click(Sender:TObject);beginGB:=2;IfLength(Edit1.Text)=0ThenbeginShowMessage('请输入员工编号’);Edit1.Setfocus;EndElseifDataModule1。YGXXB.Locate('员工编号',StrToInt(Edit1。Text),[loCaseInsensitive])thenbeginIfnotAssigned(DCFY_LR)ThenbeginDCFY_LR:=TDCFY_LR.Create(Self);DCFY_LR.Label14。Caption:=YGCX.Edit1.Text;DCFY_LR.Label15.Caption:=DataModule1.YGXXB.FieldByName(’姓名').AsSTring;DCFY_LR.Label16.Caption:=DateTimeToStr(Now);IfDataModule1.JZBH。RecordCount=0ThenbeginDataModule1。JZBH.Append;DataModule1。JZBH.FieldByName('编号').AsInteger:=1;DataModule1.JZBH.Post;EndElseDCFY_LR。Label17.Caption:=IntToStr(DataModule1.JZBH.FieldbyName('编号').AsInteger+1);DCFY_LR.Show;end;GB:=1;YGCX。Close;EndElsebeginShowMessage('对不起,没有找到此员工信息.');Edit1。Setfocus;end;end;4.4.3台号信息查询的设计1.开台管理台号信息查询界面如图4.4.3所示。图4.4。3开台管理台号信息查询界面2.代码如下:procedureTKTGL。ListView2Click(Sender:TObject);//选择房台varlist:TListItem;ListString:String;beginList:=TlistView(Sender)。Selected;IfList〈>nilThenbeginListString:=List。Caption;IfLength(ListString)<〉0ThenifDataModule1.THXX.Locate('房台名称',ListString,[loPartialKey])thenbeginQuery1。Close;query1。sql。clear;query1。sql.add('select编号,名称,类型,单位,数量,价格,合计,状态,服务员姓名from点菜临时表');query1.sql。add('where房间台号=:aand是否结单=:b');Query1.Params[0].AsInteger:=DataModule1.THXX.FieldByName('编号’)。AsInteger;Query1。Params[1].AsString:='否’;Query1.Open;Query2.Close;Query2。SQL。Clear;Query2.SQL.Add(’SelectSum(合计)From点菜临时表’);Query2。SQL。Add(’Where房间台号=:Aand是否结单=:B');Query2。Params[0].AsInteger:=DataModule1。THXX.FieldByName('编号')。AsInteger;Query2.Params[1]。AsString:='否’;Query2.Open;IfQuery1.RecordCount〈>0ThenbeginQuery1.last;Label13。Caption:=Query1.FieldByName('服务员姓名’).AsString;Label15。Caption:=FloatToStr(Query2.Fields[0].AsFloat+DataModule1.THXX.FieldByName('服务费’)。AsFloat);EndElsebeginLabel13。Caption:='’;Label15。Caption:='';end;end;end;end;4。4。4房台列表显示函数的设计functionADDListView:Boolean;//定义房台列表显示函数beginDataModule1。thxx.RefResh;KTGL.Listview1.Items.Clear;DataModule1.thxx.Filter:=Format('状态'+'='+''’%S’'',['空闲']);DataModule1。THXX。Filtered:=True;WhilenotDataModule1.THXX.EofdobeginKTGL。ListView1。Items。Add.Caption:=DataModule1。thxx。fieldbyname('房台名称’)。asstring;DataModule1.THXX.Next;end;KTGL.Label1.Caption:='空闲总数:’+IntToStr(DataModule1.THXX。RecordCount);KTGL。Listview2.Items.Clear;DataModule1.THXX。Filter:=Format('状态’+'<〉'+'’'%S''',['空闲']);//’’'状态''’+'<>'+’'’空闲’'';DataModule1。THXX。Filtered:=True;WhilenotDataModule1.THXX.EofdobeginKTGL.ListView2。Items.Add。Caption:=DataModule1。THXX。FieldByName('房台名称').AsString;DataModule1。THXX.Next;end;KTGL.Label11.Caption:='营业总数:'+IntToStr(DataModule1。THXX.RecordCount);DataModule1。THXX。Filtered:=False;end;4.5点菜管理模块1.实现目标系统点菜界面主要功能:=1\*GB2⑴实现菜谱,酒水查询的链接。=2\*GB2⑵点击“开始点菜”按钮台号状态自动变为开台,并聚焦到编号栏.=3\*GB2⑶在编号栏输入菜编号按回车自动录入菜的信息,。=4\*GB2⑷自动生成结账编号,输入菜数量自动计算合计消费金额。=5\*GB2⑸可实现挂单、读单、放弃开台和点菜完毕返回的功能。4.5。1客户点菜设计1.客户点菜界面如图4。5。1所示。图4。5.1客户点菜界面2.代码如下:procedureTDCFY_LR。BitBtn1Click(Sender:TObject);beginsum:=0;Query1。Open;//打开库存水酒记录DataModule1。THXX.Edit;DataModule1。THXX.FieldByName('状态').AsString:='开台';DataModule1.THXX。Post;DCGrid.Enabled:=True;BitBtn4。Enabled:=True;BitBtn5。Enabled:=True;DCGrid。SetFocus;end;4。5.2客户放弃开台设计1.客户放弃开台后返回界面如图4。5。2所示。图4。5.2客户放弃开台后返回界面2.代码如下:procedureTDCFY_LR.BitBtn3Click(Sender:TObject);beginDataModule1.THXX.Edit;//编辑房台DataModule1。THXX.FieldByName('状态’).AsString:='空闲';//将房台改为空闲DataModule1.THXX.Post;//保存编辑DataModule1.JZBH.Edit;//编辑结账编号DataModule1。JZBH。FieldByName(’编号').AsInteger:=DataModule1。JZBH.FieldByName(’编号’).AsInteger-1;DataModule1。JZBH.Post;//保存编辑ktkey:=3;//放弃开台Close;end;4。5.3客户点菜完毕返回设计1.客户点菜完毕返回后界面如图4.5.3所示。图4。5.3客户点菜完毕返回后界面2.代码如下:procedureTDCFY_LR.BitBtn2Click(Sender:TObject);beginDataModule1.JZBH.Edit;//编辑结账编号DataModule1。JZBH.FieldByName(’编号').AsInteger:=DataModule1.JZBH.FieldByName('编号’)。AsInteger+1;DataModule1。JZBH。Post;//保存编辑ktKey:=2;//确定返回close;end;4。5.4DCFY_LR的FormShow事件procedureTDCFY_LR.FormShow(Sender:TObject);vara,b,c:integer;beginDCGrid.Cells[1,0]:=’编号’;DCGrid.Cells[2,0]:='名称';DCGrid。Cells[3,0]:=’类型';DCGrid。Cells[4,0]:=’单位';DCGrid.Cells[5,0]:='数量';DCGrid.Cells[6,0]:=’价格’;DCGrid.Cells[7,0]:='状态’;DCGrid。Cells[8,0]:=’合计';fora:=1toDCGrid.RowCount-1dobeginDCGrid.Cells[0,a]:=intToStr(a);end;end;4.5.5DCFY_LR的FormCloseQuery事件procedureTDCFY_LR。FormCloseQuery(Sender:TObject;varCanClose:Boolean);vara:integer;b:integer;beginIfktKey=3Then//放弃开台beginEndElseIfktKey=2Then//确定返回beginifLength(DCGrid.Cells[1,1])=0then//如果首单元格为空beginShowMessage(’对不起,没有点菜是无法开台营业的。');Abort;EndElsebeginfora:=1to51dobeginifLength(DCGrid。Cells[1,a])=0then//如果该行首单元格为空beginb:=a;Break;//结束循环EndElsebeginifLength(DCGrid.Cells[2,a])=0then//如果该行第二单元格为空beginShowMessage(’数据有误,请修改.');DCGrid.Col:=2;DCGrid.Row:=a;DCGrid.SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid。Cells[3,a])=0then//如果该行第三单元格为空beginShowMessage(’数据有误,请修改。');DCGrid。Col:=3;DCGrid.Row:=a;DCGrid.SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid.Cells[4,a])=0then//如果该行第四单元格为空beginShowMessage('数据有误,请修改.');DCGrid.Col:=4;DCGrid.Row:=a;DCGrid.SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid.Cells[5,a])=0then//如果该行第五单元格为空beginShowMessage('数据有误,请修改。’);DCGrid.Col:=5;DCGrid.Row:=a;DCGrid.SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid.Cells[6,a])=0then//如果该行第六单元格为空beginShowMessage('数据有误,请修改。');DCGrid.Col:=6;DCGrid。Row:=a;DCGrid.SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid。Cells[7,a])=0then//如果该行第七单元格为空beginShowMessage(’数据有误,请修改。’);DCGrid.Col:=7;DCGrid。Row:=a;DCGrid。SetFocus;//光标移到该单元格Abort;end;ifLength(DCGrid.Cells[8,a])=0then//如果该行第八单元格为空beginShowMessage(’数据有误,请修改。');DCGrid。Col:=8;DCGrid.Row:=a;DCGrid。SetFocus;//光标移到该单元格Abort;end;end;end;Query2.Close;Query2。SQL.Clear;Query2.SQL。Add('Insert点菜临时表(房间台号,编号,名称,类型,单位,数量,价格,合计,服务员编号,服务员姓名,状态,点单日期,结帐编号,是否结单)’);Query2.SQl.Add('Values(:房间台号,:编号,:名称,:类型,:单位,:数量,:价格,:合计,:服务员编号,:服务员名称,:状态,:点单日期,:结帐编号,:是否结单)’);Fora:=1tob-1dobegin//将点菜信息保存到点菜临时表Query2.Params[0]。AsInteger:=StrToInt(DataModule1.THXX.FieldByName('编号').AsString);Query2.Params[1].AsInteger:=StrToInt(DCGrid。Cells[1,a]);Query2。Params[2].AsString:=DCGrid。Cells[2,a];Query2.Params[3]。AsString:=DCGrid.Cells[3,a];Query2.Params[4]。AsString:=DCGrid.Cells[4,a];Query2。Params[5].AsInteger:=StrToInt(DCGrid.Cells[5,a]);Query2。Params[6].AsFloat:=StrToFloat(DCGrid.Cells[6,a]);Query2。Params[7].AsFloat:=StrToFloat(DCGrid。Cells[8,a]);Query2。Params[8].AsInteger:=DataModule1.YGXXB.FieldByName('员工编号').AsInteger;Query2.Params[9].AsString:=DataModule1。YGXXB.FieldByName(’姓名')。AsString;Query2.Params[10].AsString:=DCGrid.Cells[7,a];Query2。Params[11].AsDateTime:=StrToDateTime(Label16。Caption);Query2.Params[12].AsInteger:=StrToInt(Label17.Caption);Query2.Params[13].Asstring:='否’;Query2.ExecSQL;end;DataModule1.THXX.Edit;//编辑房台信息DataModule1。THXX.FieldByName('状态’).AsString:='营业’;DataModule1.THXX.Post;//保存该房台为营业end;//结束判断点菜的信息是否为空.EndElseAbort;end;4.5.6DCFY_LR的DCGridKeyPress事件procedureTDCFY_LR.DCGridKeyPress(Sender:TObject;varKey:Char);varzjje:Real;aa:integer;beginX:=DCGrid。Row;Y:=DCGrid。Col;ifkey=#13then//回车beginIfDCGrid.Col=8Then//当光标移到表格第八列时计算消费合计beginzjje:=0;foraa:=1to51dobeginifLength(DCGrid。Cells[8,aa])〈>0thenbeginifDCGrid。Cells[7,aa]〈>’赠单'thenbeginzjje:=StrToFloat(DCGrid.Cells[8,aa])+zjje;//计算总计消费Label14.Caption:=FloatToStr(zjje);EndElsebeginLabel14.Caption:=FloatToStr(zjje);end;EndElseBreak;//结束循环end;end;IfDCGrid.Col=5ThenbeginifLength(DCGrid.Cells[1,X])<>0thenbeginifStrToInt(DCGrid.Cells[5,X])=0then//输入数量为零beginShowMessage('数量不正确');Exit;EndElsebeginTryDCGrid。Cells[8,X]:=IntToStr(Round(StrToint(DCGrid.Cells[5,X])*StrToFloat(DCGrid。Cells[6,X])));//计算金额ExceptEnd;DCGrid.Col:=7;end;end;ifLength(DCGrid。Cells[1,x])〈〉0thenifStrToInt(Copy(DCGrid。Cells[1,x],0,1))=1thenbeginifPJ[DCGrid.row]-StrToInt(DCGrid.Cells[5,x])〈=0then//超出库存beginShowMessage('库存不足');end;end;end;IfDCGrid.Col=1Then//光标在第一列时ifLength(DCGrid.Cells[1,x])〈>0thenbegincaseStrToInt(Copy(DCGrid。Cells[1,x],0,1))of//copy:获取指定数量的字符串1:begin//首字符为1点酒水ifDataModule1.JSFYXX.Locate('编号',DCGrid。Cells[1,x],[locaseInsensitive])thenbeginifquery1。Locate('编号’,DataModule1.JSFYXX.FieldByName('
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际结算流动资金贷款合同样本
- 鞋类定制加工合同范本
- 农村集体土地承包合同版
- 试验检测技术服务合同模板
- 电力调度合同协议
- 化工原料采购合同格式范本
- 新建住房分期付款合同
- 甲乙丙三方租赁合同补充协议
- 搬家行业安全生产与事故预防考核试卷
- 危险品仓储安全操作规程优化考核试卷
- 2024年义务教师考试招聘考试试题及答案
- 无人机红外技术培训
- 2024中考英语1500词汇默写汇总表练习(含答案)
- 2024届高三英语作文复习写作专项读后续写:帮我修车的墨西哥一家人(人性之光)任务单学案
- 2022年四川省绵阳市中考语文真题
- 麦琪的礼物全面英文详细介绍
- 使用智能手机教程文档
- 银行前端工作总结
- 初中数学代数式
- 数字资产培训课件
- 2023年山东枣庄滕州市鲁南高科技化工园区管理委员会招聘10人笔试参考题库(共500题)答案详解版
评论
0/150
提交评论