[摘 要]本文以會計科目的輸入設(shè)計與實施為例,以Microsoft Visual FoxPro 6.0為關(guān)系數(shù)據(jù)庫管理系統(tǒng),分析與闡述了管理信息系統(tǒng)數(shù)據(jù)輸入模塊的實施原理與方法,探討了會計科目輸入的程序流程,并提供了相應(yīng)的程序代碼。
[關(guān)鍵詞]管理信息系統(tǒng);會計科目;信息輸入;VFP程序設(shè)計
[中圖分類號]F232 [文獻(xiàn)標(biāo)識碼]A [文章編號]1673-0194(2006)11-0019-04
數(shù)據(jù)輸入模塊是管理信息系統(tǒng)的一個關(guān)鍵性的處理模塊,輸入數(shù)據(jù)的正確性與可靠性是管理信息系統(tǒng)發(fā)揮其功能的重要保證,輸入模塊設(shè)計的好壞將會直接影響到管理信息系統(tǒng)的正常使用。輸入模塊設(shè)計與實現(xiàn)的基本原理是:首先設(shè)計與建立簡便易用的用戶輸入界面及相關(guān)的數(shù)據(jù)表文件,然后選擇合適的程序設(shè)計語言,并根據(jù)信息輸入的程序流程設(shè)計相應(yīng)的程序代碼;程序運(yùn)行時,用戶通過用戶輸入界面從鍵盤錄入所要求的原始數(shù)據(jù),所錄入的數(shù)據(jù)符合要求時將被存儲在指定的數(shù)據(jù)表文件中,不滿足要求時則不能保存到相應(yīng)的數(shù)據(jù)表文件,而且應(yīng)當(dāng)有相應(yīng)的提示信息。現(xiàn)以Microsoft Visual FoxPro 6.0(以下簡稱VFP)數(shù)據(jù)庫管理系統(tǒng)為系統(tǒng)開發(fā)環(huán)境,以會計科目的輸入設(shè)計與實施為例,說明信息輸入模塊的設(shè)計與實現(xiàn)方法。
1 會計科目輸入模塊的實施原理
1.1會計科目輸入模塊的功能目標(biāo)
會計科目信息包括科目編號、科目名稱、借貸方向和期初余額等,這些信息的輸入通過會計科目輸入的表單界面進(jìn)行,其表單界面如圖1所示。將會計科目信息通過鍵盤分別輸入至表單中對應(yīng)的Textl、Text2、Text3、Text4文本框中,然后單擊“確定”按鈕;這時,若從鍵盤輸入至表單的信息符合要求,則將這些信息保存至?xí)嬁颇勘韐jkm.dbf中,否則需做進(jìn)一步判斷與處理,只有符合要求的會計科目信息才能保存在kjkm.dbf數(shù)據(jù)表中。kjkm.dbf數(shù)據(jù)表的結(jié)構(gòu)如表1所示。
從鍵盤輸入至表單的信息是否符合要求,主要由程序自動判斷與處理,用戶不必關(guān)心。信息是否符合要求主要看表單上科目編號對應(yīng)的Textl文本框中的數(shù)據(jù)是否符合要求,以下情況均不符合要求:①Textl文本框中為空白數(shù)據(jù)(空字串或空格);②TextI中的數(shù)據(jù)位數(shù)不符合要求;③Textl中的科目編號對應(yīng)的上級科目在kjkm.dbf數(shù)據(jù)表中沒有匹配的記錄;④Textl中的科目編號在kjkm.dbf數(shù)據(jù)表中已有匹配的記錄。單擊“確定”按鈕時,只要出現(xiàn)上述情況之一,都會彈出信息提示對話框并要求進(jìn)一步操作與處理,直到Textl中的數(shù)據(jù)滿足要求時,才能通過單擊“確定”按鈕將表單上的數(shù)據(jù)存儲在kjkm.dbf中。

