梅紅偉
(云南大學旅游文化學院 云南 麗江 674100)
基于WORD上機考試自動評分算法的研究
梅紅偉
(云南大學旅游文化學院 云南 麗江 674100)
本文主要通過對WORD的VBA對象結構的研究分析,并按WORD操作分類實現了相應的自動評分算法。在算法設計過程中著重分析了不同環境、不同操作的評分正確性,并根據該算法,提出了WORD考試系統中評分系統、試題數據庫、出題系統的設計思想和要求。
評分算法;VBA對象;設計思想
隨著計算機技術的發展和應用的普及,計算機基礎教育越來越重要,在小學、中學以及大學里大都設有計算機基礎課程。同時,Microsoft office是一款在社會各界應用極為廣泛的辦公系列軟件,其中的WORD、EXCEL、POWERPOINT等軟件深受人們喜愛。故這三款軟件的教學大多是計算機基礎課程的主要教學環節。
軟件教學注重實踐操作,如何對軟件操作進行上機考核是教學的一個重要研究內容。而上機考核研究中如何對相應操作做出快速、準確、客觀、公正的評分是研究的一個必須解決的難題。在我校,為適應計算機基礎課程的教學改革,提出了教考系統開發項目,筆者參與了該項目的研發,主要負責WORD操作自動評分算法的研究。
在研究過程中,筆者根據我校計算機基礎課程的教學要求、WORD考試系統中出題、組題的特性以及學生操作中存在的各種可能的情況和問題,通過對WORD的內部機制、VBA技術的研究,將WORD的常規操作分為了不同類別,并就各個操作類別研制了相應的自動評分算法,本算法力求精準、客觀、公正,適用于三本學校WORD教學考試要求。
我校屬三本院校,對于計算機基礎課程的教育主要基于計算機操作常識的普及。WORD是基礎課程的一個重要環節,其教學要求學生能夠掌握文字編輯、排版、簡單的表格應用以及特殊元素的插入、設置操作等。相應的考試系統對WORD的考查也應符合教學大綱的要求,并能對以后變動作出相應的調整。故而,我先對WORD考查的操作試題根據其操作特性進行了分類分析,以便評分算法的設計具有針對性、規范性,并與系統出題有效的聯系匹配。具體分類如下:
①編輯操作:主要包括文檔文字錄入、復制、張貼、剪切、替換操作;
②格式設置:主要包括字體格式設置、段落格式設置、項目符號和編號、邊框和底紋、分欄、首字下沉、更改大小寫、背景等;
③頁面視圖:頁面大小、頁邊距、打印紙張設置、頁眉頁腳設置等;
④插入操作:頁碼、時間和日期、符號、批注、腳注和尾注、題注、圖片(包括藝術字)、書簽、超鏈接等;
⑤表格:插入表格、行、列、單元格的增刪改、表格文字錄入等;
⑥繪圖:指定圖形的繪制(主要掌握文本框、自選圖形、箭頭、三維效果、陰影、圖形組合等設置)。
以上操作是對WORD文檔進行編輯、排版和美化時常用操作,屬計算機基礎教學大綱范疇。其后的自動評分算法主要依據以上操作進行分析,在算法設計過程中除實現對各種操作結果的評判外,還應注意操作之間的效果影響。同時對于試題的設計同樣需要考慮各個操作的先后順序對評分的影響,具體分析見下文。
VBA(Visual Basic for Applications)是一種標準宏語言。它具有跨越多種OFFICE應用軟件并且控制應用軟件對象的能力,該宏語言被EXCEL、WORD、ACCESS等OFFICE應用軟件所共享并提供給用戶開放使用。故而,在對WORD自動評分分析設計過程中,VBA將作為我們主要工具來研究使用。下面我們將了解認識下VBA的一些主要內容。
1.2.1 WORD對象
對象是代碼和數據的組合,可以作為一個獨立單位來處理。在WORD應用程序中一個WORD對象可以是WORD的一部分(如:文檔、表格、段落等都可以用WORD對象表示),也可以是整個WORD應用程序 (如:Application對象即代表WORD應用程序本身)。因此,在WORD應用程序中所有的操作都將與WORD對象有關。
在前面,我們提到過VBA能夠控制對象,所以在我們的算法研究中我們將使用VBA來對WORD的各種操作所涉及的對象進行研究分析。要想掌握VBA在WORD中的應用,了解WORD的對象是必不可少的。在圖1中給出WORD對象模型圖,希望通過圖示大家能對WORD對象之間的組織結構有一個清楚地認識,該結構決定了對象間的相互關系以及它們的訪問方法。對各個對象的具體使用我們將在后面的設計中進行詳細說明。

