羅定福, 陳永松, 吳權(quán)軒
(廣東松山職業(yè)技術(shù)學(xué)院 計算機(jī)系, 韶關(guān) 512126)
大學(xué)計算機(jī)基礎(chǔ)課程最重要的組成部分是Office。就Office文檔的自動改卷提供一個可行的方案,開發(fā)Office操作題改卷中間件平臺[1],通過中間件平臺連接不同的考試系統(tǒng)和Office文檔,不同的考試系統(tǒng)不需要再寫復(fù)雜的代碼,只需要調(diào)用中間件平臺的相關(guān)組件就可以快速實(shí)現(xiàn)Office自動改卷,當(dāng)教學(xué)內(nèi)容更新之后,考試系統(tǒng)不需要改動,只要使用最新版的中間件即可。
國內(nèi)高職院校關(guān)于Office改卷系統(tǒng)的研究主要有兩種,一是構(gòu)造一個Office軟件的仿真系統(tǒng)[2],通過仿真系統(tǒng)模擬Office軟件的環(huán)境界面,考試時記錄考生的操作步驟來進(jìn)行自動改卷;二是通過引用相關(guān)組件,利用VBA技術(shù)[3、4、5]提取文檔信息和標(biāo)準(zhǔn)答案比較實(shí)現(xiàn)自動改卷。文章提出一種可行方案,將自動改卷的操作封裝為中間件,不同語言不同的DBMS,只要了解中間件的接口,編寫少量代碼就可以實(shí)現(xiàn)對Office文檔的自動改卷。
開發(fā)出一個Office操作題改卷中間件,給軟件開發(fā)者提供了Office文檔自動改卷的數(shù)據(jù)存取層,屏蔽Office程序的接口細(xì)節(jié)和實(shí)現(xiàn)邏輯,做成組件式的系統(tǒng)[6],需要時將不同組件進(jìn)行組裝,建立新系統(tǒng)的代價將大大降低。
改卷中間件實(shí)現(xiàn)的主要功能有兩個。一是將考生完成的Office文檔(以下簡稱考生文檔)和標(biāo)準(zhǔn)答案進(jìn)行比較,實(shí)現(xiàn)對文檔的評分;二是從教師完成的具有標(biāo)準(zhǔn)答案性質(zhì)的文檔(以下簡稱樣文)提取信息作為標(biāo)準(zhǔn)答案。
改卷中間件平臺的總體設(shè)計目標(biāo)是在應(yīng)用程序和Office文檔之間,開發(fā)出一個實(shí)現(xiàn)應(yīng)用程序?qū)ξ臋n進(jìn)行自動改卷的專業(yè)中間件平臺。通過改卷中間件平臺就可以控制Office實(shí)現(xiàn)自動改卷,可以用不同的程序設(shè)計語言和DBMS進(jìn)行調(diào)用,實(shí)現(xiàn)可重用性、可維護(hù)性。
改卷組件實(shí)現(xiàn)Office文檔評分和標(biāo)準(zhǔn)答案生成兩大功能。為了減輕開發(fā)難度,改卷組件采用與VBA技術(shù)語法相近的VB.NET作為組件開發(fā)語言。利用“類庫”[7]開發(fā)改卷組件,最終生成動態(tài)鏈接庫(DLL)文件。通過.NET平臺提供的工具,可以將DLL偽造一個COM接口[8]并注冊到系統(tǒng)中。通過這個偽COM接口來實(shí)現(xiàn)對.NET的DLL的調(diào)用。本系統(tǒng)改卷信息點(diǎn)存儲在Access表中。調(diào)用時,可以根據(jù)需要將數(shù)據(jù)表導(dǎo)入到不同的DBMS中。
3.2.1 改卷組件建模
改卷中間件平臺最重要的組成部分是改卷組件,它的主要工作流程是通過VBA技術(shù)調(diào)用Word、Excel、PowerPoint的COM組件的不同對象和屬性,達(dá)到自動改卷和答案錄入的目的。改卷組件分為實(shí)體類和操作類。實(shí)體類封裝要操作的數(shù)據(jù),隔離代碼對數(shù)據(jù)庫的依賴[9],不同數(shù)據(jù)庫可以通過組件的接口發(fā)送和接收實(shí)體類數(shù)據(jù)。而操作類是依據(jù)實(shí)體類的數(shù)據(jù)對文檔進(jìn)行的操作從而實(shí)現(xiàn)自動改卷和答案生成功能。
1)實(shí)體類
如果將每種操作類型定義為一個實(shí)體類[4],每個操作點(diǎn)定義為一個屬性,則不僅設(shè)計非常復(fù)雜,而且會降低組件的可重用性。為了保證在后期設(shè)計中對外接口始終保持不變[10]。只設(shè)計了三個實(shí)體:Word、Excel、PowerPoint,分別對應(yīng)于Word、Excel、PowerPoint所有的操作,在類的實(shí)例中通過類型號(num)屬性區(qū)分該實(shí)例為何種類型的操作,不同實(shí)例的操作點(diǎn)屬性名使用統(tǒng)一名稱,即第1個操作點(diǎn)屬性用point[1],第r個用point [r]。同時,由于Word、Excel、PowerPoint實(shí)體有不少屬性是相同的,因此設(shè)計一個parert entity為父類,然后通過繼承生成Word entity、Excel entity、PowerPoint entity。實(shí)體圖如圖1所示。
圖1 實(shí)體圖
實(shí)體圖屬性說明:mark:操作實(shí)例總得分;error:錯誤信息;para1、para2:特殊參數(shù);position:改卷點(diǎn)地點(diǎn)(位置);sheetnum:工作表序號;cell address:單元格地址或范圍;slide num:幻燈片序號;position:對象序號;point mark[1]:第1個改卷點(diǎn)分值,point[r]:第r個改卷點(diǎn)分值。特殊參數(shù)用于特殊改卷信息的輸入,如替換操作的替換次數(shù)等。
2)操作類
改卷組件操作類實(shí)現(xiàn)本系統(tǒng)兩個主要功能:1.讀取考生文檔,返回某項(xiàng)操作得分;2.讀取樣文,獲取某項(xiàng)操作不同改卷點(diǎn)標(biāo)準(zhǔn)答案信息。操作類由Word操作類、Excel操作類、PowerPoint操作類組成,三者的設(shè)計方法相似,以Word操作類為例進(jìn)行介紹。
Word操作類分為Word評分類(WordMark類)和Word標(biāo)記類(WordTab類)。評分類實(shí)現(xiàn)考生文檔評分,標(biāo)記類實(shí)現(xiàn)標(biāo)準(zhǔn)答案的生成和檢驗(yàn)。評分類和標(biāo)記類都是對Word文檔進(jìn)行操作,有不少操作和屬性是相同的,因此先設(shè)計一個基礎(chǔ)Word程序類,然后通過繼承生成評分類和標(biāo)記類。在評分類中, Mark方法功能為考生Word文檔評分,在標(biāo)記類中,AnswerTab方法功能為樣文標(biāo)準(zhǔn)答案的生成和檢驗(yàn),BlankTab用于對空白文檔評分,空白文檔評分主要是為了避免樣文和空白文檔某項(xiàng)改卷點(diǎn)結(jié)果相同,從而出現(xiàn)白送分的情況。Tab、BlankTab方法的評分與AnswerTab方法中檢驗(yàn)答案的操作流程基本相同,而標(biāo)準(zhǔn)答案的生成只需在上述基礎(chǔ)上增加少數(shù)語句就可實(shí)現(xiàn),而且這些語句的執(zhí)行對性能幾乎無影響,為了提高編寫代碼的效率,提高系統(tǒng)的可重用性,系統(tǒng)在設(shè)計時,上述3個方法通過同一個操作來實(shí)現(xiàn)。
在實(shí)際設(shè)計中,上述操作通過第三個類Word打分類(WordTabing)的評分方法(WordMark)實(shí)現(xiàn),為了避免每次調(diào)用WordMark方法都進(jìn)行實(shí)例化,WordMark方法聲明為靜態(tài)方法[11](VB.NET稱為共享方法)。
出于系統(tǒng)運(yùn)行效率及教師生成答案的操作習(xí)慣的考慮,評分類調(diào)用WordMark方法采取的操作方式是對考生文檔的多個操作實(shí)例同時進(jìn)行評分,而標(biāo)記類調(diào)用WordMark方法采取的操作方式是對樣文或空白文檔的單個操作實(shí)例進(jìn)行檢驗(yàn)和生成答案。這樣就存在一個矛盾,評分類調(diào)用時按照多個實(shí)例的集合進(jìn)行操作,標(biāo)記類調(diào)用時對單個實(shí)例進(jìn)行操作,為了即能夠?qū)线M(jìn)行操作也能對單個對象進(jìn)行操作。設(shè)計接口IwordOj。該接口包括Count屬性和Item屬性,Count屬性為返回實(shí)例的個數(shù),Item(n)返回第n個實(shí)例。在評分類和標(biāo)記類分別實(shí)現(xiàn)該接口,在WordMark方法中以該接口作為WordMark方法的輸入?yún)?shù),從而使WordMark方法同時實(shí)現(xiàn)對單一實(shí)例和實(shí)例集合的操作。
3.2.2 改卷信息點(diǎn)數(shù)據(jù)設(shè)計
改卷中間件平臺的目的是建立一個不同DBMS都可以調(diào)用的Office文檔改卷服務(wù)。實(shí)體類各個屬性的含義存儲在Access表中,該表的結(jié)構(gòu)與改卷組件實(shí)體類的結(jié)構(gòu)相類似,但增加了解釋(Explain)屬性,去掉了不需要說明含義的一些屬性,由于數(shù)據(jù)庫表不允許出現(xiàn)數(shù)組屬性,將x(m)改成xm屬性。解釋屬性用于對某個實(shí)例的輸入進(jìn)行一些必要的說明。
本系統(tǒng)中,實(shí)現(xiàn)改卷的代碼主要集中在Word打分類的評分方法編寫。
在本系統(tǒng)中,改卷組件的主體為“類庫”,由于類庫輸出類型無法直接啟動。為了能對組件中編寫的代碼進(jìn)行調(diào)試,需要編寫一個實(shí)現(xiàn)調(diào)用類庫實(shí)現(xiàn)評分和答案信息錄入的簡單項(xiàng)目,考慮到用單機(jī)版程序進(jìn)行調(diào)試最為方便,該調(diào)試項(xiàng)目為用C#開發(fā)的WinForm程序。
前面設(shè)計生成改卷組件文件名為Marking.DLL,是.NET平臺的“類庫”。建立在.NET平臺的應(yīng)用程序,可以直接調(diào)用Marking.DLL實(shí)現(xiàn)自動改卷,如果是其他語言的應(yīng)用程序,無法直接調(diào)用。
Marking.DLL設(shè)計中,使用了集合類型,有些方法的參數(shù)為復(fù)雜數(shù)據(jù)類型,然而在很多語言中,不支持集合類型,也無法正常調(diào)用復(fù)雜類型參數(shù)的方法,為了使不同程序語言開發(fā)的應(yīng)用程序,都能正常調(diào)用,平臺新建一個專門作為接口的“COM類庫”,在該類庫中,將復(fù)雜數(shù)據(jù)類型的各個字段轉(zhuǎn)換為類的屬性,集合類型改用索引器,在類的方法中,利用屬性和索引器構(gòu)造復(fù)雜數(shù)據(jù)類型和集合類型。同時,為了簡化接口,在類庫中定義AnsInfo方法,將改卷點(diǎn)字符串(由多個改卷點(diǎn)連接生成)轉(zhuǎn)換為類的屬性。最后定義Mark方法,功能是依次調(diào)用AnsInfo方法和改卷方法。引入上述方法后接口單一,調(diào)用也較方便。結(jié)果直接生成DLL和COM文件。其他語言調(diào)用COM文件時,直接調(diào)用Mark方法實(shí)現(xiàn)改卷。經(jīng)多種語言調(diào)用測試,運(yùn)行結(jié)果相當(dāng)理想。例如用JavaScript調(diào)用本平臺COM組件實(shí)現(xiàn)Word文檔的自動改卷,可以編寫如下函數(shù):
function Mark(FileName,strAnswer)
{var Mark = new ActiveXObject("ComMark.Mark");
var s = Mark.WordTab(FileName,strAnswer);
alert("最后得分為"+s);}
其中FileName為待檢驗(yàn)文件名,strAnswer為改卷點(diǎn)字符串,例如檢驗(yàn)隸書20號新建樣式,并將新建樣式應(yīng)用到文檔第3段,總分4分,則賦值為"ClassNo11||x0,新建||n0,1||x1,隸書||n1,1|x4,20||n4,1||
對全院近三年使用本系統(tǒng)的非計算機(jī)專業(yè)的計算機(jī)統(tǒng)考成績進(jìn)行統(tǒng)計,如表1所示。
表1 近三年計算機(jī)基礎(chǔ)考級成績
可以看到,合格率和平均分都名列前茅,應(yīng)用效果極好。
本文通過對現(xiàn)行Office改卷系統(tǒng)進(jìn)行分析,提出Office改卷中間件平臺解決方案。中間件平臺實(shí)現(xiàn)了Office文檔評分和標(biāo)準(zhǔn)答案生成2大功能,由改卷組件和改卷信息點(diǎn)數(shù)據(jù)組成,在核心的改卷組件設(shè)計中,針對現(xiàn)有方案的不足,提出一種實(shí)現(xiàn)隔離代碼對數(shù)據(jù)庫依賴和接口簡單并能最大限度避免誤判的設(shè)計方案,建立在該方案基礎(chǔ)上的中間件平臺,不同的開發(fā)語言不同的DBMS只需編寫少量代碼就可以調(diào)用本臺實(shí)現(xiàn)對Office文檔的自動改卷。同時,本設(shè)計方案對于其他課程的自動改卷設(shè)計也有一定的借鑒作用。