摘要:目前,在各高校中針對計算機(jī)基礎(chǔ)課程考試的在線考試系統(tǒng)紛繁眾多,這些考試系統(tǒng)面臨的共同難點問題就是智能抽題和自動化判卷。智能抽題技術(shù)已有不少的解決方案,不同的解決方案只是抽題效率與抽題質(zhì)量的差別。如何高效快速的實現(xiàn)考試系統(tǒng)的全自動化判卷,成為目前很多考試系統(tǒng)研究的主要方面。計算機(jī)基礎(chǔ)課程考試中,Office操作題目是必考內(nèi)容,研究它的自動判卷實現(xiàn)技術(shù)尤為重要。VBA是提供了Office組件的接口,使的考試系統(tǒng)Office操作題目的自動化閱卷成為可能。
關(guān)鍵詞:C\\S模式;VBA;自動判卷;對象;考試系統(tǒng)
中圖分類號:G434文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2009)24-7065-03
The Research of C\\S model test system’s Office Automatic Grading Technology
YAN Ya-zhou, YAN Xin-juan
(Hunan Institute of Technology, Hengyang 421002, China)
Abstract: At present, many computer courses online Test System In universities,but these system facing the common problem is unintelligent and unautomated grading. Intelligent pumping test technology has a lot of problem solutions, Different solutions only the Pumping efficiency and pumping quality of title. How to rapid and efficient achieve automated grading system is key to current examination system.In Computer Basic Course exam ,Office operation is a compulsory content, Research on the automated grading technology is particularly important. VBA provided the interface of office components,which make the office operation marking possible.
Key words: C\\S model; VBA; automatic grading; object; examination system
近幾年來,全國各高校在國家教委的統(tǒng)一安排部署監(jiān)督下,教育教學(xué)水平不斷提高,教育行業(yè)呈現(xiàn)出了百花齊放的景象。我院作為湖南省新升本院校之一,也在千方百計響應(yīng)省教育廳的號召,大力發(fā)展我院教育事業(yè) ,提高我院教育教學(xué)水平。其中,我院自主開發(fā)C\\S模式考試系統(tǒng),該系統(tǒng)的開發(fā)符合當(dāng)前教育形式需求,也將我院考務(wù)工作水平提高到一個新的層次。在考試系統(tǒng)中,以VBA為基礎(chǔ)知識,拓展出的自動判卷技術(shù)值得推廣。
1 概述
1.1 VBA概述
VBA全稱是 Visual Basic For Application,是標(biāo)準(zhǔn)化宏語言,它是Visual Basic的子集。VBA使已有的應(yīng)用程序(WORD、EXCEL、PROWERPOINT等)自動化,且依賴于現(xiàn)有的應(yīng)用程序,不能獨立于應(yīng)用程序之外。我們現(xiàn)有的Office版本中都集成了VBA的編輯器窗口(VBE),類似于VB開發(fā)環(huán)境,如圖1。
VBA主要功能有兩個方面,一是可以依附于現(xiàn)有程序使其處理問題自動化;二是提供外部程序?qū)ο笳{(diào)用,來擴(kuò)展其他程序功能。在我們考試系統(tǒng)中,利用VB控制VBA代碼的運行,VBA提供的方法和屬性能夠全面控制文檔及文檔中各個要素,使C\\S模式下Office考試題目自動判卷功能得以實現(xiàn),在這里我們主要討論針對Word題目操作,其他office組件操作原理一致。
1.2 VBA基礎(chǔ)知識介
VBA為了能夠靈活自如的操縱應(yīng)用程序,提供了眾多控制頁面對象、方法及屬性。
VBA 與傳統(tǒng)宏語言的重要區(qū)別之一就在于它是面向?qū)ο蟮?。在一個應(yīng)用程序中,最高級別的對象通常是Application 對象,它就是應(yīng)用程序本身,在Word 對象中的 Application 對象就是Word本身,它的層次結(jié)構(gòu)如圖2。圖中個對象含義分別是:Documents表示文檔對象集;Document表示整個頁面文檔; Selection表示被選中的區(qū)域;Range表示頁面中的某一連續(xù)區(qū)域;Paragraphs 表示文檔中所有段落集;Paragraph表示某一段落;Tables表示表格集;Table表示表格。
屬性是對象的一個特性或者該對象操作的一個方面。例如,文檔屬性包含名稱、內(nèi)容、保存狀態(tài),以及是否啟用修訂。要設(shè)置一個屬性的值,可在對象的后面帶一個句號、屬性名、一個等號和新的屬性值。例如myForm.Caption = newTitle。除此之外,還有關(guān)于段落方面的屬性和文字方面屬性,具體在使用中在加以介紹。
方法是對象可以進(jìn)行的動作。如果對象共享共同的方法,則可以操作整個對象集合。例如程序執(zhí)行Forms.Close,將關(guān)閉所有打開的窗體。方法和屬性一樣,當(dāng)對象不同時,其屬性和方法也將隨之不同。
2 自動判卷功能分析及實現(xiàn)
2.1 考試題目分析
C/S考試系統(tǒng)中,針對office的考試,主要有word排版及表格制作題目。Word排版指文字格式化、段落的格式化及頁面格式化。文字格式化包括文字顏色、字體、字號、字形以及一些特殊效果。對段落的操作有段前段后距離、行間距、對齊方式、邊框、底紋等。頁面操作有頁邊距、打印方向、紙張大小、頁眉頁腳距離等。對于上述操作,都有相應(yīng)的屬性與之對應(yīng),但其對象不同。要判斷試卷格式是否正確,主要就是要有一份答題標(biāo)準(zhǔn)說明,由此對照考生做題格式是否和標(biāo)準(zhǔn)格式是否一樣,不一樣則錯誤,一樣則加分。
關(guān)于考生答案以及答題標(biāo)準(zhǔn)說明(這種說明須有統(tǒng)一格式,即程序能夠識別),都是在考生過程中存入數(shù)據(jù)庫的。在這里要說明的是,關(guān)于判卷時機(jī)有兩種情況,一種是在考試結(jié)束,考生交卷時;另外一種是在考生答完沒道題目時即時判卷。這兩種我推薦第一種,原因是第二種方式判卷時會頻繁判斷及讀取數(shù)據(jù)庫,會造成服務(wù)器負(fù)荷過重,有時還可能造成客戶端假死機(jī)現(xiàn)象。采用的一種方式,考試結(jié)束后,系統(tǒng)會自動到服務(wù)器一次性從題庫抽取考生答題結(jié)果及標(biāo)準(zhǔn)答案說明,并將抽取的考生答案恢復(fù)Word文檔(考生答完Word后,所排版后的文檔將以二進(jìn)制形式上傳于數(shù)據(jù)庫),然后保存在本地機(jī)器的某個文件夾,以待后續(xù)使用。
2.2 判卷功能具體實現(xiàn)代碼
當(dāng)上述判卷準(zhǔn)備做好后,就可以開始自動判卷了。首先是Word排版題目,假設(shè)考生答案在c盤temp目錄下,且答案標(biāo)準(zhǔn)說明都已正確給出,判斷代碼如下:
Dim mydoc As New Word.Application‘創(chuàng)建聲明幾個對象
Dim newdoc As Documents
Dim mynewdoc As Document
Dim myrange As Range
mydoc.Visible = False ‘設(shè)置word打開后在后臺云溪
Set newdoc = mydoc.Documents‘
Set mynewdoc = newdoc.Open(\"c:\emp\\wordfile.doc\") ‘打開學(xué)生答案文檔
Set myrange = mynewdoc.Range‘整片文檔設(shè)置為當(dāng)前選區(qū)
myrange.Find.Execute (“要被檢查的文字”) ‘在當(dāng)前選區(qū)中查找要檢查的文字
If myrange.Find.Found = True Then
If myrange.Font.Name = “黑體” Then ‘判斷找到的類容是不是要求的字體
'cj = cj + 1 ‘正確則加分
End If
End If
其它相關(guān)字體的屬性有Size(字號)、Color(顏色)、Bold(加粗)等,關(guān)于段落的屬性有Scaling(字間距)、Alignment(對齊方式)、LineUnitBefore(段前距離)、LineUnitBefore(段后距離)、LineSpacingRule(行間距)等,頁關(guān)于段落的屬性有l(wèi)eftMargin(左邊距)、RightMargin(右邊距)、LineStyle(頁邊框)等,其判斷方法和前面操作一致,不再贅述。
關(guān)于表格題目的判斷,同樣需要從數(shù)據(jù)庫中取出學(xué)生考題答卷及標(biāo)準(zhǔn)示例文檔,進(jìn)行格式對比,正確則加分,否則不給分。具體代碼如下:
Dim mydoc As New Word.Application ‘聲明并創(chuàng)建幾個臨時變量
Dim mynewnow As Document
Dim newfl As Document
Dim tabnow As Tables
Dim tabfl As Tables
Dim ocell As Cell
Dim nowcell As Cell
Set mynewnow = mydoc.Documents.Open(App.Path + \"\emp\\wordnow.doc\")‘打開考生文檔
Set newfl = mydoc.Documents.Open(App.Path + \"\emp\\fl.doc\") ‘打開示例文檔
Set tabfl = newfl.Tables
Set tabnow = mynewnow.Tables
cj =0 ‘初始化分值
k1=0 ‘標(biāo)記示例表格單元格號
For Each ocell In tabfl(1).Range.Cells
k2 = 0 ‘標(biāo)記考生文檔表格單元格號
For Each nowcell In tabnow(1).Range.Cells
If k1 = k2 Then‘當(dāng)考生文檔表格單元格標(biāo)記與示例表格單元格標(biāo)記相同時,判斷其類容及格式等
If ocell.Range.Text = nowcell.Range.Text And ocell.Range.ParagraphFormat.Alignment = nowcell.Range.ParagraphFormat.Alignment Then
cj = cj+0.3‘相同則加分
End If
Exit For ‘判斷完對應(yīng)位置單元格后跳出內(nèi)存循環(huán)
End If
k2 = k2 + 1‘考生文檔表格單元格號標(biāo)記加1
Next nowcell
k1 = k1 + 1 ‘示例文檔表格單元格號標(biāo)記加1
Next ocell
…...
3 結(jié)束語
本文以VBA知識為基礎(chǔ),限于篇幅只介紹VBA實現(xiàn)Word中版式和表格判斷的具體細(xì)節(jié)。本文可以推及到Office的其它組件,比如Excel、Powerpoint、Access等。在C\\S模式考試系統(tǒng)中應(yīng)用于此項技術(shù),大大擴(kuò)展了考試系統(tǒng)的功能,并且實現(xiàn)了考試系統(tǒng)的全面自動化。
參考文獻(xiàn):
[1] 李政,梁海英.VBA應(yīng)用基礎(chǔ)與實例教程[M].2版.北京:國防工業(yè)出版社,2009.
[2] 張成文.VBA在試題庫建設(shè)中的應(yīng)用[J].甘肅科技,2008(16):39-40.
[3] 田崗.VBA制作ppt高水平課件[J].中國信息技術(shù)教育,2008(10):76-77.
[4] 嚴(yán)亞周.NCRE考務(wù)系統(tǒng)批量數(shù)據(jù)導(dǎo)入方法的探討[J].科技信息,2009(20):200-201.
[5] 梁潔.利用VB實現(xiàn)OFFICE對象的訪問控制[J].成都醫(yī)學(xué)院學(xué)報,2007(2):48-51.