圖1 WORD對象模型圖
1.2.2 宏與Visual Basic編輯器
前面我們說過VBA是一種宏語言,可以編輯相應的宏程序以控制WORD的工作。WORD的宏程序是一系列組合在一起的WORD命令和指令,它們能代替人工實現任務的自動化執行,我們的算法設計就是使用宏來完成分析和評分實現的。
在WORD應用程序中宏的創建有兩種方法:一是使用宏錄制器(工具菜單中)錄制一個宏;二是在Visual Basic編輯器中編輯一個宏。在我們的設計中前者主要用于對手工操作的分析,后者主要用于評分程序的編寫。下面我們將通過兩個實例來介紹這兩種方法的運用:
實例宏的錄制:通過錄制宏來分析將文檔word1.doc的第三段文字設為紅色是怎樣實現的。
操作:找到并打開word1.doc,選中第三段。通過【工具】→【宏】→【錄制新宏】來啟動宏錄制器。將宏名命名為,“實例1”。然后按要求完成字體顏色的設置,停止宏錄制。最后通過【工具】→【宏】→【宏】選擇編輯宏“實例 1”,打開 Visual Basic編輯器進行分析即可,如圖2錄制的宏代碼所示:

圖2 錄制的宏代碼
從宏程序中不難看出,文字字體(Font)的設置涉及到多方面的屬性操作。但本例只與顏色屬性(Color)相關,其值被設為 “wdColorRed”(即紅色,亦可設為255。具體轉換查看Visual Basic編輯器的快速信息。)而其他屬性的設置不變,在程序中可以忽略。
實例評分算法的實現:編寫宏程序實現對文檔word1.doc的第三段文字設為紅色的操作是否正確。
編程設計:通過實圖2的分析,我們知道判斷文字字體顏色即判斷選定內容的Font對象的Color屬性值是否正確即可。如圖3評分算法示例所示:

圖3 評分算法示例
打開Visual Basic編輯器,并在代碼窗口編寫以上宏程序即可。值得注意的是,VBA宏代碼是事件驅動的,且不能單獨被執行,只能被OFFICE程序所調用。為運行方便可以將宏程序定義在專門的WORD文檔中,并指定到工具欄、菜單或為其設定快捷鍵。當然根據考試系統設計的需要,也可以用其他高級程序語言來直接編寫訪問VBA對象的程序。
在其后的算法設計中,我們主要依靠以上的方法對word考點的各個操作進行分析研究,最后再形成可行的評分子程序。需要進行評分時,評分主程序根據試題操作類型調用相應得子程序即可。
WORD操作類型繁多,操作方法各異,不同的操作按照不同的順序進行時,操作的結果也會不同,我們研究設計工作將是一個非常煩瑣的過程,因此為了保證評分算法設計的正確性、合理性、嚴謹性,我們必須在開始研究設計前先對整個評分程序做一個合理的規劃。
1.3.1 算法程序的結構
根據VBA宏程序的特性,并保證算法程序的通用性和可移植性。我們的算法程序將以子程序結構來設計。即整個試題的評分程序為主程序,單一屬性值改變的小操作的評分程序為子程序。主程序調用各個子程序,并為子程序傳遞相應的參數。
1.3.2 主程序的設計
主程序調用各個子程序,并為子程序傳遞相應的參數。本文主程序主要由3個部分組成:
①對WORD應用程序、文檔進行檢測、打開、關閉等操作,提供評分環境,保證評分順利進行;
②對各種操作設置評判對象,為子程序調用提供參數;
③使用循環結構給出各步操作的得分及操作提示。
1.3.3 子程序的設計
子程序主要是通過一個分支結構完成單一屬性值與指定的比較值之間的判定并賦予相應的分值,記錄判定信息。子程序的實現主要有兩個問題:
第一個問題是比較值的設置。這里有三種設置方法:
①固定值,即根據具體的操作結果設定具體值。該方法簡單但通用性差,操作值唯一固定,評分算法與試題唯一匹配;
②參數,由出題者直接給出,并記錄在數據庫中,評分子程序通過訪問數據庫獲得比較值。由于不同屬性值表示方式不同,出題者需要一一辨別,工作負擔較重難度大且出題系統需要專門設計屬性值的數據庫表,系統結構復雜;
③標準文檔提取。出題者不需要干涉具體的屬性取值,只需要出題時制作一份標準文檔,在比較時,同時提取待評文檔和標準文檔的同一選定對象的相同屬性即可。相對來說第3種方法通用性強、靈活方便,能較好的適應試題的演變。故而為本文主要采用的方法。
第二個問題是參數的設置。為了使子程序結構統一,調用簡單、方便管理,我們對子程序的參數也作了限制,各個子程序一般情況下統一有三個參數:
①待評文檔的待評對象;
②標準文檔的比較對象;
③得分。
根據上文所述研究方法和程序設計思想,筆者就WORD操作基本考點編制了相應的自動評分程序?,F列舉如下:
評分主程序是評分程序的整體框架,主程序要根據出題信息為評分活動提供評分環境,并根據出題要求調用相應的子程序,為子程序提供必要參數信息,最后還要將評分結果輸出顯示。具體設計如下:
2.1.1 設定評分環境
即打開WORD應用程序,查找并打開待評文檔和試題對應的標準文檔。在評分結束時應及時關閉相應文檔和程序。
①WORD應用程序的打開和關閉:
在VBA中我們有專門的打開、關閉WORD應用程序的方法過程可以直接調用。例如圖4打開WORD應用程序所示:

