陳永松
(廣東松山職業(yè)技術(shù)學(xué)院計算機系,廣東韶關(guān)512126)
為滿足計算機基礎(chǔ)多元化實驗教學(xué)需要,需要為學(xué)生提供“紙質(zhì)教材-網(wǎng)絡(luò)學(xué)習(xí)平臺-學(xué)習(xí)輔助光盤-實驗平臺”四位一體的立體化教學(xué)資源[1]。為幫助學(xué)生及時了解知識點的掌握程度,網(wǎng)絡(luò)、光盤及實驗平臺,都應(yīng)實現(xiàn)自動閱卷,其中Office部分是閱卷的難點。由于網(wǎng)絡(luò)、光盤及實驗平臺的載體各不相同,需要開發(fā)多個系統(tǒng)才能實現(xiàn)。目前,關(guān)于Office操作題自動閱卷的研究很多,但現(xiàn)有的閱卷方案普遍只針對某單一系統(tǒng)開發(fā),如果使用傳統(tǒng)的閱卷方案,則多個系統(tǒng)的開發(fā)不可避免地出現(xiàn)重復(fù)編碼,由于Office自動閱卷編碼工作量很大,重復(fù)編碼的代價非常高。本文就Office文檔的自動閱卷提供一個可行的方案,開發(fā)一個Office操作題閱卷組件,它具有中立接口[2]的特征,是一個松耦合[3]的系統(tǒng),為多個需要實現(xiàn)自動閱卷功能的系統(tǒng)提供服務(wù),不同的系統(tǒng)通過服務(wù)可以快速實現(xiàn)Office操作題的自動閱卷。
我國關(guān)于Office閱卷系統(tǒng)的研究不少,其中主流的研究方案是通過引用Office相關(guān)組件,利用VBA技術(shù)[4-7]提取Office文檔信息和標(biāo)準(zhǔn)答案比較,實現(xiàn)自動閱卷。這些研究多半是基于某個具體系統(tǒng)[4-6]的Office自動閱卷設(shè)計;將復(fù)雜的Office自動閱卷進(jìn)行封裝,使之用于不同的應(yīng)用程序調(diào)用的研究非常少。有一種方案是將閱卷功能封裝為ActiveX控件[7],不同開發(fā)語言可調(diào)用該控件進(jìn)行閱卷,這是一種很好的閱卷方案。但該方案采取緊耦合方式,將界面和數(shù)據(jù)庫操作也進(jìn)行了封裝,不適合開發(fā)不同風(fēng)格的閱卷系統(tǒng),也限制了閱卷系統(tǒng)只能使用一種數(shù)據(jù)庫進(jìn)行開發(fā)。本文提出了一種可行方案,將自動閱卷的操作封裝為組件,通過中立性接口,靈活地結(jié)合應(yīng)用程序,組成新軟件實現(xiàn)不同需要的自動閱卷。組件內(nèi)部不含任何界面和數(shù)據(jù)庫操作,不同的閱卷系統(tǒng)可以使用不同風(fēng)格的操作界面,也可以使用任何的一種數(shù)據(jù)庫。
閱卷組件實現(xiàn)的主要功能:①Office文檔評分,即將考生完成的Office文檔(以下簡稱考生文檔)和標(biāo)準(zhǔn)答案進(jìn)行比較,實現(xiàn)對Office文檔的評分;②標(biāo)準(zhǔn)答案生成,即從教師完成的具有標(biāo)準(zhǔn)答案性質(zhì)的Office文檔(以下簡稱樣文)提取信息作為標(biāo)準(zhǔn)答案。
閱卷組件的總體設(shè)計目標(biāo)是在不同的應(yīng)用程序和Office文檔之間,開發(fā)出一個提供自動閱卷服務(wù)的組件。它適用于不同的開發(fā)模式、不同的程序設(shè)計語言和不同的數(shù)據(jù)庫管理系統(tǒng)。閱卷組件和應(yīng)用程序、Office文檔的關(guān)系,如圖1所示。
圖1 閱卷組件、應(yīng)用程序、Office文檔關(guān)系圖
(1)閱卷組件。閱卷組件實現(xiàn)Office文檔評分和標(biāo)準(zhǔn)答案生成兩大功能。本系統(tǒng)通過.NET“類庫”[8]功能開發(fā)閱卷組件,最終生成動態(tài)鏈接庫(DLL)[9]文件,并通過COM[10]接口,生成COM文件實現(xiàn)其他程序語言對.NET的DLL的調(diào)用。
(2)閱卷信息數(shù)據(jù)。閱卷組件中每個對象的每個屬性都對應(yīng)于一種特殊的含義,只有正確的輸入各個屬性的值,才能完成標(biāo)準(zhǔn)答案的錄入和閱卷評分。在本系統(tǒng)中,各個屬性的含義以表格形式進(jìn)行存儲。
3.2.1 設(shè)計思路
閱卷組件的主要工作流程是通過VBA技術(shù)調(diào)用Word、Excel、PowerPoint的 COM 組件的不同對象和屬性,達(dá)到自動閱卷和答案錄入的目的。
目前,利用VBA技術(shù)實現(xiàn)Office閱卷功能,具有代表性的設(shè)計方案有四種:①針對每個試題編寫相應(yīng)的閱卷程序段[4],這種方案新增試題必須修改程序。②將每種Office對象都定義成一張數(shù)據(jù)表存儲在數(shù)據(jù)庫中,將記錄中的數(shù)據(jù)和文檔的對應(yīng)知識點進(jìn)行比較實現(xiàn)閱卷[5],這種方案新增考核點必須修改數(shù)據(jù)庫結(jié)構(gòu)。③定義測試點,同時打開考生文檔和樣文,進(jìn)行比較評分[6],這種方案閱卷時需打開樣文,系統(tǒng)的安全時較低。④通過標(biāo)準(zhǔn)閱卷語言讀取相關(guān)文檔,獲取“閱卷標(biāo)準(zhǔn)值”和“操作結(jié)果值”,對兩者進(jìn)行比較評分[7],這種方案設(shè)計了兩個可視化界面實現(xiàn)標(biāo)準(zhǔn)閱卷語言生成和自動閱卷兩大功能,界面的封裝影響了系統(tǒng)的可擴展性,也限制了不同風(fēng)格的閱卷系統(tǒng)只能使用一種風(fēng)格的操作界面。
由于以上方案都存在一定缺陷,閱卷組件采取內(nèi)外有別的一種設(shè)計方案。在內(nèi)部設(shè)計方面,將每種文檔的所有對象定義為一個實體類,通過類型(ClassNo)屬性,識別不同的對象。系統(tǒng)內(nèi)部采用實體類封裝操作數(shù)據(jù)[11],操作類操作實體類的模式實現(xiàn)閱卷服務(wù)。在對外接口方面,將實體類數(shù)據(jù)進(jìn)行自定義序列化,生成閱卷字符串序列,采用中立的方式定義對外接口,使之獨立于編程語言和數(shù)據(jù)庫管理系統(tǒng),為不同的應(yīng)用程序提供閱卷服務(wù)。這種方案避免了安全性、界面封裝、重復(fù)定位等問題,同時多答案、多定位的處理都比較容易。
3.2.2 閱卷實體類設(shè)計
為了保證在后期設(shè)計中對外接口始終保持不變[12]。本系統(tǒng)只設(shè)計了三個實體類:Word類、Excel類和PowerPoint類,通過classNo屬性區(qū)分不同的操作對象,不同對象的操作點屬性名使用統(tǒng)一名稱,如第m個操作點屬性用x[m]。由于三個實體類有不少屬性是相同的,因此設(shè)計一個classData類為父類,然后通過繼承生成Word類、Excel類和PowerPoint類。閱卷組件實體類圖如圖2所示。實體類圖屬性說明:score:操作實例總得分;err:錯誤信息;arg0、arg1:特殊參數(shù);location:閱卷點地點(位置);Sheetn:工作表序號;Address:單元格地址或范圍;SlideNo:幻燈片序號;Position:對象序號;n[m]:第m個操作點分值。特殊參數(shù)用于特殊閱卷信息的輸入。
3.2.3 閱卷操作類設(shè)計
操作類目的是對實體類進(jìn)行操作。由Word操作類、Excel操作類和PowerPoint操作類組成,由于三者的設(shè)計方法相似,本文以Word操作類為例進(jìn)行介紹。
圖2 閱卷組件實體類圖
Word操作類分為Word評分類和Word標(biāo)記類。評分類用于考生文檔評分,標(biāo)記類用于標(biāo)準(zhǔn)答案的生成和檢驗。由于標(biāo)準(zhǔn)答案的生成只需在評分的基礎(chǔ)上增加少數(shù)語句就可實現(xiàn),而且這些語句的執(zhí)行對性能幾乎無影響,為了提高編寫代碼的效率,系統(tǒng)在設(shè)計時,通過同一個操作來實現(xiàn),該操作用活動圖表示,如圖3所示。
圖3 打分操作活動圖
3.2.4 閱卷接口設(shè)計
本系統(tǒng)內(nèi)部采用面向?qū)ο蠓椒?gòu)建自動閱卷服務(wù),但為了使不同的應(yīng)用程序都能利用服務(wù),在對外接口上需要對實體類數(shù)據(jù)進(jìn)行序列化[13],以實現(xiàn)外部應(yīng)用程序和閱卷組件的聯(lián)系松耦合。本系統(tǒng)中采取自定義序列的方法。
系列化是將同一題的若干幾個實體對象轉(zhuǎn)換為字符串。例如檢驗隸書20號新建樣式,并將新建樣式應(yīng)用到文檔第3段,每個操作點1分。實體類數(shù)據(jù)如表1所示(省略了非閱卷屬性)。經(jīng)過系列化結(jié)果為ClassNo11||x0,新建||n0,1||x1,隸書||1||x4,20||1||<split>Location3||ClassNo1||x29,新建||1||。
本系統(tǒng)以系列化的數(shù)據(jù)作為接口,外部應(yīng)用程序只需要傳遞系列化的數(shù)據(jù),不需要了解閱卷組件的實現(xiàn)過程就可以實現(xiàn)閱卷。在組件內(nèi)部,將數(shù)據(jù)反序系列化,形成實體類數(shù)據(jù),利用內(nèi)部功能實現(xiàn)閱卷。
表1 閱卷點實體類數(shù)據(jù)
3.2.5 閱卷數(shù)據(jù)生成接口設(shè)計
手工輸入閱卷數(shù)據(jù)容易出錯,系統(tǒng)通過對外接口,提供檢測點生成閱卷數(shù)據(jù)功能。例如要生成上述樣式的閱卷數(shù)據(jù),檢測點數(shù)據(jù)輸入ClassNo11||arg0新建||x0||1||x1||1||x4||1||<split>Location3||ClassNo1||x29||1||,然后系統(tǒng)就可以自動從樣文中獲取隸書等信息,生成閱卷數(shù)據(jù)。
閱卷組件內(nèi)部沒有進(jìn)行任何數(shù)據(jù)庫操作,但提倡外部應(yīng)用程序通過數(shù)據(jù)庫存儲閱卷數(shù)據(jù),即提供一個字段存儲閱卷系列化數(shù)據(jù),至于使用何種數(shù)據(jù)庫、數(shù)據(jù)庫的具體結(jié)構(gòu)如何完全由外部程序員決定。圖4為我院考試系統(tǒng)數(shù)據(jù)庫關(guān)系圖(省略了與閱卷無關(guān)的表及字段)。
圖4 考試系統(tǒng)閱卷數(shù)據(jù)庫關(guān)系圖
關(guān)系圖中MarkSeries為閱卷系列化數(shù)據(jù)。這種設(shè)計方法,由于閱卷數(shù)據(jù)保存在一個字段中,因此不必為每個試題編寫閱卷程序段[4],也不需要將Office對象都定義成一張數(shù)據(jù)表[5],閱卷時也不需要打開樣文[6]。
4.2.1 自動生成閱卷數(shù)據(jù)
現(xiàn)有Office閱卷方案關(guān)于自動生成閱卷數(shù)據(jù)的研究非常少,有一種方法是利用可視化閱卷標(biāo)準(zhǔn)語言生成器自動生成閱卷數(shù)據(jù)[7],這種方法需要根據(jù)不同類型設(shè)置不同輸入界面,通過界面輸入不同考核點的標(biāo)準(zhǔn)答案。這種方法界面設(shè)置復(fù)雜,手工錄入答案費時費力、容易出錯。建立基于組件的自動生成閱卷數(shù)據(jù)程序的基本設(shè)計流程如下:根據(jù)閱卷信息表數(shù)據(jù)動態(tài)生成文本框等用戶界面[14],用戶選擇考核點、輸入考核點分?jǐn)?shù)和相關(guān)參數(shù),生成檢測點數(shù)據(jù),根據(jù)檢測點數(shù)據(jù)調(diào)用組件,讀取樣文生成閱卷序列化數(shù)據(jù)并保存到數(shù)據(jù)庫。和閱卷標(biāo)準(zhǔn)語言生成器通過手工輸入標(biāo)準(zhǔn)答案[7]的方法相比較,這種方法操作效率高、正確率高,所有類型操作都可以采用統(tǒng)一界面進(jìn)行設(shè)計,簡化了界面設(shè)計的過程。
4.2.2 自動閱卷
生成閱卷系列化數(shù)據(jù)之后,建立基于組件的自動閱卷程序,只需利用組件內(nèi)部功能打開考生文檔,返回評分信息并保存到數(shù)據(jù)庫就可以完成。我院考試系統(tǒng)工作流程如下:考生進(jìn)入考試后自動抽題,生成若干條不含成績的選題記錄,考生考完交卷,根據(jù)選題記錄,提取閱卷系列化數(shù)據(jù),調(diào)用組件讀取考生文檔答題信息,通過組件內(nèi)部功能進(jìn)行比較評分,并將評分結(jié)果寫入到得分字段中。本系統(tǒng)自動閱卷功能主要通過組件內(nèi)部功能完成,外部應(yīng)用程序只要編寫少量代碼就可以實現(xiàn)自動閱卷,外部應(yīng)用程序和組件的關(guān)系為松耦合,當(dāng)組件升級時,由于接口未變,外部應(yīng)用程序不需要修改就可以實現(xiàn)閱卷功能的擴充。和緊耦合的閱卷方案相比較,通用性和可移植性都更高[15]。
通過對現(xiàn)行Office閱卷系統(tǒng)進(jìn)行分析,提出Office
閱卷組件方案,它是一種松耦合的系統(tǒng),實現(xiàn)了跨模式、跨語言、跨數(shù)據(jù)庫應(yīng)用。針對現(xiàn)有方案的不足,提出一種內(nèi)外有別的設(shè)計方案,內(nèi)部采用面向?qū)ο蠓绞綄崿F(xiàn)閱卷,對外通過實體類數(shù)據(jù)序列化實現(xiàn)中立性接口,使系統(tǒng)在整體上具有面向服務(wù)的特征。這種閱卷方案可以為多個不同系統(tǒng)提供自動閱卷服務(wù),以滿足多元化實驗教學(xué)的需要。
[1] 杜炫杰.葉惠文.胡欽太.大學(xué)計算機基礎(chǔ)課程多元立體化教學(xué)資源的設(shè)計[J].中國大學(xué)教學(xué),2011(5):53-54.
[2] 楊智勇,趙瑞鋒,何 盼,等.基于AJAX的自定義報表中間件平臺的研究與實現(xiàn)[J].計算機工程與設(shè)計,2009,30(3):713-715.
[3] 陳萱華,楊 玲.服務(wù)構(gòu)件技術(shù)在實驗室管理平臺的應(yīng)用[J].實驗室研究與探索,2009,28(6):185-187.
[4] 于志奇.Office操作題自動閱卷的探討與實現(xiàn)[J].電腦知識與技術(shù),2009,5(9):2268-2269.
[5] 朱克武.Office辦公軟件改卷系統(tǒng)的研究[J].計算機與現(xiàn)代化,2011(4):145-148.
[6] 湯克明,陳 崚.Word自動閱卷系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2008,44(35):69-72.
[7] 郭嘉喜.基于ActiveX的Office操作自動閱卷控件的設(shè)計[J].煤炭技術(shù),2010,29(4):45-47.
[8] 桑玉真,陳軍華.提高基于.NET Web服務(wù)類庫的信息交換平臺的可靠性和安全性方案[J].計算機應(yīng)用與軟件,2010,27(4):194-196.
[9] 姜林美.利用WIN32動態(tài)鏈接庫的TFTP服務(wù)器的設(shè)計與實現(xiàn)[J].華僑大學(xué)學(xué)報(自然科學(xué)版),2011,32(2):178-181.
[10] 李美滿,夏漢鑄,易德成.基于COM技術(shù)的通用考試系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2007,43(1):245-248.
[11] 寧躍飛,李艷萍.探析實體類數(shù)據(jù)庫訪問技術(shù)[J].中國科技博覽,2009(19):115.
[12] 丁立新,王建中,林岳松.基于組件的算法測試系統(tǒng)的建模與實現(xiàn)[J].計算機應(yīng)用與軟件,2008,25(5):38-39.
[13] 高立群,俞家文,丁俊松.NET Framework中序列化與反序列化方法的分析與應(yīng)用[J].微計算機應(yīng)用,2007,28(11):1178-1182
[14] 侯彥娥,黨蘭學(xué),魏 丹,等.Web用戶界面動態(tài)生成工具的設(shè)計與實現(xiàn)[J].河南大學(xué)學(xué)報(自然科學(xué)版),2011,41(6):641-644.
[15] 劉 冰.最大化Java代碼可重用性的策略研究[J].福建電腦,2010,26(3):64-65.