- 相关推荐
FOXPRO在三峡工程信息管理中的应用
摘 要:三峡工程是世界级的巨型工程,专业门类多、技术复杂、信息管理工作量巨大,必须使用MIS系统对信息进行收集、整理、存储、统计、分析、制表。几年来,我们先后用FOXBASE、FOXPRO编制了《工资管理系统》、《土石方工程量计算程序》、《工程支付管理系统》、《文档管理系统》、《混凝土强度统计分析程序》等小型桌面系统。在编程过程中,经历了从低级平台(DBASE)到高级平台 (FOXPRO)、从字符界面(DOS)到图形用户界面(WINDOWS)的转化,从中总结出了一些应用经验。关键词:三峡工程,FOXPRO,应用,经验
三峡工程是世界级的巨型工程,专业门类多、技术复杂、信息管理工作量巨大,必须使用MIS系统对信息进行收集、整理、存储、统计、分析、制表。目前,参建各单位的MIS系统相继投入运行,如长江三峡工程开发公司的TGPMIS系统、葛洲坝股份有限公司三峡建设承包公司的“施工档案管理系统”等。这些系统功能较强、涉及面较广,但不可能覆盖信息管理的方方面画,还需要桌面数据库系统来补充。由于桌面数据库的简单易学,因而有着巨大的用户群。用桌面数据库开发出功能较强的系统也有不少成功的先例,如1995~1997年三峡工地使用的“统计系统”、国家电力公司开发的概预算软件等。
在桌面数据库方面,几年来,我们先后用FOXBASE、FOXPRO编制了《工资管理系统》、《土石方工程量计算程序》、《工程支付管理系统》、《文档管理系统》、《混凝土强度统计分析程序》等小型桌面系统。在编程过程中,经历了从低级平台(DBASE)到高级平台(FOXPRO)、从字符界面(DOS)到图形用户界面(WINDOWS)的转化,从中总结出了一些应用经验。如:在WINDOWS中继续使用“字符型报表”、充分利用BROWSE快速制作录入界面、利用“表达式生成器”建立查询、利用FOXGRAPH建立直观的柱状图、饼图等等。
1 项目管理器
项目管理器引入项目概念后,使开发人员从应用系统中各类文件繁琐的管理中解脱出来,从而有更多的时间用于模块开发:项目管理器有如下优点:(1)只要将应用系统的主控模块(通常是菜单)放入项目管理器中,在生成项目时,能将应用系统中几乎所有的文件都纳入其中,方便程序模块的修改、调试;(2)通过其可以方便地创建可执行文件,并且在编译时具有自动更新项目中各组成部分的版本的功能。
在使用项目管理器时应注意:(1)尽可能地使用“原”文件(MNX、SCX等),而不使用由生成器转换以后的程序文件(MPR、SPR等),以便在菜单、屏幕等更新后,执行项目管理器中的“BUILD”按钮时能自动作相应的转换;在程序中调用菜单或屏幕时,调用扩展名为MPX或SPX的文件而不是扩展名为MPR或SPR的文件。(2)若一个应用中的大部分模块都已定型,只是个别模块在使用中变化。如我们编制的《工资管理系统》中的统计模块,该模块的修改(二次开发)较简单,系统的使用人员也可以胜任。这要求在编译的可执行文件中不含该模块,实现的方法是:利用FOXPRO“PROJECT”菜单中的“EXCLUDE”菜单条对项目管理器中的该模块作标记,然后执行“PROJECT”菜单中的“PACK”功能,再重新编译项目即可。外部模块是FXP类型的文件,在安装时,注意将外部模块文件放在应用系统EXE文件所在的目录中。
2 FOXPRO程序的龙头——菜单
程序通常由多个功能模块组成,可以通过屏幕中排列的一系列按钮等对象来调用这些模块,但通常用菜单将各功能模块融合在一起形成整体。为此,我们用DELPHI编制了这种菜单的自动生成器。
FOXPRO中提供了与WINDOWS图形用户界面一致的条形菜单、弹出菜单,并提供了相应的自动生成工具(GENMENU.FXP)。这种菜单的特点是:菜单容许是多层次的;运行时菜单可以动态变化;功能模块可以直接含在菜单中,使得由一个菜单程序构成一个应用系统成为可能;可以直接使用一些通用功能,如新建文件、复制、粘贴等。这种形式的菜单,初次使用时往往会产生只运行一次就退出菜单的情况,可以用以下的办法解决:
(1)在菜单开始(SETUP)代码最后加入如图1所示循环起始语句:
do while.t.
(2)菜单的清楚(CLEANUP)代码如下所示:
read valid.f.
enddo
(3)退出菜单程序的代码如下所示:
close database
clear all
set sysmenu to default
cancel
应用系统中常常要用应用的名称代替FOXPROW主窗口中的标题“microsoft foxprow”,实现方法是在菜单开始(SETUP)代码的前面加入类似如下所示代码:
modify window screen at 4,6 size 36,147;
title“物资材料管理程序”
font“ms sans serif”,8 float close minimize
move window screen center
zoom window screen max
FOXBASE的下拉菜单(meun bar.……read menu to)是一种单任务性质的,在执行一个具体的模块时,菜单隐去,控制权在所执行的模块,不会发生模块的重复执行。而FOXPRO的条形菜单具有多任务的性质,同一模块,可重复执行,有时需要利用这一功能,但多数情况下是不需要的,这是因为同一模块或同时活动的多个模块经常处理的是同一类数据库或表,这样可能会因产生冲突而出错。因此,通常要求在执行一个模块时,不容许使用相同数据库文件的其他模块执行。这可以通过在菜单开始(SETUP)代码引入若干逻辑型内存变量,在菜单条中使用SKIP属性来实现。通过这种方式,可以使模块之间产生关联。
3 应用程序的信息输入
(1)屏幕生成器
屏幕和菜单类似,都有开始 (SETUP)、清除(CLEANUP)两个代码段,通过他们可以设置相应的环境或在屏幕(或菜单)退出时恢复环境。虽可以通过屏幕生成器中的 “ENVIRON-MEXT”按钮中的“SAVE”功能保存开发时的环境,但此功能有限,不便于进行复杂的设置,且其保存的开发时的环境可能与运行时不同,导致程序运行时出错。所以,建议编程人员不要用此功能,而使用前者。
屏幕中编写代码时,有两个层次,即屏幕层和屏幕中的对象层。通常的处理均可在对象层次中解决。屏幕层次中通常只使用开始(SETUP)、清除(CLEANUP)两个代码段,其他的代码段通常在多窗体、多屏幕中用到。在对象层次中,通常也只需要编写“VALID”代码。
(2)功能强大的BROWSE
使用过EXCEL的人都习惯对纵横表进行操作,这样操作直观、自然。在FOXPROW中,用BROWSE可以实现类似的功能。若要用BROWSE对表进行任意操作,用下面简单的命令即可:
use
browse title
这样的操作,表中的数据是不安全的,有必要对表的浏览操作加以限制。如在BROWSE命令中有选择性的加入NODE-LETE、NOAPPEND、NOMODIFY,就可以对“加删除标志”或“追加记录”或“修改记录”加以限制。