圖4 打開WORD應用程序
注意,本文所有程序測試均在word2003中的Visual Basic編輯器進行,此時word應用程序已經打開,因此直接使用application對象(即當前word應用程序)。若需要在其他應用程序中嵌入使用該算法則如上例先打開word應用程序并定義為對象wd,再用wd代替所有application對象,評分結束時應關閉word應用程序并釋放對象wd。
②待評文檔的查找:
待評文檔即考生文檔是評分的主體對象,在實際考試結果中可能出現考生將文檔刪除或對文檔命名出錯,此時應終止評分,只有在指定位置查找到待評文檔才能進一步對各個操作進行評分。文檔的查找可以使用VBA所提供的FileSearch對象,筆者根據FileSearch對象編輯了一個文件查找子過程Searchfile(wname,wlujin),如下例圖5 Searchfile(wname,wlujin)所示:

圖5 Searchfile(wname,wlujin)
Searchfile(wname,wlujin)子過程調用示例:

圖6 Searchfile(wname,wlujin)的調用
注意:
·Searchfile(wname,wlujin)子過程中使用了模塊級變量wjcx,該變量要在調用程序(主程序前進行聲明);
·為了測試方便,本文程序中使用Debug.Print方法在在Visual Basic編輯器的立即窗口中顯示判定信息。讀者可根據實際需要定義一個字符串數組存放各種判定信息,在專門的界面中顯示;
·由于FileSearch對象的Execute()方法自身的原因,導致該過程存在一個非常嚴重的問題:當指定文件名為“aa.doc”,而待評文件名為“*aa.doc”(* 為任意字符)時不能正確判斷!
③待評文檔及標準文檔的打開和關閉:
在評分過程中,需要從待評文檔和標準文檔中讀取相應對象的屬性值從而比較判定得分,因此,在評分前我們必須要先打開著兩個文檔,在評分結束后關閉文檔。Word文檔的打開和關閉可以直接使用VBA提供的open()和close()這兩個方法。如圖7文檔的打開和關閉:

圖7 文檔的打開和關閉
2.1.2 設置判定對象
任何操作都有指定的操作對象,評分時也應先確定判定對象再對其屬性進行評判。在評分程序中,我們需要在主程序里根據試題設定好判定對象,并將該對象作為參數傳遞給調用的評分子程序。操作不同,其對象也不同,對象的設定方法就有所差異。下面,我們將按操作對象分類舉例說明。
①以文字為操作對象:
即試題要求對文檔中指定的部分文字進行編輯或格式設置等操作,其操作對象為指定的文字。該類操作對象需要通文字匹配查詢來設定,下面的程序段為筆者編寫的文字匹配查找子程序:

