1、餐 饮 经 营 管 理 系 统 【摘要】 2 一、系 统 概 况 3 1.1:系统任务及特点 3 1.2:主要功能 3 1.3:数据流图 4 二、系统结构设计 6 2.1:系统的主要模块 6 2.2:系统结构总图 7 三、详 细 设 计 12 3.1: 系统主表单 12 3.2:就餐信息录入表单 13 3.3查询信息表单 18 3.4数据维护表单 21 3.5统计报表的设计 24 3.6主菜单的设计 25 四、设 计 体 会 27 五、参 考 文 献 27 【摘要】
2、 本系统是采用面向对象的设计思想进行编制,整个系统由若干表单,报表及一个主菜单组成,由项目管理全部程序的编写和调试,用户在操作中可以通过主菜单调用系统的各项功能。在表单设计方面尽量考虑方便用户,简化操作,绝大部分用户操作只要点即可完成,力求突出系统的便利性,实用性。该 系统应能够方便地实现点菜,预订,修改菜谱,存储等功能,高效地完成各种餐饮经营管理中信息的统计,计算和汇总工作,快速,准确地打印出结帐单,通过日流水帐统计日就餐人数等。 【关键字】Microsoft visual forpro6.0、数据库、查询信息、结帐单、餐饮管理、数据报表
3、 一、系 统 概 况 在设计一个应用系统时,首先应了解用户意图,即用户的目的,要求,充分收集相关信息,以便尽可能找出应用系统所要用到的所有数据项,明确系统应解决的主要问题,为后续的数据库和表单设计打下良好的基础. 1.1:系统任务及特点 A:设计题目 餐饮经营管理系统 B:设计目的 通过对本系统的设计,使得餐饮的是常经营管理工作有着更加方便,简洁,高效的运行环境. C:系统特点 本系统是采用面向对象的设计思想进行编制,整个系统由若干表单,报表及一个主菜单组成,由项目管理全部程序的编写和调试,用户在操作中可以通过主菜单调用系统的各项
4、功能.在表单设计方面尽量考虑方便用户,简化操作,绝大部分用户操作只要点即可完成,力求突出系统的便利性,实用性. 1.2:主要功能 本系统应能够方便地实现点菜,预订,修改菜谱,存储等功能,高效地完成各种餐饮经营管理中信息的统计,计算和汇总工作,快速,准确地打印出结帐单,通过日流水帐统计日就餐人数等.下面详细列出主要功能的要求: 1.2.1、信息录入功能 A:菜谱录入的内容:菜编号,菜名,单价,类别,价格,菜系,主料,样图,菜简介. B:就餐及点菜部分要录入的内容:就餐帐单号,就餐日期,桌号,人数,收银员姓名,点菜份数,金额,合计金额,预订单号,订餐人姓氏,联系电话,订餐标准,数量,日期
5、订餐时段,经手人姓名. 1.2.2、信息存储功能 应能存储满足餐饮管理中业务各方面要的重要信息,如,菜谱,就餐及预订信息. 1.2.3、浏览,查询功能 A:能够浏览全部菜谱内容,还可以按菜系浏览,按主料浏览. B:能够按日期查询营业额,能够按日期查询就餐人数. C:能够按日期查询某类主料销售量. D:能够按日期及就餐时段查询预订单. 1.2.3、统计,输出报表功能 可以统计帐目,打印就餐结帐单,打印日流水帐单. 1.2.4、数据维护功能 应能对已录入的有关信息,如:菜谱,就餐等信息由专职人员执行修改,删除功能. 1.2.5、特殊功能 从系统工程安全方面考虑,在进行系
6、统工程维护操作时必须通过密码检测,以免非法操作造成数据库损失而影响餐饮管理的正常进行。 1.3:数据流图 画数据流图的基本目的是利用它作为交流信息的工具,分析员将他对现有系统的认识或对目标系统的设想用数据流图描绘出来,供有关人员审查确认;数据流图的另一个主要用途是作为分析和设计的工具,它可以帮助分析员实现总结现有系统的目标,甚至对更详细的设计步骤也有帮助.数据流图是描绘系统的逻辑模型.经过对本系统功能的分析综合.得出“餐饮经营管理系统”的数据流图(如下图所示): 二、系统结构设计 基本目的就是用概括的方
7、式确定系统如何完成预订的任务.这一阶段的重要确定系统由哪些模块组成,以及这些模块相互间的关系.到通常,设计出初步的结构后还要多方改进,从而使其更加合理,接下来正割要对数据库进行设计. 2.1:系统的主要模块 从数据流图出发,并遵循模块独立的设计思想,确定系统应具有以下四个模块. 1:就餐管理模块 能够生动形象的实现点菜,可以浏览点菜结果,并计算各项金额.在预订部分中顾客可以选择不同标准的包桌. 2:查询信息模块 不仅可以浏览全部菜谱,还可以分别按菜系,主料进行查询.还能查询日营业额,日就餐人数,某类主料日销售量及预订等情况. 3:各类变更模块
8、可以让用户方便地实现增加菜肴及主食品种,修改,删除菜谱的有关内容,修改删除预订单中的记录.为了增加数据库的安全性,在进行菜谱及预订内容的修改删除等操作时,必须输入有效密码. 4:报表打印模块 顾客结帐时,打印结帐单.根据管理要还可以打印流水帐单. 2.2:系统结构总图 根据已确定的系统主要模块功能,即系统应有录入,增加,修改,删除菜谱中的有关菜肴信息功能.能够按不同方式浏览菜谱.应具有统计日销售额,日就餐人数以及打印结帐单,流水帐单项式的功能.还可以预订包桌.综合以上分析行出系统结构总框架图(下图所示). 2.3:数据库设计 1:确定所要的表 通过研究前一阶段所获
9、得的信息,可将各种信息分成就餐,菜谱,预订三个基本主题,每个主题都建立一个独立的表,所要建立的表应为就餐表,菜谱表,预订表,并用餐菜联表疳就餐及菜谱信息联接起来.另外,为了便于顾客对帐及打印结帐单还创建了刷新表菜谱点;为了保证数据录入的标准化和查询的所求,也为了增加程序设计的灵活性,还建立了种类,菜系,主料,规格共四个静态表. 2:确定各表字段有表间关系 首先分析数据项,分析数据项的目的是找出真正要放入数据表的数据项,即确定数据表中的字段,去除多的字段或加入少的字段.经过对所求分析阶段所获得的数据项的分析,将由其他字段计算得来的存入字段中的金额,合计金额去除.因为将计算字段存入数据表
10、中会造成存储空间的浪费,甚至导致数据的不一致. 由以上分析,得出"餐饮经营管理系统"的各数据表所要的字段. 1:就餐表 此数据表主要用来存储顾客就餐所要的信息,所含这字段为:就餐帐单号,就餐日期,桌呈,人数,收银员姓名.索引字段为:就餐帐单号,索引类型为主索引. 2:菜谱表 此数据表主要用来存储厅经营菜品种的信息,所含这字段为:菜编号,菜名,类别,菜系,单价,主料,图样,菜简介.索引字段为:菜编号,索引类型为主索引. 3:餐菜联表 此数据表是就餐,菜谱联系表.主要是为菜谱与就餐的多对多关系转化为两个一对多关系而建立的.所含字段为:就餐帐单号,菜编号,点菜份数.
11、索引字段为:就餐帐单号,菜编号.索引类型均为普通索引,此数据表通过就餐帐单号与就餐表的就餐帐单项号建立永久关系,通过菜编号与菜谱表的菜编号建立永久关系.表间关系示意图(下图所示) 4:预计表 此数据表主要用来存储顾客预订的信息,所含这字段为:预订单号,姓氏,联系电话,订餐标准,数量,日期,订餐时段,经手人姓名.索引字段为:预订单号,索引类型为主索引。 3、表格设计 根据各表格功能及各字段存储信息形式确定各表结构。 (1) 菜谱.dbf 字段名 类型 长度 小数位数 默认值 标题 cbh C 10 0 菜编号 cm C
12、 10 0 菜 名 dj N 5 0 单 价 lb C 8 0 类 别 gg C 4 0 规 格 cx C 6 0 菜 系 zl C 6 0 主 料 dbz L 1 0 点菜标志 yt G 4 0 图 样 cjj M 4 0 菜简 介 为了查询及分类汇总的需要,采用10位菜编号。10位编码方式说明如下:第1—2位:菜种类,01凉菜 02热菜 03主食 0
13、4酒水 05汤 。第3位:菜系,1川 2谭家 3鲁 4淮汤 0无菜系。第4—5位:主料,01鱼 02虾 03猪 04牛 05羊 06鸭 07鸡 08素 09粮 10水 。第6—7位:规格,01盘 02碗 03瓶 04份 05斤 06听。第8—10位:顺序号。 (2) 就餐.dbf 字 段 名 类 型 长度 小 数 位 数 标 题 jch C 6 0 就餐账单号 rg D 8 0 就 餐 日 期 zh C 3 0 桌 号 rs N 3 0 人
14、 数 syxm C 8 0 收银员姓名 (3)餐菜联.dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 jch C 6 0 就餐账单号 cbh C 10 0 菜 编 号 dcfs N 2 0 点菜份 数 (4)菜谱点.dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 jch C 6 0 就餐账单号 cbh D 8 0 编 号 cm C 3 0 菜 名 dj N 3 0 单
15、 价 dcfs N 2 0 点 菜 dj*dcfs N 8 0 金 额 (5)预订.dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 ybh C 4 0 预 订 单 号 xs C 4 0 姓 氏 ldh C 8 0 联 系 电 话 bz N 3 0 订 餐 标 准 sl N 3 0 数 量 rg D 8 0 日 期 ww C 10 0 订 餐 时 段 ysxm C 8 0 经手人姓名 (6)种类.
16、dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 zlbh C 2 0 种类编号 zlm C 8 0 种类名称 (7)种系.dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 cxbh C 1 0 菜系编号 cxm C 10 0 菜系名称 (8)主料.dbf 字 段 名 类 型 长 度 小 数 位 数 标 题 zh C 1 0 主料编号 zm C 10 0 主料名称 (9)规格.dbf 字 段
17、 名 类 型 长 度 小 数 位 数 标 题 gh C 1 0 规格编号 gm C 10 0 规格名称 4.建立视图 视图来源于建立了永久性关联的三个表,就餐、餐菜联、菜谱,其中的jch、rq字段来源于就餐表.cbh、cm、dj字段来源于餐菜联。另外还利用表达式创建了dj*dcfs字段,即“单价”乘以点菜份数。 视图名:对账单1 字段名 类型 长度 小数位数 默认值 标题 rq C 10 0 日期 jch C 10 0 就餐号 cbh N 5 0 菜编号 c
18、m C 8 0 菜名 dj C 4 0 单价 dcfs C 6 0 份数 dj*dcfs C 6 0 金额 三、详 细 设 计 详细设计阶段的根本目标是确定应该怎样具体地实现系统的各项要求. 本设计主要通过讲述组合动态查询、生动形象的就餐信息录入、数据的维护、报表的生成等表单的制作 3.1: 系统主表单 系统主表单是进入系统后用户所见到的第一个界面,它将会给用户留下较深的印象,所以应尽可能设计得简洁、大方。本系统的主表单(如图12-4所示)就作到了这一点,其中它的“欢迎使用”为动态字
19、幕,由计时器控制它的移动速度,给人以明快的感觉。 其设计步骤如下: ①打开表单设计器,在表单的适当位置设置标签控件和一个计时器控件。设置计时器的基本属性。 ②设置两个命令按钮“继续”和“退出”。 以下为发生各种事件所执行的代码: (1) 件运行(TIMER)事件 if thisform.label2.left<=-thisform.label2.width+20 thisform.label2.left=thisform.width-20 else thisform.label2.left=thisform.label2.left-
20、20 endif (2)“继续”按钮的单击(Click)事件 thisform.release clear do c:\example\3\餐饮管理系统\菜单元.mpr (3)“ 退出”按钮的单击(Click)事件 thisform.release quit 3.2:就餐信息录入表单 就餐信息录入是通过表单“点菜”和“点菜1”共同实现的。它的主要目的是将就餐顾客所点菜的内容录入到就餐表中,以备后续工作中使用界面(下图所示)。 设计思路如下: 表单中的账单号、日期由系统自动生成,左侧列表框的菜名是由组合框
21、而确定的,它是通过“选择菜种类”为条件从“菜谱”表查询到的内容,用户点击左侧列表框的菜名时,系统便将该菜名在“菜谱”表中的标志位置成“T”,点击“选定”按钮时,将用户的选择显示在右侧列表框中。再点击“显示账单”按钮,调用“点菜1”表单。当“点菜1”表单活动时,将“菜谱”表中标志位为“T”的记录的菜编号、菜名和单价字段转入“菜谱点”表中,将“就餐”表中的账单号添加到“菜谱点”表中,并将“菜谱点”表的内容显示于“点菜1”表单中。 设计步骤如下: 1、“点菜”表单、 (1) 在表单中放入五个文本框,用于录入“就餐”表的信息,其中就餐号由系统自动加1,就餐日期利用日期函数实现。 (2
22、 在表单中放入一个组合框,用于显示菜的种类,如,凉菜、热菜、主食等待用户选择。 (3) 在表单中放入两个列表框,用于点菜时进行菜名选择,左侧列表框显示某一种类的菜名,右侧列表框显示已被选择的菜名。 (4) 在表单中放入三个命令按钮,“选定”按钮用于菜名的选择,“显示账单” 以下为“点菜”表单各控件的主要属性设置: (1)表单的属性 Backcolor:234、202、209 Autocenter: .T. Closable: .F. (2)左侧列表框的属性 RowSourceType: 2-别名 以下为发生各种事
23、件所执行的代码: (1) 表单的初始化(INIT)事件 PUBLIC DD DD=SPACE(8) (2) 文本框Text1的失焦(Lostfocus)事件 CLOSE DATABASES PUBLIC c Open DATABASE 餐饮数据 Use 就餐 Select 就餐 GO TOP GO BOTTOM b=recno() APPEND BLANK THISFORM.text1.VALUE=b+1
24、 C=b+1 Replace jch with c (3) 文本框TEXT2的失焦(Lostfocus)事件 THISFORM.text2.value=DATE() D=DATE() REPLACE rq with d (4) 文本框TEXT3的失焦(Lostfocus)事件 e=THISFORM.text3.value REPLACE 就餐.zh with e (5) 文本框TEXT4的失焦(Lostfocus)事件 privat y y=THISFORM
25、Text4.value x=val(y) repl 就餐.rs with x (6) 文本框TEXT6的失焦(LOSTFOCUS)事件 g =THISFORM.text6.value repl 就餐.syxm with g use use 种类1 (7) 组全框combol的单击(click)事件 THISFORM.combol.ROWSOURCE=”种类1.zlm” dd=THISFORM.combol.value sele 菜谱.cm;
26、 FROM 餐饮数据! 工谱; WHERE 菜谱.lb==dd; Into cursor lin 3 THISFORM.list1.ROWSOURCE=”Lin3” THISFORM.list1.REQUERY (8) 列表框list1的单击(click)事件 SELE 菜谱 GO TOP LOCAT FOR ALLTRIM(菜谱).cm=ALLTRIM(THISFORM.list1.value) REPLACE 菜谱.dbz with .t. CONTINU IF EOF()
27、 GO TOP ENFIF USE (9)“显示账单”按钮的单击(CLICK)事件 RELEASE THISFORM DO FORM 点菜1 (10)“选定”按钮的单击(CLICK)事件THISFORM.list2.ADDITEM(THISFORM.list1.list(THISFORM.list1.LISTINDEX) THISFORM.list1.REMOVEITEM(THISFORM.list1.LISTINDEX) 2. “点菜1” 表单 (1) 向表单的数据环境中添加菜谱点.dbf. (2) 在表单中加入一个表格控件,用于显示所点菜
28、的编号、菜名、单价,并由用户输入所点份数。 (3) 在表单中加入两个命令按钮控件:“确认账单”按钮用于用户输入所点菜的份数,之后自动计算出金额:“退出”按钮用于结束点菜过程 以下为“点菜1”表单各控件的主要属性设置: ①表单的属性 BACKCOLOR:220、205、235 AUTOCENTER:.T. CLOSABLE:.F. 2:表格言(GRID1)的属性 DELETMARK:.F. RECORDSOURCETYPE:0-表 以下为在发生各种事件时所执行的代码 (1) 表单的激活(ACTIVE)事件 use 菜谱 if not e
29、of() copy to caipu fields cbh、cm、dj for dbz=.T. endif use use 菜谱 append from caipu fields cbh、cm、dj replace all jch with c use thisform.grid1.recordsource=”菜谱点” (2)“确认账单”按钮的单击(click)事件 close databases open database 餐饮数据
30、 use 菜谱点 go top repl all 菜谱点.je with 菜谱点.dj*菜谱点.dcfs close databases open database 餐饮数据 use 餐菜联 append from 菜谱点 fields jch、cbh、dcfs erase caipu.dbf close databases open database 餐饮数据 use 菜谱
31、 repl all 菜谱.dbz with .F. use thisform.grid1.recordsource=”菜谱点” 3.3查询信息表单 查询即从数据库存储的数据资源中找出用户所期望的信息,本系统的查询功能名括浏览菜谱全貌,按菜系浏览菜谱,按主料浏览菜谱,按日期查询营业额,按日期查询就餐人数,按日期查询某类主料日销售量,按日期查询各就餐时段预订单.除第一项为简单查询外,其它均为动态查询,其中的某类主料日销量查询为组合动态查询.以下较详尽介绍按日期查询营业额表单和按日期查询某类主料销量表单. 1、“按日期查询营业额”表单。 在表单中放入两
32、个文本框,分别用来输入欲查询营业额的日期和显示查询结果,当在上面文本框按提示格式输入日期后,按“确定”按钮,则下面的文本框将显示经查询后统计出来的营业额。表单界面(如图12-8所示)。 在表单中设置两个命令按钮“确定”和“退出”。“确定”按钮的功能是:当用户输入查询日期后,将用户输入的日期赋给一变量,之后让数据指针指向视图“对账单1”的第一条记录,利用LOCATEFOR,CONTINUE命令查找在此日期的营业额,用一累加变量,将金额累加之后,显示在屏幕的文本框中。“退出”按钮的功能是关闭本表单返回主菜单。 向表单的数据环境中添加以下三项内容:视图“对账单1”、就餐.DBF和
33、餐菜联.DBF. 以下为”确定”按钮的单击(CLICK)事件所执行的代码: sele 对账单1 =requery() public u、v、l u=ctod(thisform.text1.value) l=0 locat for u=rq do while not eof() k=dj*dcfs l=k+1 contiun enddo set talk off thisform.text2.value=1 2、“按日期查询某类主料销售量”表单 在表单中放入一个组合框,用来选择主料的类型。当点击组合框图的下拉箭头时,其
34、显示内容为种类号、种类名,返回值为种类号。这样,在界面显示查询结果时,看到的只有种类号,而在使用选择主料时,可以看到种类名。 在表单中放入两个文本框,分别用来输入欲查询主料销售量的日期和显示查询结果,当在上面文本框中按提示格式输入日期,并利用组合框选择好欲查询的主料后,按“确定”按钮,则下面的文本框将显示统计后的主料销售量。表单界面如图12-9所示。 在表单中设置两个命令按钮“确定”和“退出”。“确定”按钮的功能是,当用户输入查询日期,并选择好主料种类后,将从文本框中接收到日期(字符型)利用CTOD()函数转换为日期型,并将其赋给一变量,将从组合框中接收到的值(主料种类号)赋
35、给另一变量,之后利用LOCATEFOR命令查找视图“对账单1”中满足条件的点菜份数,并将其累加,结果显示在下面的文本框中。“退出”按钮的功能是关闭表单返回主菜单。 表单的数据环境中添加以下两项内容:视图”对帐单1”,主料.DBF. 设置组合框COMB1的主要属性如下: ROWSOURCE:主料ZH,ZH ROWSOURCETYPE:6-字段 以下为”确定”按钮的单击(CLICK)事件所执行的代码: SELE对帐单1 =REQUERY() PUBLIC UU,VV,11 UU=CTOD(THISFORM.TEXT1.VALUE) P=THISFORM.COMBOL.VA
36、LUE 11=0 LOCAT FOR UU=RQ.AND.P==SUBSTR(对帐单1.CBH,4,2) DO WHILE NOT EOF() K=DCFS 11=K+11 CONTINU ENDDO DSET TALK OFF THISFORM.TEXT2.VALUE=11 USE 3.4数据维护表单 菜肴和主食信息会随时令的变化而变化,预订情况也会由于种种原因而发生变化,根据实际情况应及时对有关信息进行修改,反映其变化,正确对数据进行管理,为此,本系统设计了较完善的数据维护功能,句括菜谱、预订单内容的增加、修改、删除,使用户能
37、够方便地进行数据的维护工作。本系统还从数据库的安全性考虑,在进行数据维护之前设置了密码检测功能,只有输入正确密码的用户,才可以进行增加、修改、删除的操作,从而实现了对数据库的保护。 以下介绍设计菜谱及预订单修改、删除操作的详细过程。 菜谱及时预订变更表单 菜谱、预订单的修改、删除操作,是在表单中选用的两个页框分别完成的,设计步骤如下: (1) 在表单中放入一个页框控件,其页数为2,一页实现对菜谱的操作,另一页实现对预订单的操作。 (2) 在页框的第一页中放入一个命令按钮组,按钮分别为“前一菜”、“后一菜”、“修改”、“
38、删除”、“退出”,“前一菜”,“后一菜”,两个按钮用于实现查找要修改的记录,“修改”按钮的功能是实现允许对数据的改动,“删除”按钮的功能是允许对当前记录进行逻辑删除,但会事先弹出提示信息,提醒用户进行删除操作时要慎重,“退出”的功能是关闭表单。 (3) 在页框的第二页中放入一个命令按钮组,按钮分别为“前一订单”、“后一订单”、“修改”、“删除”、“退出”,各按钮的作用与第一页情况类似。 (4) 进入表单生成器。将鼠标指向页框的空白处,单击右键弹出快捷菜单,选择“生成器”,在生成器中选择菜谱表中的字段,由于此时这些字段仅仅加入到表单中,而未加入到页框的页面中,所以还需要下一步的工作。 (5
39、 接下来要干的就是排列字段对象。用鼠标右键单击选择表单中一个字段对象并弹出快捷菜单,单击“剪切”删除这个字段对象,用鼠标右键单击页框并弹出快捷菜单,选择“编辑”,此时页框被粗框包围。用鼠标右键单击页框中准备放置这个字段对象的位置,在弹出菜单中选择“粘贴”,把刚删除的字段对象粘贴在这里,依次处理其他字段。 以下为发生各种事件所执行的代码: (1)“前一菜”按钮的单击(Click”事件 SELE菜谱 If RECNO()>0 SKIP-1 IF BOF() GO TOP ENDIF THISFORM.REFRESH ENDIF
40、 (2)“后一菜”按钮单击(CLICK)事件 SELE 菜谱 IF RECNO()>0 SKIP IF EOF( ) GO BOTTOM ENDIF THISFORM.REFRESH ENDIF (3)“删除”按钮的单击(INIT)事件 SET DELETE ON (4)“删除‘按钮的单击(Click)事件 SELE 菜谱 IF RECNO( )>0 IF MES
41、SAGEBOX(“删除便不能恢复,真的删除”,48+1,“信息提示”)=1 DELETE THISFORM.REFRESH ENDIF ENDIF 3.5统计报表的设计 编写和设计数据库应用程序,除了需要为用户提供各种数据的操作和查询显示功能,还必须提供打印数据的功能。将数据以用户需要的格式打印出来,这就是制作报表。在餐饮经营管理系统中,经常输出的报表就是结账单,下面就以结账单报表(如图12-11所示)为例,介绍报表的制作过程。 在“项目管理器”中选择“新建报表”选项卡,再选择“报表”选项,之后
42、选择“新建”选项,屏幕显示报表设计器窗口,在系统菜单中的“报表”菜单项选择“快速报表”。 在弹出的对话窗口中选择表“菜谱点.DBF”. 按下“确定”按钮之后,选择好布局。 由于该报表含有标题和总结,因此需设置“标题带区”和“总结带区”。在系统菜单“报表”项下选择“标题/总结”项,在弹出的对话框中选择“标题带区”和“总结带区”。 由于字段“JCH”在一次点菜时(一张结账单中),不同的菜使用相同的就餐号,为避免就餐号的重复,先将“JCH”从细节区中删除,并利用报表控件在报表标题带区增加域控件,之后设置其表达式为“菜谱点.jch”,这样,“JCH”字段的值在结
43、账单中就只显示一次。 在总结带区添加域控件,用于求累计金额,双击“域控件”弹出报表表达式对话窗口,选择表达式为“菜谱点.je”,之后单击“计算”按钮选择总和项。 在标题带区加入一个标签,用于显示标题“结账单”。 在页标头区将字段拖动到需要的位置,并利用报表控件中的线条加入直线。 3.6主菜单的设计 设计完善的菜单系统是确保程序易于使用的关键。菜单系统设计的好坏,不但反映了程序中功能模块组织的水平,同时也反映了应用程序的用户友善性,与用户对应用程序的理解密切相关。创建菜单系统的工作是在“菜单设计器”中完成的,在那里可以创建系统运行所需要的菜单,子菜单和菜
44、单项。 创建该菜单系统的步骤如下: (1)从“项目管理器”中选择“其他”选项卡,再选择“菜单”选项,之后,单击“新建”按钮。 (2)在新建对话框中,单击“菜单”按钮,此时出现如图12-16所示的“菜单设计器” (3)在菜单设计器的“菜单名称”列输入要添加菜单项的菜单标题,例如“查询信息”。在“结果”框中选择“子菜单”项,表示“查询信息”菜单标题包含子菜单,这时,“结果”列将出现“创建”按钮,弹出一个空的设计窗口。 (3)在弹出的设计窗口中,与一上步一样输入要添加的菜单项,每个菜单项还可以包含子菜单。 (4)选择“查询信息”菜单标题,单击“编辑”按钮,进入子菜单设计窗口.
45、5)若在“结果”框中选择“命令”项,在其后的编辑框中输入命令内容。例如:菜单名称为“按日期查询营业额”,“结果”框选为命令,在其后的编辑框中输入“DO FORM”按日期查询营业额.SCX’,表示此功能是激活上述表单. (6)单击菜单设计器的”预览”按钮,观察菜单效果,如果不符合要求,可以做进一步地修改,否则关闭菜单设计器,保存所做工作. (7)生成.MPR。这样,上述所设计的菜单就可以正常运行了。 四、设 计 体 会 充分理解用户意图,明确系统必须做什么。通过访谈,搜集报表、问卷调查的形式,充分搜
46、集用户在数据及功能方面对系统的要求。绘制出数据流图。根据数据流图中已经划分出的系统必须完成的许多基本功能,仔细研究这些功能并进一步将它们具体化。 必须先建立项目文件。一个完整的“应用系统”可能包含几十个甚至上百个文件,实现这些文件的维护和管理的有效工具就是项目管理器。 适时编译文件。在应用VFP系统进行设计时,每修改一次文件,VFP系统便会自动将文件生成一遍。如修改一个表单,便会重新生成同名的.SCT文件并覆盖原有文件。但是,在修改菜单时却并非如此。若修改了菜单后直接运行,修改之处并不反应出来。此时,只有在菜单处于修改状态时,选择系统菜单下的生成选项,重新生成.MPR菜单文
47、件,此后再运行菜单,修改之处才能够反应出来。 要熟悉VFP系统的命令和函数。尽管VFP是可视化编程,要设计出具有完善功能的系统,还必须大量地应用命令。而书店有关VFP编程介绍资料极少,在本系统设计中主要利用VFP自带的联机帮助文件,进行命令及函数的查找工作。 五、参 考 文 献 1、《Visual ForPro6.0项目案例导航》 科学出版社 许向荣 潘清 杨一平 2002年6月 2、《数据库基础与应用》 中央电大出版社 王利 2001年10月 3、《SQL SERVER入门提高》清华大学出版社 白海波等人 2001年10月 4、《FRONTPAGE2000中文版》北京大学出版社 鼓万波 2001年6月 27