在信息輸入的過程中,若單擊表單上的“取消”按鈕,便取消了本次輸入并將焦點定位于Textl文本框,等待重新輸入;若單擊“退出”按鈕,將彈出提示信息“真的想退出嗎?”的對話框,再單擊對話框上的“是”按鈕將退出輸入模塊,但單擊對話框上的“否”按鈕并不退出。
1.2會計科日表kjkm.dbf的結(jié)構(gòu)
建立會計科目數(shù)據(jù)表,其結(jié)構(gòu)如表l所示,相應(yīng)的數(shù)據(jù)表文件kjkm.dbf保存在默認(rèn)目錄(或指定目錄)下。
其中,科目編號kmbh字段的值可以是一級科目,也可以是二、三、四級科目。這里假定一級科目的科目編號用3位代碼表示,非一級科目的科目編號用它的上級科目編號后面加2位代碼表示。例如,一級科目“銀行存款”的科目編號是102,二級科目“銀行存款一工行”的科目編號可用10201表示,三、四級科目的編號可用1020101、102010101等來表示。當(dāng)然,kmbh字段的寬度也可根據(jù)實際需要設(shè)計為5位、7位、ll位等,對后面提到的程序不會有任何影響。這樣設(shè)計時,要求科目編號的位數(shù)不能低于3位,而且必須是奇數(shù)。另外,科目編號kmbh在數(shù)據(jù)表kjkm.dbf中是主碼,不允許為空值,也不能有重復(fù)的值出現(xiàn),而且,通過表單界面輸入非一級科目的科目編號時,必須保證kjkm.dbf中已保存了與之對應(yīng)的上級科目編號。通過表單界面輸入信息時,程序應(yīng)能夠自動判斷出是否滿足所有這些要求,并進(jìn)行相應(yīng)處理。
科目名稱kmmc、借貸方向jdfx、期初余額qcye的寬度也應(yīng)根據(jù)實際需要設(shè)計成其他值,這里給出的只是參考值。
1.3會計科目輸入的表單界面
新建用于會計科目信息輸入的表單,其界面如圖1所示,相應(yīng)的表單文件保存在默認(rèn)目錄(或指定目錄)下。如果要改變表單界面上文字的字體、字號、顏色,需要在各標(biāo)簽控件和命令按鈕控件的屬性對話框中設(shè)置FontName、FontSize、ForeColor屬性;如果改變直線的顏色,可通過設(shè)置其BorderColor屬性進(jìn)行,也可以通過操作調(diào)色板實現(xiàn)。
由于期初余額qcye在會計科目表kjkm.dbf中為數(shù)值型數(shù)據(jù),寬度為12,小數(shù)位為2位,這就需對Text4文本框做如下處理:用鼠標(biāo)右鍵單擊Text4文本框,在彈出的快捷菜單中選擇“生成器”,出現(xiàn)“文本框生成器”對話框,在“格式”選項卡將“數(shù)值類型”設(shè)置為“數(shù)值型”,并將“輸入編碼”設(shè)置為“999999999.99”。
由于科目編號、科目名稱、借貸方向為字符型數(shù)據(jù),它們對應(yīng)的Textl、Text2、Text3文本框不必再作處理。
2 會計科目輸入的程序流程
會計科目信息輸入時,程序應(yīng)能夠自動判斷出從鍵盤輸入的數(shù)據(jù)是否符合會計科目表kjkm.dbf存儲信息的要求,并做出相應(yīng)的處理,其程序流程如圖2所示。
3 會計科目輸入的VFP程序代碼及相關(guān)說明
3.1會計科目輸入的VFP程序代碼