圖8 文字匹配查找子程序sel(sr.str)
為說明sel(sr,str)子程序的功能應用,我們通過示例試題2-1來分析講解:

圖9 示例試題2-1
示例試題2-1:將e盤根目錄下的“st1,doc”正文最后一段“旅游業發達,……威尼斯?!蔽淖痔砑雨栁男Ч?。
該宏代碼同過調用sel子程序在分別在標準文檔和待評文檔上查找“旅游業發達,……威尼斯?!彼诘奈恢茫⒄业降奈恢脜^域作為參數傳遞給陽文評分子程序,這樣若兩文檔選定操作區域不一致,但文字內容一致,依然能夠正確評分。這就避免了使用段、行、句為判定對象時出現因操作失誤,誤刪誤增段、行、句而導致所有操作全部評定錯誤的情況。但該方法也存在一個缺陷:但區域中存在一些特殊元素如批注時,查找會失敗。出題時應注意回避。
②以整篇文檔為操作對象:
如頁面設置中頁邊距、紙張大小、頁眉頁腳等的設置都是以整篇文檔為操作對象的。因此,在調用相應的評分子程序時直接將待評文檔和標準文檔作為對象參數傳遞給子程序即可。如下示例:
示例試題2-2:將整篇文檔頁面設為上邊距2厘米、下邊距2厘米、左邊距3厘米、右邊距3厘米;頁面垂直對齊方式為居中。

圖10 示例試題2-2
③以插入的圖片等外來元素為操作對象:
在word2003中,插入是一個非常重要,使用非常頻繁的一種修飾美化操作。對插入的元素進行評分從原理上來講非常簡單,只要選中待評元素對象,比對相應的屬性即可,但word對各種插入元素的標記是采用默認的索引號,該索引號可能因為操作的不同(順序、修改、增減等)導致每個人的操作結果相同,但索引號不同,使評分程序無法準確選定待評元素對象。筆者通過研究,提出兩種方法解決該問題:第一種方法是事先將所有元素插入到文檔中并統一命名,考生只完成對各種元素進行設置和組合,禁止增刪。這個方法雖然簡單,但失去了考察插入操作的意義。第二種方法是在考試系統中制作一個對選定對象命名的命令按鈕,其主要語句為:Selection.ShapeRange.Name=“對象名稱”。要求考生對所有元素按題目要求命名。該方法也比較簡單,但其操作超出了大綱要求,且元素較多時容易出錯。如下示例:
示例試題2-3:在文檔中插入圖片p1并將圖片p1的環繞方式設為上下型環繞,設置圖片位置:水平對齊為相對于欄居中;垂直對齊的絕對位置為正文第一段下0.5厘米。(圖片設置完成后使用命令對圖片命名為p1)

圖11 示例試題2-3
該示例,先以整篇文檔為選定對象,調用txcz()子程序查找文檔中是否存在命名為“p1”的圖片元素,找到后再以該圖片為選定對象,調用txsz()子程序對圖片設置進行評分。
④以表格為操作對象:
表格也是word中的一個重要考查內容。表格的評分與上文插入操作的評分類似,不過表格有更加嚴謹的結構,在VBA 中 可 以 使 用 table(index)、Rows(index)、Columns(index)、Cell(row,column)或 Cells(index)來訪問表格、行、列及單元格,雖然index索引號同樣是默認生成,但其生成規則是按位置(從上到下,從左到右)形成,當發生增、刪、改它能自動重新編碼。因此在對表格進行評分時可直接使用上述對象作為對象參數傳遞給評分子程序。
評分子程序主要針對某一屬性值的正確與否進行判斷,筆者根據前文劃分的WORD操作類型,分別編制部分子程序以供讀者參考。
2.2.1 編輯操作自動評分
主要包括文檔文字錄入、復制粘貼、剪切、替換操作,其中錄入、復制粘貼及剪切操作只需調sel(sr,str)子程序選定操作區域比較其文字內容即可,而替換操作涉及的區域為整篇文檔,可采用循環比較的方式來判定。請看下列示例:
①示例修改操作的評分:在正文第二段“隨著計算機技術在中國……統一、客觀、公正的標準?!敝械摹皼Q定舉辦等級考試”修改為“決定舉辦全國計算機等級考試”。
評分子程序如下:

