林桂明
(湛江財貿(mào)學(xué)校,廣東 湛江 524094)
用VB開發(fā)中職學(xué)校國家助學(xué)金管理軟件
林桂明
(湛江財貿(mào)學(xué)校,廣東 湛江 524094)
基于實(shí)際應(yīng)用的需求,通過VB6.0開發(fā)平臺,利用ADO對象訪問ACCESS數(shù)據(jù)庫技術(shù),開發(fā)中職學(xué)校國家助學(xué)金管理軟件。該軟件具有三大功能模塊:一是導(dǎo)入導(dǎo)出excel表格數(shù)據(jù)模塊;二是數(shù)據(jù)維護(hù)與查詢模塊;三是統(tǒng)計模塊。該軟件可在Windows操作平臺下獨(dú)立運(yùn)行。軟件界面友好,操作方便,運(yùn)行可靠穩(wěn)定。
VB6.0;ADO對象;ACCESS數(shù)據(jù)庫;excel數(shù)據(jù);國家助學(xué)金
筆者就職于一所國家級重點(diǎn)普通中專學(xué)校,學(xué)校規(guī)模較大,在校生人數(shù)較多,達(dá)7200多人。符合國家助學(xué)金資助條件的學(xué)生比例也較大,06-09年受助學(xué)生總?cè)藬?shù)分別為949、1303、2370、3155,呈上升趨勢。08年以前都是用excel表格來管理受助學(xué)生的信息和助學(xué)金的發(fā)放,雖然excel表格管理比以往紙質(zhì)資料管理有了很大的進(jìn)步,但是由于受助學(xué)生人數(shù)較多且逐年增加,而且每學(xué)期都要發(fā)放幾次助學(xué)金,造成助學(xué)金發(fā)放的統(tǒng)計和查詢的難度大大增加;另外,學(xué)生丟失銀行卡或退學(xué)等情況發(fā)生時,都要不斷地修改數(shù)據(jù),而相關(guān)的excel表格較多時,經(jīng)常是改了這個忘了改另一個,管理起來很不方便;因此,在實(shí)際應(yīng)用中,excel表格在數(shù)據(jù)安全、數(shù)據(jù)查詢、智能分析、數(shù)據(jù)維護(hù)等方面顯得功能不足,許多繁瑣的工作在不斷地重復(fù),造成大量人力、物力的浪費(fèi)。為了提高國家助學(xué)金發(fā)放和管理工作的效率,筆者利用VB平臺和ACCESS數(shù)據(jù)庫管理系統(tǒng)開發(fā)了一套適合中職學(xué)校國家助學(xué)金管理的軟件,也作為VB數(shù)據(jù)庫程序設(shè)計教學(xué)的完整案例。下面介紹該管理軟件的設(shè)計思路、代碼實(shí)現(xiàn)及運(yùn)行界面。
學(xué)生國家助學(xué)金申請成功后,接著就是助學(xué)金的發(fā)放工作了,大概每學(xué)期都有兩次助學(xué)金發(fā)放,發(fā)放工作過程是:打印學(xué)生簽領(lǐng)表,學(xué)生簽領(lǐng)后將表交回來,根據(jù)學(xué)生簽領(lǐng)的情況(有些學(xué)生銀行卡丟失了或有的學(xué)生請假了等等)修改數(shù)據(jù),進(jìn)行發(fā)放處理,然后導(dǎo)出發(fā)放表excel電子文檔和打印紙質(zhì)發(fā)放表送給財務(wù)室,財務(wù)室根據(jù)發(fā)放表到銀行發(fā)放助學(xué)金,最后等銀行發(fā)放無誤后進(jìn)行發(fā)放匯總。根據(jù)發(fā)放流程,設(shè)計出該軟件的功能模塊圖如下。
圖1.國家助學(xué)金管理軟件功能模塊
目前,發(fā)開數(shù)據(jù)庫應(yīng)用軟件使用的數(shù)據(jù)庫管理系統(tǒng)有很多,如Oracle、SQL Server、Sybase、Access等等,由于Access適合開發(fā)小型數(shù)據(jù)庫應(yīng)用軟件,數(shù)據(jù)庫功能比較齊全,是Office辦公軟件包的一個組成部份,大多數(shù)電腦都安裝有Office軟件,這樣軟件發(fā)布時不用額外安裝其他的數(shù)據(jù)庫管理軟件,因此該軟件采用Access數(shù)據(jù)庫既可以滿足數(shù)據(jù)量的要求,又有運(yùn)行平臺普及的優(yōu)勢。首先設(shè)計該軟件的數(shù)據(jù)庫“助學(xué)金.mdb”,根據(jù)該軟件數(shù)據(jù)需要,數(shù)據(jù)庫包含4個基本數(shù)據(jù)表,分別是:年級、班級、匯總表、發(fā)放表,其中匯總表和發(fā)放表根據(jù)年級的增加而生成新的表,如增加2009年級,就通過復(fù)制“匯總表”和“發(fā)放表”分別生成“2009級匯總表”和“2009級發(fā)放表”,這樣每一年級的匯總表和發(fā)放表數(shù)據(jù)分開存放,方便管理數(shù)據(jù)。
VB提供了多種鏈接Access數(shù)據(jù)庫的方法,該軟件利用面向?qū)ο蟮腁DO技術(shù)實(shí)現(xiàn)對數(shù)據(jù)庫的訪問。ADO(ActiveX Data Object)是ActiveX數(shù)據(jù)對象,是Microsoft公司開發(fā)數(shù)據(jù)庫應(yīng)用程序面向?qū)ο蟮男陆涌凇?/p>
首先在工程中引用“Microsoft ActiveX DataObjects 2.1 Library”。然后在窗體的通用聲明部分分別定義一個
Connection對象和RecordSet對象:
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
接著在窗體的Form_Load()事件中新建一個Connection對象的實(shí)例并將它賦給conn數(shù)據(jù)源,新建一個Recordset對象的實(shí)例并使用Recordset對象的Open方法打開數(shù)據(jù)庫助學(xué)
金.mdb的年級表,此時"select * from 班級"查詢結(jié)果便是記錄集rs的數(shù)據(jù)源,要訪問不同的數(shù)據(jù)表,只需更改查詢字符串"select * from 班級"即可。
Private Sub Form_Load()
Set cnn = New ADODB.Connection Set rs = New ADODB.Recordset cnn.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "助學(xué)金.mdb;Persist Security Info=False"
cnn.CursorLocation = adUseClient
cnn.Open
rs.Open "select * from 班級", cnn, adOpenDynamic, adLockPessimistic
End Sub
由于學(xué)生信息數(shù)據(jù)“匯總表”是每班的班主任整理好并錄入到excel電子文檔發(fā)來的,如果還要將學(xué)生信息一個個錄入到軟件中就重復(fù)工作,費(fèi)時費(fèi)力,所以將excel數(shù)據(jù)表一次導(dǎo)入到數(shù)據(jù)庫中的數(shù)據(jù)表“匯總表“是很好的處理方法。由于要鏈接excel表,必須先在工程中引用excel對象庫(采用Microsoft Excel 11.0 Object Library)。然后編寫connection對象字符串為 "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & xname & ";extended properties=excel 8.0;persist security info=false",Recordset對象字符串為 "select * from [excel 8.0;database=" & xname & "].[sheet1$]"。最后使用SQL的insert into語句將excel數(shù)據(jù)一條條地插入數(shù)據(jù)表中。
另外,要將“匯總表”和“發(fā)放表”保存成excel文件方便以后數(shù)據(jù)共享和分析,所以要導(dǎo)出數(shù)據(jù)到excel文件。由于“匯總表”表頭較復(fù)雜,所以不直接用VB代碼編寫表頭,而是將“匯總表”的excel表頭保存為模板(excel文件),這樣每次導(dǎo)出匯總表時,先復(fù)制表頭模板,然后再一條條記錄地寫到表頭下面,省去不少代碼。而“發(fā)放表”的表頭較簡單,就直接用VB代碼編寫。
為了實(shí)現(xiàn)修改數(shù)據(jù)和刪除數(shù)據(jù),必須先選擇記錄,但MSHFlexGrid控件沒有自含的CheckBox復(fù)選框選項,為了界面友好操作,在第一列的所有單元中顯示沒有選中的復(fù)選框小圖片,當(dāng)用戶用鼠標(biāo)單擊該單元時,就在該單元格中顯示“√”,表示選中狀態(tài)來模擬CheckBox復(fù)選框,具體代碼實(shí)現(xiàn)如下:
該軟件數(shù)據(jù)查詢部分采用SQL(結(jié)構(gòu)化查詢語言)中的select語句編寫查詢代碼,支持多條件組合查詢,支持模糊查詢,查詢速度快且準(zhǔn)。
flexdata '調(diào)用過程,在MSFlexGrid控件中顯示rs記錄集數(shù)據(jù)。
Label2.Caption = "人數(shù):" & rs.RecordCount & "人" Label2.Visible = True
End Sub
根據(jù)統(tǒng)計條件查詢出記錄集rs,并將數(shù)據(jù)顯示在MSHFlexGrid中,最后調(diào)用過程Sumdata()將總?cè)藬?shù)和每次發(fā)放的總金額統(tǒng)計出來顯示在MSHFlexGrid表格下面。由于發(fā)放次數(shù)是不確定的,動態(tài)增加的,一般一個學(xué)期最多發(fā)放兩次,總共有4個學(xué)期,所以一個學(xué)生在兩年內(nèi)大概有8次左右的助學(xué)金發(fā)放,做統(tǒng)計時,必須將每一次的發(fā)放總?cè)藬?shù)和總金額都統(tǒng)計出來,所以用兩個數(shù)組b(10)和a(10)根據(jù)發(fā)放次數(shù)分別存放每次的發(fā)放總?cè)藬?shù)和總金額。界面和代碼如下:
該軟件很好地利用了原有的excel表格數(shù)據(jù),實(shí)現(xiàn)了與excel表格數(shù)據(jù)的雙向便捷交換,同時提供了較強(qiáng)的數(shù)據(jù)維護(hù)、查詢與統(tǒng)計功能;而且可在Windows操作平臺下獨(dú)立運(yùn)行,軟件界面友好,操作方便,運(yùn)行可靠穩(wěn)定。實(shí)踐證明,比用excel處理國家助學(xué)金數(shù)據(jù)方便快捷,數(shù)據(jù)查詢統(tǒng)計又準(zhǔn)又快,大大提高了工作效率。在教學(xué)方面,該軟件也為中職學(xué)校VB數(shù)據(jù)庫程序設(shè)計教學(xué)提供了一個完整案例。
[1]高春艷,李艷,谷偉東.數(shù)據(jù)庫開發(fā)關(guān)鍵技術(shù)與實(shí)例應(yīng)用[M].北京:人民郵電出版社,2004:115-122.
[2]陳虹頤,何春.VB6.0中利用ADO對象實(shí)現(xiàn)數(shù)據(jù)庫編程[J].甘肅科技,2007,(4).
[3]艾寧,周歡懷.用Visual Basic 6.0語言開發(fā)氣體溶解度計算軟件[J].浙江化工,2004,(3):24-26.
(責(zé)任編校:燕廉奚)
G718.3
A
1673-2219(2010)08-0068-04
2010-03-20
林桂明(1971-),女,廣東湛江遂溪人,湛江財貿(mào)學(xué)校講師,從事研究方向?yàn)橛嬎銠C(jī)教學(xué)。