會計科目的輸入是通過會計科目輸入的表單界面進(jìn)行的,而要將從鍵盤輸入至表單界面對應(yīng)文本框中的數(shù)據(jù)保存至?xí)嬁颇勘韐jkm.dbf中,則需要單擊表單上的“確定”按鈕。因此,“確定”按鈕的Click事件的程序代碼應(yīng)當(dāng)與圖2所示的“會計科目輸入程序流程”相對應(yīng)。“確定”按鈕的Click事件的VFP程序代碼對應(yīng)如下。
set exact on
b=O
use kjkm
kmbhl=allt(、thisform.textl.value)
lengthl=len(allt(thisform.textl.value))
if lengthl<3
b=messagebox(“請輸入不低于三位的科目編號!”,48)
thisform.textl.setfocuselse
loca for alh(kmbh)=kmbh 1
if found0
b=messagebox(“科目編號不能重復(fù)!”,48)
thisform.text1.setfocus
endif
if lengthl>3
if mod(1en(allt(kmbhl)),2)=1
go top
loca for allt(kmbh)=left(allt(kmbhl),lengthl-2)
if.not.found0
b=messagebox(\"無上級科目,請輸入上級科目!\",48)
thisform.textl.value=left(allt(kmbhl),lengthl-2)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=0.00
thisform.text2.setfocus
endif
else
b=messageboxf(“科目編號位數(shù)不對,請重新輸入!”,48)
thisform.textl.setfocus
endif
endif
endif
if b=0
appe blan
repl kmbh with kmbhl
repl kmmc with thisform.text2.value
repl jdfx with thisform.text3.value
repl qcye with thisform.text4.value
thisform.textl.value=space(1)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=0.00
thisform.refresh
thisform.text 1.setfocus
endif
use
set exact off
3.2相關(guān)說明
kmbhl、lengthl是中間變量,分別表示輸入至Textl文本框中的科目編號(去掉前后空格)及其長度。當(dāng)lengthl<3時,表單中已輸入的科目編號一定不符合會計科目表kjkm.dbf對信息的要求;當(dāng)lengthl≥3時,要看kjkm.dbf表中是否已存在相應(yīng)的科目編號,特別是當(dāng)lengthl>3時,還要看Textl文本框中科目編號的位數(shù)是否符合要求,以及kjkm.dbf表中是否已經(jīng)有相應(yīng)的上級科目編號存在。
b是中間變量,只有當(dāng)b=0時,才可以將輸入至表單文本框中的信息保存在kjkm.dbf表中。也就是說,輸入的信息存盤時,要檢查b的值是否等于0。在程序中,一旦Textl文本框中接收的輸入信息不滿足kjkm.dbf數(shù)據(jù)表對信息的要求,就為b賦以非0值。
賦值語句b=messagebox(“請輸入不低于三位的科目編號!”,48)表示彈出包含“確定”按鈕的提示信息對話框,提示信息為“請輸入不低于三位的科目編號!”,單擊對話框中的“確定”按鈕時,返回值為1,即b=l,表示表單文本框中的信息不符合kjkm.dbf數(shù)據(jù)表對信息的要求,這些信息不能保存在kkkm.dbf數(shù)據(jù)表中。其余幾個類似的為b賦值的語句同理。
mod(1en(allt(kmbhl)),2)=1是一個判斷條件,該條件滿足時,表示輸入表單的科目編號(去掉前后空格)的位數(shù)是奇數(shù);否則輸入的科目編號(去掉前后空格)的位數(shù)是偶數(shù),這時科目編號需要重新輸入。
loca for alt(kmbh)=left(alltfkmbhl),lengthl-2)的作用是在kjkm.dbf表中查找與Textl文本框中已輸入的科目編號相對應(yīng)的上級科目編號。
thisform.textl.value=left(alltfkmbhl),lengthl-2)的作用是將Textl文本框中的內(nèi)容自動變?yōu)榕c所輸入科目編號相對應(yīng)的上級科目編號。
當(dāng)b=0時。將在kjkm.dbf數(shù)據(jù)表中添加一條新記錄,新記錄中各字段的值與表單上對應(yīng)文本框中的數(shù)據(jù)相對應(yīng),實現(xiàn)的方法是先用append blank語句為數(shù)據(jù)表追加一條空白記錄,再用replace…with…語句將各字段的值替換成表單中對應(yīng)的數(shù)據(jù)。
4 信息輸入輔助功能的實現(xiàn)
4.1單擊清空文本框
除科目編號對應(yīng)的Textl文本框外,在單擊科目名稱、借貸方向、期初余額對應(yīng)的Text2、Text3、Text4文本框時,希望能夠清空其中已有的數(shù)據(jù),以便重新輸入。為實現(xiàn)此功能,可在接收字符型數(shù)據(jù)的Text2、Text3文本框的Click事件代碼中將其Value屬性值設(shè)置為一個空格,在接收數(shù)值型數(shù)據(jù)的Text4文本框的Click事件代碼中將其Value屬性值設(shè)置為0。
Text2、Text3文本框的Click事件對應(yīng)的VFP程序代碼為:this.value=space(l)
Text4文本框的Click事件對應(yīng)的VFP程序代碼為:this.value=0.00
4.2取消本次輸入
在信息輸入過程中,有時希望取消本次輸入操作,即在單擊“確定”按鈕前將輸入至表單文本框中的數(shù)據(jù)清除,而不保存這些數(shù)據(jù)到會計科目表kjkm.dbf中。這時,可通過單擊表單中的“取消”按鈕來完成。“取消”按鈕的Click事件對應(yīng)的程序流程是:依次將表單中Textl、Text2、Text3文本框的Value屬性值設(shè)置為一個空格,將Text4數(shù)值型文本框的Value屬性值賦以數(shù)值0,然后刷新表單,使Textl文本框獲得焦點。其中,刷新表單用thisform.refresh實現(xiàn),Textl文本框獲得焦點用thisform.textl.setfocus實現(xiàn)。“取消”按鈕的Click事件對應(yīng)的VFP程序代碼如下。
thisform.textl.value=space(1)
thisform.text2.value=space(1)
thisform.text3.value=space(1)
thisform.text4.value=O.00
thisform.refresh
thisform.text1.setfocus
4.3退出輸入模塊
信息輸入完畢,應(yīng)退出輸入模塊,可通過單擊表單上的“退出”按鈕完成此操作。“退出”按鈕的Click事件對應(yīng)的程序流程是:彈出與提示信息“真的想退出嗎?”相對應(yīng)的對話框,該對話框上有“是”與“否”兩個按鈕,單擊“是”按鈕時釋放表單,單擊“否”按鈕時不釋放表單。彈出包含“是”與“否”按鈕的對話框的功能可用函數(shù)messagebox(“真的想退出嗎?”4+48)來實現(xiàn),單擊“是”按鈕時返回值為6,單擊“否”按鈕時返回值為7。刷新表單可用thisform.release實現(xiàn)。“退出”按鈕的Click事件對應(yīng)的VFP程序代碼如下。
if messagebox(“真的想退出嗎?”,4+48)=6
thisform.release
endif
[收稿日期]2006-07-25