童映紅,張 玲
(1.福建省南平職業中專學校,福建 南平 353000;2.武夷學院,福建 武夷山 354300)
隨著我國計算機等級考試人數逐年增加,對于考生的培訓工作要求也越來越重。傳統的人工批改方式,需要投入大量的人力物力。隨著教育機構對信息系統的建設力度提高,目前各大教育機構硬件越來越齊全,越來越先進,為試卷自動批改系統的建設提供了硬件基礎。
為了能夠減輕教師們批改作業時的負擔,讓教育機構能夠提高效率。對于Access數據庫復雜的批改過程讓人耗時費力,設計一款能夠半自動或者自動批改作業的系統顯得意義重大。解決批改Access數據庫作業的難題,此次設計目的是能夠快速大批量地批改作業,省去教師枯燥乏味的重復動作。經過一次設置批改過程,能夠多次重復批改相同的題目。
C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的一種高級程序設計語言。它繼承了C和C++強大功能的同時,還去掉了一些它們原本存在的復雜特性(例如沒有宏以及不允許多重繼承)。
對象連接與嵌入(Object Linking and Embedding,OLE)不僅是桌面應用程序集成,而且還定義和實現了一種允許應用程序作為軟件“對象”(數據集合和操作數據的函數)彼此進行“連接”的機制,這種連接機制和協議稱為組件對象模型(Component Object Model,COM)。
Access中的OLE對象數據類型主要用于將某個對象鏈接嵌入到Access數據庫中,OLE對象字段最大可為1 GB(受磁盤空間的限制)[1]。Access是一款數據庫應用的開發工具軟件,其開發對象主要是Microsoft JET數據庫和Microsoft SQLServer數據庫。通過對比Access數據庫與SQL數據庫可以發現,Access數據庫是小型關系數據庫,適合相對數據量小的應用,在處理少量數據和單機訪問的數據庫時,會比SQL數據庫更好,效率更高。Access數據庫的優點就是:操作靈活、轉移方便、運行環境簡單[2]。
系統總體框架如圖1所示。