圖12 示例修改操作的評分子程序
wz(dr,br,f)調用如下:

圖13 wz(dr,br,f)的調用
以上評分示例首先打開待評文檔和標準文檔,并通過調用sel()子程序查詢選定操作區域(第二段),再調用wz()子程序進行文字匹配,從而完成評分。需注意的是wz()的文字匹配時對整個選定區域的匹配,所以試題中不應出現在同一區域的其他編輯操作,以免不同操作的相互影響。
②示例替換操作的評分:將文檔中所有“的”字,修改為“地”,并設字體為仿宋。
評分子程序如下:

圖14 示例替換操作的評分子程序
th(dr,br,n,zf,f)調用如下:

圖15 th(dr,br,n,zf,f)的調用
該示例中,替換后的字符為“地”,總計替換了71次,故使用循環結構查詢“地”71次,每次查詢都將評判.found的值是否為真,若為真則71次替換文字都正確,反之則不正確。另外,替換操作還可以進行格式替換,如本例要求字體為“仿宋”,故在程序中引入.Font.NameFarEast的判定。其他格式亦可類似添加。添加了格式替換的子程序不會影響不需要格式替換操作的評分(判定原則為與標準文檔比對)。
2.2.2 格式設置自動評分
主要包括字體格式設置、段落格式設置、項目符號和編號、邊框和底紋、分欄、首字下沉、更改大小寫、背景等;這些操作同編輯操作的評分方法基本一致,但大多數設置都會涉及多項屬性的改變,如字體格式可能同時涉及字體大小、字體名稱、字形等,邊框可能涉及邊框樣式、線條顏色、大小、類型等。在評分時應對所有涉及的屬性進行評比。故我們可以用兩種方法來實現,一者是對所有屬性都編寫評分子程序,根據試題選擇調用;該方法子程序數量過多,系統結構比較繁瑣和復雜,短期內難以實現;另外一種方法是按操作,將多個屬性的評比編寫在一個子程序中,由于評比過程是與標準文檔對比,對于試題未作要求的屬性,只要考生不擅自修改,則不影響評分。該方法比較簡潔直觀,但子程序參數較多(不同的屬性對應不同的分值),對考生操作的要求也相對較高。示例如下:
示例字體格式設置評分:將標題“計算機二級考試”設為居中、仿宋字體、二號字號、加粗。

圖16 示例字體格式設置的評分

圖17 gsh(dr,br,f1,f2,f3,f4,f5)的調用
在本示例中,西方字體的設置未作要求,故調用評分子程序時其對應的分值為0。
2.2.3 視圖頁面設置自動評分
頁面大小、頁邊距、打印紙張設置、頁眉頁腳設置等。對于頁面設置評分時選擇的對象為整個文檔,其他按上述方式對相應屬性進行比對即可。特別是頁眉頁腳有特定的對象屬性,設計分析時注意區分。如下示例:
示例頁眉設置的評分:為文檔設置頁眉,奇數頁頁眉為“地理知識”,偶數頁頁眉為“意大利”。

圖18 示例頁眉設置的評分

圖19 ymyj(dr,br,f1,f2,f3)的調用
在以上示例中,頁眉頁腳的判定需要按節進行,Sections(1)即為文檔第一節,Headers(1)表示奇數頁眉,Headers(3)表示偶數頁眉,若是頁腳可用屬性footers。
2.2.4 插入操作、表格操作及繪圖操作的自動評分
這類操作較為復雜,涉及大量外來元素對象,對對像的選定尤為關鍵,可參看2.1.2設置判定對象來操作。具體的評分細節與其他操作類似。如下示例:
示例插入圖片并設置的評分:在文檔中插入圖片tp1并將圖片tp1的環繞方式設為上下型環繞,設置圖片位置:水平對齊為相對于欄居中;垂直對齊的絕對位置為正文第一段下0.5厘米。(圖片設置完成后使用命令對圖片命名為p1)

圖20 圖形查找
txcz(dr,na,f)子程序主要完成查找指定名稱的圖形存不存在。其判定過程為首先統計該文擋的圖形個數,若個數為0則不存在圖形,接下來在使用循環查看是否存在指定名稱(na)的的圖形。

