童映紅,張 玲
(1.福建省南平職業(yè)中專(zhuān)學(xué)校,福建 南平 353000;2.武夷學(xué)院,福建 武夷山 354300)
隨著我國(guó)計(jì)算機(jī)等級(jí)考試人數(shù)逐年增加,對(duì)于考生的培訓(xùn)工作要求也越來(lái)越重。傳統(tǒng)的人工批改方式,需要投入大量的人力物力。隨著教育機(jī)構(gòu)對(duì)信息系統(tǒng)的建設(shè)力度提高,目前各大教育機(jī)構(gòu)硬件越來(lái)越齊全,越來(lái)越先進(jìn),為試卷自動(dòng)批改系統(tǒng)的建設(shè)提供了硬件基礎(chǔ)。
為了能夠減輕教師們批改作業(yè)時(shí)的負(fù)擔(dān),讓教育機(jī)構(gòu)能夠提高效率。對(duì)于Access數(shù)據(jù)庫(kù)復(fù)雜的批改過(guò)程讓人耗時(shí)費(fèi)力,設(shè)計(jì)一款能夠半自動(dòng)或者自動(dòng)批改作業(yè)的系統(tǒng)顯得意義重大。解決批改Access數(shù)據(jù)庫(kù)作業(yè)的難題,此次設(shè)計(jì)目的是能夠快速大批量地批改作業(yè),省去教師枯燥乏味的重復(fù)動(dòng)作。經(jīng)過(guò)一次設(shè)置批改過(guò)程,能夠多次重復(fù)批改相同的題目。
C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的一種高級(jí)程序設(shè)計(jì)語(yǔ)言。它繼承了C和C++強(qiáng)大功能的同時(shí),還去掉了一些它們?cè)敬嬖诘膹?fù)雜特性(例如沒(méi)有宏以及不允許多重繼承)。
對(duì)象連接與嵌入(Object Linking and Embedding,OLE)不僅是桌面應(yīng)用程序集成,而且還定義和實(shí)現(xiàn)了一種允許應(yīng)用程序作為軟件“對(duì)象”(數(shù)據(jù)集合和操作數(shù)據(jù)的函數(shù))彼此進(jìn)行“連接”的機(jī)制,這種連接機(jī)制和協(xié)議稱(chēng)為組件對(duì)象模型(Component Object Model,COM)。
Access中的OLE對(duì)象數(shù)據(jù)類(lèi)型主要用于將某個(gè)對(duì)象鏈接嵌入到Access數(shù)據(jù)庫(kù)中,OLE對(duì)象字段最大可為1 GB(受磁盤(pán)空間的限制)[1]。Access是一款數(shù)據(jù)庫(kù)應(yīng)用的開(kāi)發(fā)工具軟件,其開(kāi)發(fā)對(duì)象主要是Microsoft JET數(shù)據(jù)庫(kù)和Microsoft SQLServer數(shù)據(jù)庫(kù)。通過(guò)對(duì)比Access數(shù)據(jù)庫(kù)與SQL數(shù)據(jù)庫(kù)可以發(fā)現(xiàn),Access數(shù)據(jù)庫(kù)是小型關(guān)系數(shù)據(jù)庫(kù),適合相對(duì)數(shù)據(jù)量小的應(yīng)用,在處理少量數(shù)據(jù)和單機(jī)訪問(wèn)的數(shù)據(jù)庫(kù)時(shí),會(huì)比SQL數(shù)據(jù)庫(kù)更好,效率更高。Access數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)就是:操作靈活、轉(zhuǎn)移方便、運(yùn)行環(huán)境簡(jiǎn)單[2]。
系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框架
本次設(shè)計(jì)的目的是編寫(xiě)一個(gè)通用型的Access數(shù)據(jù)庫(kù)評(píng)分系統(tǒng),能夠使大部分人自由使用?;谶@個(gè)目的,來(lái)構(gòu)建一個(gè)語(yǔ)法,這個(gè)語(yǔ)法能夠被計(jì)算機(jī)快速解析,并能讓人容易看懂,縮短人與計(jì)算機(jī)之間的鴻溝。對(duì)于計(jì)算機(jī)語(yǔ)言來(lái)說(shuō),函數(shù)這個(gè)概念應(yīng)該是計(jì)算機(jī)教師都能理解的,因此受到啟發(fā),采用函數(shù)這個(gè)概念來(lái)設(shè)計(jì)構(gòu)造評(píng)分語(yǔ)法。
評(píng)分語(yǔ)法解析是為了讓計(jì)算機(jī)和操作人員能夠簡(jiǎn)單快速地分析評(píng)分語(yǔ)法的內(nèi)容。這跟語(yǔ)法構(gòu)造是息息相關(guān)的,正是因?yàn)樵跇?gòu)造語(yǔ)法時(shí)能夠考慮到人與計(jì)算機(jī)之間的差距,構(gòu)造時(shí)采用簡(jiǎn)單并固定格式的評(píng)分語(yǔ)句,在解析過(guò)程中才能被輕易地理解其含有的內(nèi)容。
功能層的意義就在于,針對(duì)語(yǔ)法構(gòu)造中構(gòu)造的每一個(gè)函數(shù)都能夠在功能層中找到相應(yīng)的模塊來(lái)執(zhí)行。每一個(gè)函數(shù)在功能層都有一個(gè)指定的接口,來(lái)對(duì)應(yīng)評(píng)分語(yǔ)法的功能。功能層能夠創(chuàng)造函數(shù)運(yùn)行時(shí)的環(huán)境。
數(shù)據(jù)層的主要功能有兩個(gè):(1)將所有的批改相關(guān)對(duì)象以樹(shù)型結(jié)構(gòu)保存在數(shù)據(jù)庫(kù)中。(2)把每個(gè)函數(shù)具體所要經(jīng)歷構(gòu)造步驟保存在數(shù)據(jù)庫(kù)中。本系統(tǒng)使用Access數(shù)據(jù)庫(kù)來(lái)支撐數(shù)據(jù)層,調(diào)用DAO對(duì)非Access數(shù)據(jù)庫(kù)的VB編程,在數(shù)據(jù)流龐大的時(shí)候可以更改數(shù)據(jù)層,選擇更為合適的數(shù)據(jù)庫(kù)來(lái)支撐,并且優(yōu)化了數(shù)據(jù)層的讀寫(xiě)速度。
OLE模型主要是來(lái)獲取Access數(shù)據(jù)庫(kù)(標(biāo)準(zhǔn)文件和被批改的文件)中的信息,配合數(shù)據(jù)層生成評(píng)分語(yǔ)句和判斷被批改文件的正確與否。通過(guò)OLE讀取Access數(shù)據(jù)庫(kù)方法,根據(jù)對(duì)OLE對(duì)象的特點(diǎn)進(jìn)行分析,使用OLE可以很好地對(duì)Access數(shù)據(jù)庫(kù)進(jìn)行操作[3]。使用DAO類(lèi)作為數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),在MFC類(lèi)庫(kù)中有相關(guān)的DAO類(lèi),通過(guò)定義類(lèi)的對(duì)象并調(diào)用相應(yīng)的成員就可以實(shí)現(xiàn)Access數(shù)據(jù)庫(kù)和表的動(dòng)態(tài)創(chuàng)建[4]。
對(duì)象:對(duì)應(yīng)評(píng)分的類(lèi)型,如表(Table)、查詢(Query)、報(bào)表(Report)。
參數(shù):傳遞給計(jì)算機(jī)的參數(shù),包括要實(shí)現(xiàn)指定功能的對(duì)象的名稱(chēng)、對(duì)象的屬性和其他構(gòu)造值。參數(shù)的數(shù)量由具體的題目要求來(lái)定,最多五個(gè)參數(shù)。每個(gè)參數(shù)都有雙引號(hào),如果參數(shù)本身帶有雙引號(hào)則用“^”代替雙引號(hào)。
值:根據(jù)評(píng)分語(yǔ)句與標(biāo)準(zhǔn)文件計(jì)算出的值。用作判斷作答是否正確。
分?jǐn)?shù):評(píng)分語(yǔ)句所批改的分值。
評(píng)語(yǔ):當(dāng)該語(yǔ)句在批改時(shí)判錯(cuò),則會(huì)附加評(píng)語(yǔ)內(nèi)容。
評(píng)分語(yǔ)句范例:Table("tBranch","字段大小","部門(mén)編號(hào)")="16" #0.5# è字段大小設(shè)置錯(cuò)誤è。
“Table”:表示這條語(yǔ)句在表對(duì)象中執(zhí)行。
“tBranch”:表示表名。
“字段大小”:功能名,表示求字段大小這個(gè)功能。
“部門(mén)編號(hào)”:表中的“部門(mén)編號(hào)”這個(gè)字段。
以上就是功能描述,也就是“=”之前的部分,這些功能會(huì)在標(biāo)準(zhǔn)文件中執(zhí)行,之后會(huì)拋出一個(gè)值,而這個(gè)值也就是在批改學(xué)生作業(yè)時(shí)是否得分的重要依據(jù)?!?6”:在標(biāo)準(zhǔn)文件中執(zhí)行當(dāng)前語(yǔ)句的功能,將會(huì)獲得一個(gè)值。如果在學(xué)生作業(yè)中執(zhí)行以上語(yǔ)句所得到的值與在標(biāo)準(zhǔn)文件中執(zhí)行所得結(jié)果不同,則判定錯(cuò)誤。
#0.5#:表示這條語(yǔ)句批改的分值。
è字段大小設(shè)置錯(cuò)誤è:表示評(píng)語(yǔ)內(nèi)容,批改結(jié)果為錯(cuò)誤時(shí),顯示“字段大小設(shè)置錯(cuò)誤”。
這條語(yǔ)句所批改的內(nèi)容就是,tBranch表中,“部門(mén)編號(hào)”的字段大小等于16,分值為0.5分,錯(cuò)誤時(shí)給出評(píng)語(yǔ)“字段大小設(shè)置錯(cuò)誤”。
Access中有4個(gè)基本對(duì)象(表、查詢、報(bào)表、窗體)。在這4個(gè)基本對(duì)象下,又有許許多多的評(píng)閱點(diǎn)。選擇對(duì)應(yīng)基礎(chǔ)的對(duì)象,就能展開(kāi)相應(yīng)評(píng)分項(xiàng)。輔助生成評(píng)分代碼。
樹(shù)主要由Access數(shù)據(jù)庫(kù)來(lái)保存,通過(guò)在Access建立表“StepTable”和表“TreeTable”來(lái)實(shí)現(xiàn)批改的相關(guān)對(duì)象樹(shù)。
ParamCheck(參數(shù)校驗(yàn)位)本來(lái)的設(shè)想是在輸入?yún)?shù)時(shí)能夠自動(dòng)修正。之后發(fā)現(xiàn)無(wú)法實(shí)現(xiàn),該功能暫時(shí)擱置。
KeyID(功能編號(hào))對(duì)應(yīng)“TreeTable”表中“KeyID”來(lái)實(shí)現(xiàn)評(píng)閱點(diǎn)功能的抓取。
KeyName(外部功能名)就是在樹(shù)上顯示出來(lái)的評(píng)閱點(diǎn)名稱(chēng)。
FunctionName(內(nèi)部對(duì)象名)是選擇相應(yīng)功能后,對(duì)應(yīng)的對(duì)象名,在評(píng)分語(yǔ)句中體現(xiàn)。
在設(shè)計(jì)時(shí),研究發(fā)現(xiàn)參數(shù)(這里的參數(shù)包括功能名)的個(gè)數(shù)最多會(huì)用到5個(gè),但是一般的情況下3個(gè)參數(shù)就足以完成功能實(shí)現(xiàn),而且超出3個(gè)參數(shù)以外的都是需要手動(dòng)輸入的,所以默認(rèn)3個(gè)參數(shù)。
評(píng)分語(yǔ)句的自動(dòng)生成是該系統(tǒng)的重要功能,一次編寫(xiě)終身受用,在全國(guó)計(jì)算機(jī)等級(jí)考試中,題庫(kù)的改變不大,多次批改相同的題目可以使用同一組評(píng)分語(yǔ)句。同時(shí)為了本系統(tǒng)能夠可持續(xù)使用,便利的編寫(xiě)評(píng)分語(yǔ)句也是必不可少的。下面就來(lái)介紹評(píng)分語(yǔ)句的自動(dòng)生成的主要過(guò)程。在生成評(píng)分語(yǔ)句前,要先編寫(xiě)一份標(biāo)準(zhǔn)文件,也就是標(biāo)準(zhǔn)答案。再通過(guò)批改的相關(guān)對(duì)象樹(shù)選取相應(yīng)的批改點(diǎn),將會(huì)自動(dòng)讀取標(biāo)準(zhǔn)文件中對(duì)應(yīng)的數(shù)據(jù),從而自動(dòng)生成批改語(yǔ)句。
通過(guò)OLE模型來(lái)抓取Access數(shù)據(jù)庫(kù)的信息,在生成評(píng)分語(yǔ)句時(shí),OLE模型可抓取標(biāo)準(zhǔn)文件中的信息配合數(shù)據(jù)層來(lái)組成評(píng)分語(yǔ)句。
生成評(píng)分語(yǔ)句時(shí),先要確定對(duì)象名,以及參數(shù)的個(gè)數(shù)和參數(shù)名。通過(guò)批改的相關(guān)對(duì)象樹(shù)來(lái)點(diǎn)選相應(yīng)的對(duì)象和功能名,然后通過(guò)彈出的對(duì)話框單選或者手工輸入獲取參數(shù)。
在主界面上點(diǎn)選“標(biāo)準(zhǔn)文件”,選擇后開(kāi)始編輯評(píng)分語(yǔ)句。然后通過(guò)展開(kāi)批改的相關(guān)對(duì)象樹(shù)的對(duì)象來(lái)選擇相應(yīng)的批改功能。
評(píng)分語(yǔ)句編寫(xiě)完成后需進(jìn)行保存,批改相同作業(yè)時(shí)直接進(jìn)行載入就可以批改。
有了評(píng)分代碼,就可以自動(dòng)批改作業(yè)了,點(diǎn)擊主界面的瀏覽,到作業(yè)所存放的文件夾。即可點(diǎn)擊“搜索”自動(dòng)檢索出格式符合的作業(yè)。然后點(diǎn)擊“評(píng)分標(biāo)準(zhǔn)”載入之前編寫(xiě)好的評(píng)分語(yǔ)句,也就是現(xiàn)在的評(píng)分標(biāo)準(zhǔn)。最后,點(diǎn)擊“開(kāi)始”即可自動(dòng)開(kāi)始批改(見(jiàn)圖2)。批改完成后將會(huì)提示批改完成。
當(dāng)批改完成后,點(diǎn)擊“導(dǎo)出結(jié)果”將批改的結(jié)果以Excel表格導(dǎo)出。導(dǎo)出的結(jié)果展示如圖3所示。
通過(guò)對(duì)教育機(jī)構(gòu)目前的閱卷過(guò)程進(jìn)行分析之后,發(fā)現(xiàn)對(duì)閱卷進(jìn)行系統(tǒng)化、自動(dòng)化,有利于提高教學(xué)質(zhì)量和效率,同時(shí)也保證了閱卷的正確性和及時(shí)性。本設(shè)計(jì)可以在很大程度上提高作業(yè)批改效率,減輕教師的負(fù)擔(dān),避免了由于教師人為因素導(dǎo)致的批改不及時(shí)以及誤改的現(xiàn)象,更為重要的是,該系統(tǒng)可以幫助教師擺脫繁雜的批改任務(wù),可以將更多的精力放在提高教學(xué)質(zhì)量上來(lái)。
圖2 批改作業(yè)
圖3 導(dǎo)出結(jié)果展示
[參考文獻(xiàn)]
[1]廖金輝,李景福.Access數(shù)據(jù)庫(kù)中OLE對(duì)象的巧妙插入[J].電腦開(kāi)發(fā)與應(yīng)用,2004(4):1.
[2]崔再惠.Access數(shù)據(jù)庫(kù)與SQLServer數(shù)據(jù)庫(kù)主要功能的比較[J].鞍山師范學(xué)院學(xué)報(bào),2009(6):51-52.
[3]許俊.Access數(shù)據(jù)庫(kù)中OLE對(duì)象的讀寫(xiě)操作[J].通化師范學(xué)院學(xué)報(bào),2005(4):37-38.
[4]劉仙桃,李道兵.基于C#.NET的Access數(shù)據(jù)庫(kù)創(chuàng)建與訪問(wèn)[J].電腦編程技巧與維護(hù),2011(6):52-53.