圖1 系統總體框架
本次設計的目的是編寫一個通用型的Access數據庫評分系統,能夠使大部分人自由使用。基于這個目的,來構建一個語法,這個語法能夠被計算機快速解析,并能讓人容易看懂,縮短人與計算機之間的鴻溝。對于計算機語言來說,函數這個概念應該是計算機教師都能理解的,因此受到啟發,采用函數這個概念來設計構造評分語法。
評分語法解析是為了讓計算機和操作人員能夠簡單快速地分析評分語法的內容。這跟語法構造是息息相關的,正是因為在構造語法時能夠考慮到人與計算機之間的差距,構造時采用簡單并固定格式的評分語句,在解析過程中才能被輕易地理解其含有的內容。
功能層的意義就在于,針對語法構造中構造的每一個函數都能夠在功能層中找到相應的模塊來執行。每一個函數在功能層都有一個指定的接口,來對應評分語法的功能。功能層能夠創造函數運行時的環境。
數據層的主要功能有兩個:(1)將所有的批改相關對象以樹型結構保存在數據庫中。(2)把每個函數具體所要經歷構造步驟保存在數據庫中。本系統使用Access數據庫來支撐數據層,調用DAO對非Access數據庫的VB編程,在數據流龐大的時候可以更改數據層,選擇更為合適的數據庫來支撐,并且優化了數據層的讀寫速度。
OLE模型主要是來獲取Access數據庫(標準文件和被批改的文件)中的信息,配合數據層生成評分語句和判斷被批改文件的正確與否。通過OLE讀取Access數據庫方法,根據對OLE對象的特點進行分析,使用OLE可以很好地對Access數據庫進行操作[3]。使用DAO類作為數據庫訪問技術,在MFC類庫中有相關的DAO類,通過定義類的對象并調用相應的成員就可以實現Access數據庫和表的動態創建[4]。
對象:對應評分的類型,如表(Table)、查詢(Query)、報表(Report)。
參數:傳遞給計算機的參數,包括要實現指定功能的對象的名稱、對象的屬性和其他構造值。參數的數量由具體的題目要求來定,最多五個參數。每個參數都有雙引號,如果參數本身帶有雙引號則用“^”代替雙引號。
值:根據評分語句與標準文件計算出的值。用作判斷作答是否正確。
分數:評分語句所批改的分值。
評語:當該語句在批改時判錯,則會附加評語內容。
評分語句范例:Table("tBranch","字段大小","部門編號")="16" #0.5# è字段大小設置錯誤è。
“Table”:表示這條語句在表對象中執行。
“tBranch”:表示表名。
“字段大小”:功能名,表示求字段大小這個功能。
“部門編號”:表中的“部門編號”這個字段。
以上就是功能描述,也就是“=”之前的部分,這些功能會在標準文件中執行,之后會拋出一個值,而這個值也就是在批改學生作業時是否得分的重要依據。“16”:在標準文件中執行當前語句的功能,將會獲得一個值。如果在學生作業中執行以上語句所得到的值與在標準文件中執行所得結果不同,則判定錯誤。
#0.5#:表示這條語句批改的分值。
è字段大小設置錯誤è:表示評語內容,批改結果為錯誤時,顯示“字段大小設置錯誤”。
這條語句所批改的內容就是,tBranch表中,“部門編號”的字段大小等于16,分值為0.5分,錯誤時給出評語“字段大小設置錯誤”。
Access中有4個基本對象(表、查詢、報表、窗體)。在這4個基本對象下,又有許許多多的評閱點。選擇對應基礎的對象,就能展開相應評分項。輔助生成評分代碼。
樹主要由Access數據庫來保存,通過在Access建立表“StepTable”和表“TreeTable”來實現批改的相關對象樹。
ParamCheck(參數校驗位)本來的設想是在輸入參數時能夠自動修正。之后發現無法實現,該功能暫時擱置。
KeyID(功能編號)對應“TreeTable”表中“KeyID”來實現評閱點功能的抓取。
KeyName(外部功能名)就是在樹上顯示出來的評閱點名稱。
FunctionName(內部對象名)是選擇相應功能后,對應的對象名,在評分語句中體現。
在設計時,研究發現參數(這里的參數包括功能名)的個數最多會用到5個,但是一般的情況下3個參數就足以完成功能實現,而且超出3個參數以外的都是需要手動輸入的,所以默認3個參數。
評分語句的自動生成是該系統的重要功能,一次編寫終身受用,在全國計算機等級考試中,題庫的改變不大,多次批改相同的題目可以使用同一組評分語句。同時為了本系統能夠可持續使用,便利的編寫評分語句也是必不可少的。下面就來介紹評分語句的自動生成的主要過程。在生成評分語句前,要先編寫一份標準文件,也就是標準答案。再通過批改的相關對象樹選取相應的批改點,將會自動讀取標準文件中對應的數據,從而自動生成批改語句。
通過OLE模型來抓取Access數據庫的信息,在生成評分語句時,OLE模型可抓取標準文件中的信息配合數據層來組成評分語句。
生成評分語句時,先要確定對象名,以及參數的個數和參數名。通過批改的相關對象樹來點選相應的對象和功能名,然后通過彈出的對話框單選或者手工輸入獲取參數。
在主界面上點選“標準文件”,選擇后開始編輯評分語句。然后通過展開批改的相關對象樹的對象來選擇相應的批改功能。
評分語句編寫完成后需進行保存,批改相同作業時直接進行載入就可以批改。
有了評分代碼,就可以自動批改作業了,點擊主界面的瀏覽,到作業所存放的文件夾。即可點擊“搜索”自動檢索出格式符合的作業。然后點擊“評分標準”載入之前編寫好的評分語句,也就是現在的評分標準。最后,點擊“開始”即可自動開始批改(見圖2)。批改完成后將會提示批改完成。
當批改完成后,點擊“導出結果”將批改的結果以Excel表格導出。導出的結果展示如圖3所示。
通過對教育機構目前的閱卷過程進行分析之后,發現對閱卷進行系統化、自動化,有利于提高教學質量和效率,同時也保證了閱卷的正確性和及時性。本設計可以在很大程度上提高作業批改效率,減輕教師的負擔,避免了由于教師人為因素導致的批改不及時以及誤改的現象,更為重要的是,該系統可以幫助教師擺脫繁雜的批改任務,可以將更多的精力放在提高教學質量上來。

圖2 批改作業

圖3 導出結果展示
[參考文獻]
[1]廖金輝,李景福.Access數據庫中OLE對象的巧妙插入[J].電腦開發與應用,2004(4):1.
[2]崔再惠.Access數據庫與SQLServer數據庫主要功能的比較[J].鞍山師范學院學報,2009(6):51-52.
[3]許俊.Access數據庫中OLE對象的讀寫操作[J].通化師范學院學報,2005(4):37-38.
[4]劉仙桃,李道兵.基于C#.NET的Access數據庫創建與訪問[J].電腦編程技巧與維護,2011(6):52-53.