圖21 圖形設置評分
在確定了待評圖形后即可直接調用其相關屬性進行比對評分。

圖 22 txcz(dr,na,f)及 txsz(dr,br,f1,f2,f3)的調用
在對圖形進行評分時應先調用txcz()子程序確定待評圖形,再調用txsz()子程序對各個屬性進行對比評分。這種評分算法基本能滿足圖形的評分,其正確性在于要求考生能準確對圖形命名。其他插入元素對象(批注、題注、表格、繪圖)等都可使用類似方式進行評分
通過上文的描述,我們已經可以對WORD的大部分常規操作進行評分。但就一個考試系統而言,其應包含多套試題,各套試題又含有或相同或不同的操作,且系統在使用過程中亦可通過添加試題對試題庫進行累積完善。若每一套題目都唯一對應一套評分算法,那系統的使用就顯得不靈活,對出題老師的要求太高。所以筆者考慮系統開發者可根據評分算法的要求設計出題系統,使用者通過出題系統提供相關數據,評分系統又根據提供的數據自動選擇調用子程序,生成配套的評分程序。
通過累積,我們將完成所有操作評分子程序的設計,而所有子程序都通過一個主程序進行調用。對每個子程序都設定一個調用標志,主程序使用分支結構根據標志信息選擇是否對相應操作進行評分。子程序所需要的數據,由主程序訪問數據庫獲取。
試題信息應統一存放在數據庫中,試題數據庫可以有兩種設計方法,一種是將評分算法中所需要的所有數據全部做完數據表屬性構成一張數據表,數據表的一行代表一個小操作。這樣的組織方式使出題系統能夠以最小操作為單位出題,再根據已有的題目,自動組題。但筆者不建議這樣做。就word文檔而言,不同的題目可能需要不同的試題文檔,不同的操作在同一文檔上也可能產生評分的沖突。且不同操作所需要的數據項目也不盡相同,數據表結構復雜,容易產生數據冗余。第二種方式是,按前文所述將操作歸類,不同類別的操作對應不同的數據表,出題系統按套題出題。在數據表中除了操作所需數據外,還應包含試題ID,套題ID,調用標志等信息,便于評分系統的訪問。
出題系統都主要的功能是向出題者提供相應的出題界面,根據試題數據庫和評分系統的設計,出題系統可以根據操作分類形成多個出題界面。每個界面應能提供對應數據表所需數據。同時,根據評分系統,出題系統對一套試題的出題盡可能作一些必要的限制,主要是避免對同一區域做不同的操作。例如:在一套試題中存在一個操作是對部分文字進行編輯修改,而另一個操作也會對該部分文字進行編輯修改或格式設置。那若前一個操作未完成正確,后一個操作即便是作對了評分系統也會因找不到準確的操作對象而導致評分出錯!
總上所述,筆者通過對WORD操作進行分類,使用VBA對各類操作所涉及的對象及其屬性進行研究,提出對WORD操作進行自動評分算法設計的主要思想和具體規劃,并對一些典型的操作的特點進行分析,實現正確評分。最后,筆者根據評分算法的特點要求,對考試系統的評分系統、試題數據庫、出題系統提出了具體的設計思想。由于WORD應用程序本身的復雜性、論文篇幅及時間關系,本論文未能將所有操作的評分實現,對已實現的評分程序也不可能進行所有情況的下的正確性測試,故在實際應用過程中可能存在部分出入,還請廣大讀者給予指正。
[1]WORD2002 VBA 一冊通[OL].博庫網.
[2]OFFICE編程手冊合集[OL].大家學習網.
The Automatic Scoring Algorithm Research Based on WORD Computer Examination
In this paper,through research and analysis on the WORD VBA object structure,press the word operational taxonomic achieve the automatic scoring algorithm.Analyzed the ratings of different environments and operating the correctness of the algorithm design process,and according to the algorithm,the word examination system in the scoring system,the item database,the topic and design ideas and requirements.
Scoring algorithm;VBA object;Design ideas
云南省教育廳科學研究項目——基于獨立學院計算機應用水平的教考系統的設計與實現。
梅紅偉(1982—),男,助教,從事信息管理與信息系統專業教學。
王洪澤]