1、南京审计学院信息科学学院 课程设计报告书 课程名称: 信息系统开发工具课程设计 课题名称: 餐 饮 管 理 系 统 专 业: 信息管理与信息系统 班 级: 08级信息管理1班 学 号: 061415309 姓 名: 孙晓刚 成 绩: 2010年 12月 26 日 目 录 第一章 系统需求分析
2、1 1。1 系统功能需求分析 1 1.2 系统数据流图 1 1。3数据字典 2 第二章 系统概要设计 5 2。1 系统总体框图设计 5 2.2各模块功能分析 .。。。。。。.。。.。。.。5 第三章 数据库设计 7 3。1 系统E—R图设计 7 3.2数据库结构的设计 8 第四章 系统详细设计及实现 11 4.1系统登陆界面设计 11 4.2系统主界面设计 15 4。3菜谱设置模块 19 4.3。1菜谱信息设置设计 19 4。3.2菜谱查询设计 20 4。3。3菜谱添加设计 22 4.3.4菜谱修改设计 24 4.3。5菜谱删除设计 25 4。4开台管
3、理模块 27 4.4.1搜索台号设计 27 4。4.2开台设置设计 30 4.4。3台号信息查询的设计 32 4。4。4房台列表显示函数的设计 34 4。5点菜管理模块 34 4.5.1客户点菜设计 35 4.5.2客户放弃开台设计.。.。。。。。.。。。..。。.。。.。。。.。。.。。。。。。.。..。.。。.。 37 4。5。3客户点菜完毕返回设计。..。。.。.。。.。.。.。。.。.。。。。..。。。。。。。.。。。。。.37 第五章 数据模块的创建与实现.。。。。。。.。.。。。。..。。。。.。。.。。。。。。..。。.。。。。。。45 5。1 数据模块的创建
4、 45 5。2数据模块的实现 46 第六章 系统调试与测试 ..。.。53 6。1 软件功能测试 47 第七章 结论 54 7。1系统开发遇到的问题 54 7.2系统改进方面 54 7.3总结 54 摘要 近几年来,随着我国国民经济的稳定增长,餐饮业的竞争也越来越激励,想在这样竞争激励的环境下生存,就必须运用科学的管理思想与先进的管理方法,使用点餐与管理一体化。这样不仅提高了工作效率,也避免了以前手工作业的麻烦,从而使得管理者能够准确,有效的管理餐饮。因此,餐饮业的管理者更需要一种综合实时的管理模式,希望从更科学的管理中取得竞争的优势,在竞争激烈的商业市场中取胜.结合管理信息
5、系统的开发方法及步骤,以此为理论根据,开发出一个信息管理系统-—餐饮管理系统。它采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成。通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂.具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人为因素的错误,提高服务水平,提升企业形象。 关键字:餐饮管理系统、提高服务水平、提高工作效率 第一章 系统需求分析 1.1系统功能需求分析 随着现在连锁餐饮店的不断崛起,作为餐饮业不可缺少的一部分--餐饮管理系统,它的内容对于餐饮业的决策
6、者和管理者来说都非常重要。本系统基于餐饮管理系统之下的一个子系统,可以把整个餐饮店的日常经营管理信息化,包括点餐、库存管理、员工信息等日常经营的一些统计功能.现在此系统还不够完善,将来使此系统会集成更多的功能,例如:餐饮管理系统的开发成功,实现了餐饮业的现代化,表明了餐饮管理正与国际化接轨,有了更为深入的发展. 《餐软管理系统》采用国际通用的先进餐饮管理模式,并结合中国的管理实际特点开发而成.通过本系统功能模块,可为各种大小不同的餐饮管理所使用。为管理者提供高效的管理手段,本系统有着人性理的设置理念,流程清晰、易懂.具有独特的功能对于开台管理、点菜、菜谱设置等为管理人员带来很大的方便,减少人
7、为因素的错误,提高服务水平,提升企业形象. 根据实际情况的需要,系统主要功能如下: ⑴ 前台管理:开台管理、客户结账、退出系统. ⑵ 系统管理:权限管理、系统管理、帮助。 ⑶ 基础信息管理:酒水信息查询、菜谱信息查询及设置。 1。2 系统数据流图 根据实际情况要求,系统数据流图如图1。2.1所示 图1.2.1数据流图 1.3数据字典 在这定义的酒店餐饮数据字典,主要对数据流程图中的数据流、数据存储和处理过程进行说明。 (1)主要的数据流定义 1)数据流名称:客户信息 位置:客户 P2 定义:客户信息=房间台号+所点菜+酒水+开单时间+服务员编号 数据流量
8、 说明:客人点菜时可以进行特色菜和酒水信息的查询,买单时要核对消费名目是否属实。 2)数据流名称:菜谱信息 位置:菜谱 P2 定义:菜谱信息=编号+房间台号+菜名+单位+价格+菜系类别+口味说明 数据流量: 说明:编号不能有重复的。 3)数据流名称:桌台状况 位置:桌台 P1 定义:桌台状况=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态 数据流量: 说明:只有状态为空闲的房台才能开台。 4)数据流名称:开台人 位置:服务员 P1 定义:开台人=编号+姓名+员工类别+密码 数据流量: 说明:不同的员工类别具有不同的权限,
9、管理员具有所有权限,服务员不具备系统维修等权限。 5)数据流名称:员工信息 位置:P3 P1 定义:员工信息=员工编号+姓名+性别+出生日期+联系电话+联系地址+聘用日期+工作部门+员工类别+身份证号+备注 数据流量: 说明:员工编号不可相同。 6)数据流名称:管理员情况 位置:管理员 P3 定义:管理员=姓名+口令 数据流量:平均流量为每年传输50次。 说明:通过管理员来不断的更新和维护这个系统。 7 )数据流名称:开台信息 位置:P1 P4 定义:开台信息=房间台号+服务费 数据流量: 说明:服务费可以省去。 8)数据
10、流名称:点菜信息 位置:P2 P4 定义:点菜信息=房间台号+类别+编号+名称+类型+数量+价格+合计+点但日期+结单日期+服务员编号+服务员姓名+结帐编号 数据流量: 说明:房间台号是根据开台而来的。 (2)主要的数据存储定义 1)数据存储编号:D1 数据存储名称:桌台信息 输入:P1 输出:P2 数据结构:桌台信息=编号+房台名称+类型说+餐饮部门+服务费+简要说明+状态 存取方式:检索和更新处理,以检索为主。 说明:编号具有唯一性,状态只能是空闲或者营业。 2)数据存储编号:D2 数据存储名称:员工信息 输入:P1 输出:P3 数
11、据结构:员工信息=员工类别+口令 存取方式:主要是检索. 说明:根据员工类别的不同,在后面的操作中具有不同的权限. 3)数据存储编号:D3 数据存储名称:菜谱信息 输入:P2 输出:P2 数据结构:菜谱信息=菜名+单位+价格+菜系类别+口味说明 存取方式:检索 说明:在点菜时对菜谱进行查询。 (3)主要处理过程 1)处理过程编号:P1 处理过程名:开台 输入:服务员权限,桌台状况 输出:开台信息 处理说明:综合各方面信息,进行客人消费前最基本的准备。 2)处理过程编号:P2 处理过程名:点菜 输入:D1,D3,D4
12、 输出:点菜信息 处理说明:客人根据菜谱信息,酒水信息,特色菜信息,选择自己中意的项目进行。 3)处理过程编号:P3 处理过程名:权限管理 输入:员工类型,口令 输出:相应的操作权限 处理说明:输入员工类别和口令获得相应的操作权限,管理员比服务员具有更多的操作权限。 第二章 系统概要设计 2。1系统总体框架设计 根据业务情况,该系统共分为开台管理、客人买单、菜谱信息设置、客户点菜、酒水信息设置等模块,系统结构图如图2.1所示。 图2。1 餐饮管理系统结构图 2.2各模块功能分析 (1)系统登录窗口主要功能: 1)以图标形式
13、显示数据库中操作员,并凭口令登入到主界面。 2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统. 3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。 (2)系统主界面主要功能 1)根据操作员权限设置相应权限的菜单和工具栏功能. 2)可通过菜单或快捷键进入相应子界面。 3)显示了系统当前时间和相应操作员。 (3)系统菜谱信息设置界面主要功能: 实现对菜谱信息的添加、修改、删除、查询的功能。 (4)系统开台管理界面主要功能: 1)以图标模式显示空台、营业台,点击台号图标则自动显示相应台号信息。 2)通过输入台号检索符合条件的台号. 3)
14、点击空房自动弹出与昂查询窗口从而自动开台. (5)系统点菜界面主要功能: 1)实现菜谱,酒水查询的链接。 2)点击“开始点菜”按钮台号状态自动变为开台,并聚焦到编号栏。 3)在编号栏输入菜编号按回车自动录入菜的信息,。 4)自动生成结账编号,输入菜数量自动计算合计消费金额。 5)可实现挂单、读单、放弃开台和点菜完毕返回的功能。 第三章 数据库设计 3。1系统E-R图的设计 系统E—R图如图3。1所示 图3.1 系统E-R图 3。2数据库结构设计 数据库结构设计是总体设计阶段非常重要的环节,好的数据库结构可以简化开发过程,使系统功能更加清晰明确。因为数据库结构的变化会造成
15、编码的改动,所以必须认真设计数据库后再进行编码,从而避免了无谓的重复的工作。 本系统采用了SQL Server数据库,数据库名称为060412079。该数据库包含4个表,分别是:开台表,点菜表,菜谱费用信息表,台号信息表。下面分别介绍数据表的结构。 1、 开台表 开台表用于保存开台的相关信息.开台表的结构见表3—2—1所示。 表3—2—1 开台表结构 字段名称 数据类型 字段大小 允许为空否 编号 int 4 设置为主键 房台名称 char 30 允许为空 类型说明 char 20 允许为空 餐饮部门 char 20 允许为空 服务费 mon
16、ey 8 允许为空 简要说明 char 30 允许为空 状态 char 20 允许为空 2、 点菜表 点菜表用于保存点菜信息和相应的消费信息。点菜表的结构见表3—2—2所示. 表3-2—2 点菜表结构 字段名称 数据类型 字段大小 是否允许为空 id char 16 设置为主键 房间台号 int 4 允许为空 类别 Char 10 允许为空 编号 int 4 允许为空 名称 char 50 允许为空 类型 char 20 允许为空 单位 char 10 允许为空 数量 int 4 允许为空 价
17、格 money 8 允许为空 合计 Money 8 允许为空 点单日期 datetime 8 允许为空 结单日期 datetime 8 允许为空 服务员编号 int 8 允许为空 服务员姓名 char 12 允许为空 状态 char 10 允许为空 结账编号 int 4 允许为空 是否结单 char 10 允许为空 3、菜谱费用信息表用于查询餐饮店所有的菜的信息。菜谱费用信息表的结构如图3—2-3所示. 表3—2—3 菜谱费用信息结构 字段名称 数据类型 字段大小 是否允许为空 编号 int 4 设为主键
18、 菜名 char 50 允许为空 单位 char 10 允许为空 价格 money 8 允许为空 菜系类别 char 20 允许为空 口味说明 char 30 允许为空 4、台号信息表用于台号信息的查询,方便了消费者选台,开台及其他的作用。台号信息表的结构如图3—2-4示。 表3-2—4台号信息表结构 字段名称 数据类型 字段大小 是否允许为空 编号 int 4 设为主键 房台名称 char 30 设为主键 类型说明 Char 20 允许为空 餐饮部门 Char 20 允许为空 服务费 money 8
19、 允许为空 简要说明 char 30 允许为空 状态 char 10 允许为空 容纳人数 Int 4 允许为空 第四章 系统详细设计及实现 4。1系统登陆界面设计 1.实现目标 程序启动后,首先登陆此界面验证操作员的密码。主要实现的功能如下: 1)以图标形式显示数据库中操作员,并凭口令登入到主界面. 2)操作员输入错误密码提醒错误并返回,三次输入错误口令则退出系统。 3)实现权限登录:系统管理员拥有一切权利,其他操作员则被限制一些操作权限。 系统登录界面如图4。1.1所示。 图4.1。1 系统登录界面 2。实现过程 (1)添加窗体设置窗体
20、caption属性为“登录窗口”,保存窗体为u79in。pas。 (2)向窗体中添加Datasource、Query、Edit、Listview、ImageList、Image、Time、Label等控件。主要控件对象的属性如表4-2—1所示。 表4—2-1主要控件对象的属性列表 控件名 属性 值 功能 Query1 Databasename SQL 060412079 Select * from 员工信表 权限查询 Database1 Dataset Query1 设置数据源 3。程序主要代码如下: ①单击“登陆"按钮,将判断操作员、操作密码
21、是否正确,如果正确进入主界面并根据操作员权限设置菜单和工具是否可用。如果输入密码错误将提醒并返回,三次错误输入则自动退出系统。 procedure TUser。BitBtn1Click(Sender: TObject); begin MainForm.ToolButton1。Enabled:=True; MainForm.ToolButton2。Enabled:=True; MainForm。ToolButton5。Enabled:=True; MainForm.ToolButton6。Enabled:=True; MainForm.N1.Enabled:=T
22、rue; 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.N1
23、9。Enabled:=True; if Query1。FieldByName(’编号').AsString=’controller' then //如果是系统管理员 begin if Edit1.Text<>Query1.FieldByName(’密码')。AsString then begin ShowMessage('[’+Query1.FieldByName('姓名’)。AsString+’]的口令错误。'); //口令错误 Edit1。SetFocus; End Else begin MainForm.Statu
24、sBar1。Panels[1]。Text:=’用户[’+Query1。FieldByName('姓名')。AsString+’]’; MainForm。User1:=Query1。FieldByName('姓名’).AsString; User_Close:=3; Timer1.Enabled:=False; Close; end; End Else begin MainForm。ToolButton1。Enabled:=False; MainForm。ToolButton2。Enabled:=False;
25、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; Mai
26、nForm。N9。Enabled:=False; MainForm。N17.Enabled:=False; MainForm。N19.Enabled:=False; if Edit1。Text<>Query1。FieldByName(’密码’).AsString then begin ShowMessage('['+Query1。FieldByName(’姓名’)。AsString+’]的口令错误。’); Edit1。SetFocus; End Else begin Name:=Query1.Fie
27、ldByName(’权限’)。AsString; MainForm.EnabledKey(Name); //设置操作员权限 MainForm。StatusBar1.Panels[1].Text:=’用户['+Query1。FieldByName('姓名’).AsString+']’; User_Close:=3; Timer1.Enabled:=False; Close; end; end; END; ②窗体启动,关闭钥匙,后将所有操作员添加到操作员列表. procedure TUser.FormSh
28、ow(Sender: TObject); var List:Array[0。.1]of TListItem; begin Timer1。Enabled:=True; User_Close:=0; //打开关闭钥匙 Query1。Close; Query1。Open; ListView1。Items.Clear; While not Query1。Eof do begin List[0]:=ListView1。Items.Add; List[0]。Caption:=Query1.FieldByName(’姓名’).AsStrin
29、g; if Query1。FieldByName(’编号’)。AsString=’controller' then begin List[0].ImageIndex:=0; End Else begin List[0]。ImageIndex:=1; end; Query1。Next; end; end; ③选择操作员,点击其中一个则将员工的姓名和类型添加到了相应位置. procedure TUser。ListView1Click(Sender: TObject); var List:
30、Array[0。.1]of TListItem; begin List[0]:=ListView1.Selected; if List[0]〈〉Nil then begin Query1.Locate(’姓名’,List[0].Caption,[loCaseInsensitive]); //查询姓名,但是如果有从名的按第一个算。 end; end; 4.2主界面设计 1、程序启动后。系统在“登陆界面"验证操作员密码后,将进入此界面。系统主界面主要功能: ⑴根据操作员权限设置相应权限的菜单和工具栏功能. ⑵可通过菜单或快捷键进入相应子界面。 ⑶显示
31、了系统当前时间和相应操作员。 主程序界面如图4。2。1所示。 图4。2。1主程序界面 2。实现过程 (1)启动Delphi,设置窗体名为mainfrom,设置窗体caption 为“餐饮管理系统",保存为u791.pas。 (2)向窗体中添加Imagelist、mainmenu、image、toolbutton、stausbar、panel、time、label等控件主要属性为: 控件名 属性 值 功能 Toolbar1 images Imagelist1 设置工具栏图标 stausbar 1 Panel1 用户登录【管理员】 显示程序状态、参数
32、 (3)主要程序代码如下: ①使应用项目的提示信息挂钩程序。 procedure TMainForm。FormCreate(Sender: TObject); begin Application.OnHint:=DisPlayHint; //与应用项目的提示信息挂钩 end; ②先调用系统登陆窗口,再设置窗体状态参数程序。 procedure TMainForm。FormShow(Sender: TObject); var Year,Month,Day: Word; begin Close_1:=1; User。ShowModal; //调用系统登陆窗口
33、If Close_1 = 0 Then Close Else begin Application。MainForm。WindowState:=wsMaximized; Application。MainForm.WindowState:=wsNormal; DecodeDate(StrToDate(DateTOStr(Date)),Year,Month,day); //分解日期 StatusBar1。Panels[2]。Text:='系统日期:’+IntToStr(Year)+'年'+IntToStr(Month)+'月’+IntToStr(day)+’日’
34、 end; end; ③调入开台界面程序. procedure TMainForm。N8Click(Sender: TObject); begin If Assigned(KTGL) Then begin DataModule1.THXX。Open;//打开台号信息表 DataModule1.cybmb.Open;// 打开餐饮部门表 DataModule1.JZBH.Open;//打开结帐编号表 KTGL:=TKTGL。Create(Self); KTGL。ShowModal; end; end; ④设置“B”类权限有系统管理和系统维护操作权,“A”类权限
35、即系统管理员的操作享有一切操作权限。如图4。2。2所示。 图4。2.2 B类权限主程序界面 代码如下: Function TMainForm。EnabledKey(key:String):Boolean;//声明操作权限函数 EnabledKey begin if Pos('A’,key)〉0 then //具有”A"类权限 begin MainForm。ToolButton1。Enabled:=True; MainForm。ToolButton2。Enabled:=True; MainForm。ToolButton5.Enabled:=True;
36、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; End Else if Pos(
37、'B',key)〉0 then //具有”B”类权限 begin MainForm。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:=Tr
38、ue; MainForm。N3。Enabled:=True; MainForm.N8。Enabled:=True; MainForm.N9。Enabled:=True; MainForm.N17。Enabled:=True; MainForm.N19.Enabled:=True; End; end; ⑤调入菜谱信息设置界面程序。 procedure TMainForm.N6Click(Sender: TObject); begin If Assigned(CPXXSZ) Then begin DataModule1.CPFYXX.Ope
39、n;//打开菜谱费用信息表 DataModule1.cxlbxx。open;//打开菜系类别信息表 CPXXSZ:=TCPXXSZ。Create(Self); CPXXSZ。ShowModal; end; end; 4.3菜谱信息设置界面设计 4.3。1菜谱设置模块 1。实现目标 程序启动后,调用菜单“基础信息设置”下的“菜谱信息设置”项,将打开“菜谱信息设置界面".系统菜谱信息设置界面主要功能:实现对菜谱信息的添加、修改、删除、查询的功能。 2.实现过程 (1)添加新窗体,设置窗体名为cpxxsz,设置窗体caption 为“菜谱信息设置”,保存为u7
40、9cpset。pas。 (2)向窗体中添加query、panel、groupbox、dbgrid、dbedit、edit、dbtext、bitbtn、dblookupcombobox、time、datasetfrist、actionlist、label等控件,主要控件属性如表4—3—1所示。 表4-3-1主要控件属性 对象 属性 值 功能 Query1 Databasename sql 060412079 Slect MAX(编号) from 菜谱信息费用表 设置数据范围 DatasetFrist1 Datasource Caption Hint Data
41、base1。cpxxfys 首记录 移动到第一条记录 移动到首记录 DatasetLast1 Datasource Caption Hint Database1.cpxxfys 尾记录 移动到最后一条记录 移动到尾记录 DatasetNext1 Datasource Caption Hint Database1。cpxxfys 下一条记录 移动到下一条记录 移动到下一条记录 DatasetPrior1 Datasource Caption Hint Database1。cpxxfys 上一条记录 移动到上一条记录 移动到上一条记录 DBL
42、ookupComBox1 Listsource Keyfield Listfield Datasource Dtafirld Database1。cpfyxxs 菜系名称 菜系名称 Database1。cxlbxxs 菜系类别 选择菜系类别 4。3。2菜谱查询设计 1.菜谱信息设置查询界面如图4.3。1所示。 图4.3。1菜谱信息查询设置界面 2。代码如下: procedure TCPXXSZ。BitBtn1Click(Sender: TObject); var a,b,c:integer; d:String; begin If Length(Edit
43、1。Text) = 0 Then //如果输入查询信息为空 begin ShowMessage(’请输入查询的[编号或菜名]信息'); Edit1。SetFocus; End Else begin a:=Length(Edit1.Text); c:=0; for b:=1 to a do //for语句用于判断查询是按菜谱编号还是按菜名查询 begin D:=COPY(edit1。text,b,1); if (D=’0’) or (D〈=’9’) then begin
44、 c:=c+1; end; end; If c = Length(Edit1.Text) Then //按菜谱编号查询 begin if DataModule1。CPFYXX.Locate(’编号’,StrTOInt(Edit1。Text),[loCaseInsensitive]) then begin DBGrid1。Setfocus; DBGrid1。SelectedIndex:=0; End Else begin ShowMessage(’对不起,没有找到。')
45、 Edit1。setfocus; end; End Else //按菜谱编号查询 begin if DataModule1。CPFYXX。Locate(’菜名',Edit1.Text,[loPartialKey]) then begin DBGrid1。Setfocus; DBGrid1.SelectedIndex:=1; End Else begin ShowMessage('对不起,没有找到。'); Edit1。setfocus;
46、 end; end; end; end; 4.3。3菜谱添加设计 1.菜谱信息设置添加界面如图4。3。2所示。 图4.3.2菜谱信息添加设置界面 2.代码如下: procedure TCPXXSZ。BitBtn2Click(Sender: TObject); var a:integer; begin Query1.Close; Query1.Open; if Query1。RecordCount<〉0 then a:=Query1.Fields[0]。AsInteger else a:=1; if Bitbtn2。Caption=’添
47、加’ then //添加菜谱信息 begin DataModule1。CPFYXX。Refresh; If DataModule1。CPFYXX。RecordCount = 0 Then A:=79000 //添加菜谱信息 Else begin DataModule1。CPFYXX。Last; a:=DataModule1。CPFYXX。FieldByName(’编号’)。AsInteger; end; BitBtn2.Caption:=’保存'; BitBtn3。CaPtion:='取消’; Aenabled(
48、1); DataModule1。CPFYXX.Insert; DataModule1。CPFYXX。FieldByName('编号')。AsInteger:=a+1; DataModule1.CPFYXX。FieldByName(’菜系类别')。AsString:=DataModule1。CXLBXX.FieldByName('菜系名称').AsString; DBEdit2。SetFocus; End Else //保存菜谱信息 begin if (Length(DataModule1。CPFYXX。FieldByname('菜名’).A
49、sString)=0) or (Length(DataModule1。CPFYXX。FieldByname(’单位')。AsString)=0) or (Length(DataModule1.CPFYXX。FieldByname('价格’)。AsString)=0) then begin ShowMessage(’请将[菜名、单位、价格]的数据添全。'); DBEdit1.SetFocus; End Else begin AEnabled(2); BitBtn2。Caption:=’添加’; BitBtn3。Captio
50、n:=’修改’; DataModule1.CPFYXX。Post; //保存菜谱信息 end; end; end; 4。3。4菜谱修改设计 1.菜谱信息设置修改界面如图4。3。3所示。 图4.3.3菜谱信息设置修改界面 2。代码如下: procedure TCPXXSZ。BitBtn3Click(Sender: TObject); begin if BitBtn3。Caption=’修改' then begin DataModule1.CPFYXX。Refresh; If DataModule1。CPFYXX。RecordCo






