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