李国红
账务处理与报表系统是整个会计电算化软件的核心部分,其基本任务是:①由原始凭证填制记账凭证(包括凭证的输入、修改和审核等);②由已审核的记账凭证登记总账、明细账、现金日记账和银行存款日记账;③根据总账和明细账编制资产负债表和损益表等会计报表。对应于这些基本任务,账务处理与报表系统应由若干相应的功能模块组成,各模块又分别由若干子模块组成。要把这些模块较好地组织起来,最好的办法就是利用菜单技术。本文主要以Visual FoxPro 6.0(以下简称VFP)为开发工具来探讨账务处理与报表系统的菜单设计及实现方法。
1 账务处理与报表系统的功能模块
账务处理与报表系统是一种极为重要的管理信息系统,主要实现会计科目设置、记账凭证处理、登记账簿、编制会计报表、账表的预览与打印、结转等功能。由于账务处理与报表系统是由特定的操作人员使用的,它还应当能够提供包括增加操作员、删除操作员及修改口令在内的用户管理功能。另外,与其他管理信息系统一样,该系统使用完毕后应能够退出。账务处理与报表系统的功能模块结构如图1所示。
其中,账表预览与打印模块下的各子模块又分别包括预览和打印两个功能子模块,例如:总账子模块下包括总账预览、总账打印子模块。
2 账务处理与报表系统的菜单规划
由于账务处理与报表系统由若干功能模块组成,各模块又由若干子模块组成,因此,系统实现时最适合以菜单方式对各模块进行组织与设计。为方便论述,这里将账务处理与报表系统所在的最高层模块称为0级模块,0级模块所直接包含的各模块称为一级模块,一级模块的直接下级模块称为二级模块,余类推。根据这种约定,图1中“账表预览与打印”、“总账”、“预览”模块就分别对应于一、二、三级模块。设计菜单系统时所用的模块结构图中一般不多于三级模块。
进行菜单规划时通用的做法是,将组成系统的一级模块的名称(或含义相同的替代名称)作为菜单栏上各菜单项的名称,若模块下还有子模块,则将各模块下的子模块的名称(或含义相同的替代名称)作为相应菜单项下的子菜单项的名称,菜单的层次一般不超过3层。根据图1,账务处理与报表系统的菜单栏由会计科目设置、记账凭证处理、登记账簿、编制报表、账表预览与打印、结转、用户管理、退出等菜单项组成,除“退出”菜单项外的其余菜单项下又由若干对应的子菜单项组成。如会计科目设置菜单项下包括输入科目、查询科目、修改科目、删除科目等子菜单项;账表预览与打印菜单项下包括总账、明细账、现金日记账、银行存款日记账、资产负债表、损益表、利润分配表、现金流量表等子菜单项,这些子菜单项下又分别由预览、打印子菜单项组成。
为方便用户操作,规划菜单时可以根据需要为菜单栏的每个菜单项设计热键,为每个菜单项下的各子菜单项设置访问键、快捷键,并设置必要的分隔线。利用VFP设计的账务处理与报表系统的部分菜单界面如图2和图3所示,其中“会计科目设置”菜单的热键是K,“输入科目”项的访问键为S、快捷键为Ctrl+S,横线为分隔线,余类推。
3 菜单功能的实现方法
菜单设计是在VFP的菜单设计器中完成的。启动VFP后,在“文件”菜单下选择“新建”命令,在弹出的“新建”对话框选中“菜单”项,然后单击“新建文件”按钮,再在弹出的“新建文件”对话框中单击“菜单”按钮,即可进入菜单设计器界面。也可在项目管理器的“全部”或“其他”选项卡的树型目录区选中“菜单”项,再单击“新建”按钮,以类似的方法进入菜单设计器界面,进行菜单的设计。
3. 1菜单栏设计
菜单栏设计主要是设计出现在菜单栏的菜单项名及对应的热键。一般将系统所包含的功能模块的名称(或含义相同的替代名称)作为菜单栏的菜单项名,将菜单项名对应的汉语拼音(或英文单词)缩写中的、最有助于人们理解菜单项功能的某个字母作为菜单项的热键,并将各菜单项按照事先设计好的顺序进行排列。按照上述方法进入菜单设计器后,可以看到设计器的菜单级对应为“菜单栏”,可对照图1所示的模块名称并按照设置热键的规则,或依据第2节所作的菜单规划,在“菜单名称”栏依次输入对应的菜单项名并设置相应的热键,如图4所示。
其中,T是“退出”项的热键,执行该项可退出VFP。由于退出VFP可用quit命令实现,所以在对应的“结果”栏选择“命令”,再在其右边的文本框输入quit即可。其他各菜单项都对应有下拉菜单,所以在结果栏均选择“子菜单”。这样,运行菜单后,也可以通过按“Alt+T”组合键执行“退出”功能。
3. 2下拉菜单设计
菜单栏中的每个菜单项都可根据需要对应于一个一级或不多于三级的下拉菜单。在图4所示界面的“菜单名称”栏输入某菜单项名,在“结果”栏选择“子菜单”,并单击其右边的“创建”(或“编辑”)按钮后,即可进入该菜单项的下拉菜单设计界面,图5和图6分别是“会计科目设置”和“账表预览与打印”的下拉菜单设计界面。
“会计科目设置”下拉菜单的菜单项由“会计科目设置”模块所包含的子模块名组成。假设每个子模块对应于一个已设计好的表单文件(扩展名为.scx),如“输入科目”模块对应于表单文件“输入科目.scx”,保存在默认目录下,则菜单设计器中的各菜单项对应的结果栏应选择“命令”,其右边的命令输入框中应输入相应的可执行命令,如“输入科目”菜单项对应的命令为“do form 输入科目.scx”。若在菜单项之间插入分隔线,则菜单名称为“-”,结果栏选“子菜单”即可。若在“菜单级”对应的下拉组合框中选择“菜单栏”,即可返回菜单栏设计界面(即返回到图4)。
由于账表预览与打印模块下包含若干子模块,各子模块又分别包括预览和打印两个功能子模块,所以“账表预览与打印”下拉菜单应包含一个二级菜单结构,需要分别进行设计。首先以上述类似的方法进入账表预览与打印的下拉菜单设计界面(图6),分别将账表预览与打印模块下的各子模块名(及其访问键)作为菜单项名输入菜单名称栏,在结果栏选择“子菜单”,并设置必要的分隔线,就完成了一级下拉菜单的设计。然后,对于每个菜单项,单击结果栏右边的“创建”(或“编辑”)按钮,可进入二级菜单设计界面,例如,单击“总账”项结果栏右边的“创建”(或“编辑”),即可进入总账子菜单的设计界面(图7)。这里,假设各报表文件(扩展名为.frx)均已设计好,比如总账的报表文件为zz.frx,并保存在默认目录下,则在菜单名称栏分别输入“预览”、“打印”(及相应的访问键)作为菜单项,在结果栏选择“命令”,在“预览”项结果栏右边的命令输入框输入report form zz.frx preview,在“打印”项结果栏右边的命令输入框输入report form zz.frx to printer。
需要说明的是,在结果栏选择“命令”时,其右边的命令输入框中应输入相应的可执行命令,可以是VFP命令或SQL语句。除执行表单、报表文件命令外,还可以是执行程序文件(扩展名为.prg)、查询文件(扩展名为.qpr)等的命令,而且所输入的命令必须是执行对应菜单项功能的命令,命令的语法和格式也必须完全正确。例如,登记总账的程序名是djzz.prg,则对应的命令用do djzz.prg;编制损益表的程序名是bzsyb.prg,则对应的命令用do bzsyb.prg。
其余模块对应的菜单、子菜单可参照上述方法在菜单设计器中进行设计与修改。
整个菜单设计完成后,可单击常用工具栏的“保存”按钮进行保存,生成扩展名为.mnx的菜单设计文件,比如生成“账务处理与报表系统.mnx”,该文件可以随时进行编辑与修改。
3. 3菜单的运行
设计好的菜单必须生成可执行的菜单程序文件才能正常运行。选中菜单设计器,在VFP系统菜单栏中选择“菜单”项下的“生成”选项,将弹出“生成菜单”对话框,单击“生成”按钮后,即可生成主文件名与菜单设计文件的主名相同、扩展名为.mpr的可执行菜单程序文件,比如菜单设计文件名为“账务处理与报表系统.mnx”,则菜单程序文件名为“账务处理与报表系统.mpr”。
生成可执行菜单程序后,就可运行该菜单,运行方法有多种。例如,可以利用VFP“程序”菜单下的“运行”命令,也可以将“账务处理与报表系统.mnx”添加到项目管理器后利用“运行”按钮,还可以在VFP的程序文件或命令窗口中执行命令:do 账务处理与报表系统.mpr。
4 结 语
综上所述,利用VFP设计应用系统菜单时,首先要通过分析和规划,画出不多于三级的系统模块结构图;然后根据模块结构图规划菜单系统,包括确定菜单栏所包含的菜单名及相应的热键,设计出每个菜单名对应的下拉菜单所包含的菜单项及相应的访问键、快捷键、分隔线等,并确定哪些菜单项还要有子菜单;最后利用菜单设计器创建菜单和子菜单,并按照实际要求为没有子菜单的菜单项指定所要执行的任务或命令。设计好的菜单文件需要生成扩展名为.mpr的可执行菜单程序文件后才能运行该菜单,从而最终实现菜单的功能。
主要参考文献
[1] 朱顺泉,姜灵敏. 管理信息系统理论与实务[M]. 修订版. 北京:人民邮电出版社,2004.
[2] 陈洛资,陈昭平. 数据库系统及应用基础[M]. 第2版. 北京:清华大学出版社,北京交通大学出版社,2005.