- 相關(guān)推薦
FOXPRO在三峽工程信息管理中的應(yīng)用
摘 要:三峽工程是世界級的巨型工程,專業(yè)門類多、技術(shù)復(fù)雜、信息管理工作量巨大,必須使用MIS系統(tǒng)對信息進(jìn)行收集、整理、存儲、統(tǒng)計、分析、制表。幾年來,我們先后用FOXBASE、FOXPRO編制了《工資管理系統(tǒng)》、《土石方工程量計算程序》、《工程支付管理系統(tǒng)》、《文檔管理系統(tǒng)》、《混凝土強度統(tǒng)計分析程序》等小型桌面系統(tǒng)。在編程過程中,經(jīng)歷了從低級平臺(DBASE)到高級平臺 (FOXPRO)、從字符界面(DOS)到圖形用戶界面(WINDOWS)的轉(zhuǎn)化,從中總結(jié)出了一些應(yīng)用經(jīng)驗。關(guān)鍵詞:三峽工程,F(xiàn)OXPRO,應(yīng)用,經(jīng)驗
三峽工程是世界級的巨型工程,專業(yè)門類多、技術(shù)復(fù)雜、信息管理工作量巨大,必須使用MIS系統(tǒng)對信息進(jìn)行收集、整理、存儲、統(tǒng)計、分析、制表。目前,參建各單位的MIS系統(tǒng)相繼投入運行,如長江三峽工程開發(fā)公司的TGPMIS系統(tǒng)、葛洲壩股份有限公司三峽建設(shè)承包公司的“施工檔案管理系統(tǒng)”等。這些系統(tǒng)功能較強、涉及面較廣,但不可能覆蓋信息管理的方方面畫,還需要桌面數(shù)據(jù)庫系統(tǒng)來補充。由于桌面數(shù)據(jù)庫的簡單易學(xué),因而有著巨大的用戶群。用桌面數(shù)據(jù)庫開發(fā)出功能較強的系統(tǒng)也有不少成功的先例,如1995~1997年三峽工地使用的“統(tǒng)計系統(tǒng)”、國家電力公司開發(fā)的概預(yù)算軟件等。
在桌面數(shù)據(jù)庫方面,幾年來,我們先后用FOXBASE、FOXPRO編制了《工資管理系統(tǒng)》、《土石方工程量計算程序》、《工程支付管理系統(tǒng)》、《文檔管理系統(tǒng)》、《混凝土強度統(tǒng)計分析程序》等小型桌面系統(tǒng)。在編程過程中,經(jīng)歷了從低級平臺(DBASE)到高級平臺(FOXPRO)、從字符界面(DOS)到圖形用戶界面(WINDOWS)的轉(zhuǎn)化,從中總結(jié)出了一些應(yīng)用經(jīng)驗。如:在WINDOWS中繼續(xù)使用“字符型報表”、充分利用BROWSE快速制作錄入界面、利用“表達(dá)式生成器”建立查詢、利用FOXGRAPH建立直觀的柱狀圖、餅圖等等。
1 項目管理器
項目管理器引入項目概念后,使開發(fā)人員從應(yīng)用系統(tǒng)中各類文件繁瑣的管理中解脫出來,從而有更多的時間用于模塊開發(fā):項目管理器有如下優(yōu)點:(1)只要將應(yīng)用系統(tǒng)的主控模塊(通常是菜單)放入項目管理器中,在生成項目時,能將應(yīng)用系統(tǒng)中幾乎所有的文件都納入其中,方便程序模塊的修改、調(diào)試;(2)通過其可以方便地創(chuàng)建可執(zhí)行文件,并且在編譯時具有自動更新項目中各組成部分的版本的功能。
在使用項目管理器時應(yīng)注意:(1)盡可能地使用“原”文件(MNX、SCX等),而不使用由生成器轉(zhuǎn)換以后的程序文件(MPR、SPR等),以便在菜單、屏幕等更新后,執(zhí)行項目管理器中的“BUILD”按鈕時能自動作相應(yīng)的轉(zhuǎn)換;在程序中調(diào)用菜單或屏幕時,調(diào)用擴展名為MPX或SPX的文件而不是擴展名為MPR或SPR的文件。(2)若一個應(yīng)用中的大部分模塊都已定型,只是個別模塊在使用中變化。如我們編制的《工資管理系統(tǒng)》中的統(tǒng)計模塊,該模塊的修改(二次開發(fā))較簡單,系統(tǒng)的使用人員也可以勝任。這要求在編譯的可執(zhí)行文件中不含該模塊,實現(xiàn)的方法是:利用FOXPRO“PROJECT”菜單中的“EXCLUDE”菜單條對項目管理器中的該模塊作標(biāo)記,然后執(zhí)行“PROJECT”菜單中的“PACK”功能,再重新編譯項目即可。外部模塊是FXP類型的文件,在安裝時,注意將外部模塊文件放在應(yīng)用系統(tǒng)EXE文件所在的目錄中。
2 FOXPRO程序的龍頭——菜單
程序通常由多個功能模塊組成,可以通過屏幕中排列的一系列按鈕等對象來調(diào)用這些模塊,但通常用菜單將各功能模塊融合在一起形成整體。為此,我們用DELPHI編制了這種菜單的自動生成器。
FOXPRO中提供了與WINDOWS圖形用戶界面一致的條形菜單、彈出菜單,并提供了相應(yīng)的自動生成工具(GENMENU.FXP)。這種菜單的特點是:菜單容許是多層次的;運行時菜單可以動態(tài)變化;功能模塊可以直接含在菜單中,使得由一個菜單程序構(gòu)成一個應(yīng)用系統(tǒng)成為可能;可以直接使用一些通用功能,如新建文件、復(fù)制、粘貼等。這種形式的菜單,初次使用時往往會產(chǎn)生只運行一次就退出菜單的情況,可以用以下的辦法解決:
。1)在菜單開始(SETUP)代碼最后加入如圖1所示循環(huán)起始語句:
do while.t.
。2)菜單的清楚(CLEANUP)代碼如下所示:
read valid.f.
enddo
(3)退出菜單程序的代碼如下所示:
close database
clear all
set sysmenu to default
cancel
應(yīng)用系統(tǒng)中常常要用應(yīng)用的名稱代替FOXPROW主窗口中的標(biāo)題“microsoft foxprow”,實現(xiàn)方法是在菜單開始(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)是一種單任務(wù)性質(zhì)的,在執(zhí)行一個具體的模塊時,菜單隱去,控制權(quán)在所執(zhí)行的模塊,不會發(fā)生模塊的重復(fù)執(zhí)行。而FOXPRO的條形菜單具有多任務(wù)的性質(zhì),同一模塊,可重復(fù)執(zhí)行,有時需要利用這一功能,但多數(shù)情況下是不需要的,這是因為同一模塊或同時活動的多個模塊經(jīng)常處理的是同一類數(shù)據(jù)庫或表,這樣可能會因產(chǎn)生沖突而出錯。因此,通常要求在執(zhí)行一個模塊時,不容許使用相同數(shù)據(jù)庫文件的其他模塊執(zhí)行。這可以通過在菜單開始(SETUP)代碼引入若干邏輯型內(nèi)存變量,在菜單條中使用SKIP屬性來實現(xiàn)。通過這種方式,可以使模塊之間產(chǎn)生關(guān)聯(lián)。
3 應(yīng)用程序的信息輸入
。1)屏幕生成器
屏幕和菜單類似,都有開始 (SETUP)、清除(CLEANUP)兩個代碼段,通過他們可以設(shè)置相應(yīng)的環(huán)境或在屏幕(或菜單)退出時恢復(fù)環(huán)境。雖可以通過屏幕生成器中的 “ENVIRON-MEXT”按鈕中的“SAVE”功能保存開發(fā)時的環(huán)境,但此功能有限,不便于進(jìn)行復(fù)雜的設(shè)置,且其保存的開發(fā)時的環(huán)境可能與運行時不同,導(dǎo)致程序運行時出錯。所以,建議編程人員不要用此功能,而使用前者。
屏幕中編寫代碼時,有兩個層次,即屏幕層和屏幕中的對象層。通常的處理均可在對象層次中解決。屏幕層次中通常只使用開始(SETUP)、清除(CLEANUP)兩個代碼段,其他的代碼段通常在多窗體、多屏幕中用到。在對象層次中,通常也只需要編寫“VALID”代碼。
。2)功能強大的BROWSE
使用過EXCEL的人都習(xí)慣對縱橫表進(jìn)行操作,這樣操作直觀、自然。在FOXPROW中,用BROWSE可以實現(xiàn)類似的功能。若要用BROWSE對表進(jìn)行任意操作,用下面簡單的命令即可:
use
browse title
這樣的操作,表中的數(shù)據(jù)是不安全的,有必要對表的瀏覽操作加以限制。如在BROWSE命令中有選擇性的加入NODE-LETE、NOAPPEND、NOMODIFY,就可以對“加刪除標(biāo)志”或“追加記錄”或“修改記錄”加以限制。