曾之光
摘要:大學計算機基礎課程的考試主要考核的是學生的理論知識與實際操作兩部分內(nèi)容,理論知識采用選擇題的形式考核,操作部分包括Windows的基本操作和office軟件的應用操作進行考核。如果單純依靠人工閱卷,效率會非常低,而且容易出現(xiàn)誤判、漏判、給分不公正等問題。為了解決這些問題,我認真研究了很多資料,采用Python語言對選擇題編寫自動閱卷程序,使用VB語言編程,實現(xiàn)了操作題的自動閱卷功能。本文闡述了自動評分功能構(gòu)成原理及各模塊的設計與實現(xiàn)方法,從技術(shù)上給出了實現(xiàn)這些閱卷功能的主要代碼。解決了這些問題將提高教師試卷批閱的工作效率,并且其準確性很高,可以廣泛地應用于計算機基礎課程考試的閱卷中。
關(guān)鍵詞: 大學計算機基礎;自動閱卷;Python;VB;選擇題;操作題
0 引言
信息技術(shù)已融入社會生產(chǎn)和生活的各個方面。目前在我國計算機教育正在不斷的進行普及,廣大高校普遍都采用在計算機上直接操作的考核方式。但由于《大學計算機基礎》是被是各大高校所有非計算機專業(yè)的公共必修課,上課學生數(shù)量多,考試的人數(shù)也多,單純依靠人工進行閱卷會帶來很大的工作量。電腦自動閱卷可以減輕閱卷教師工作量的同時,也可以降低判卷的錯誤率,提高閱卷的質(zhì)量和客觀性。因此,在計算機基礎考試中采用自動評分是最好的選擇。目前各個高校的計算機基礎考試主要分理論選擇題、 Windows操作題、文字處理Word、電子表格 excel、演示文稿PowerPoint等知識內(nèi)容的考察。理論知識部分的選擇題進行自動的評分相對比較容易實現(xiàn),對于操作部分的題目進行自動評分還是有著較大的難度。該部分內(nèi)容實踐性很強,讓學生按題目要求對 windows和office軟件的操作題進行操作,再對操作結(jié)果進行判斷。本人自主開發(fā)設計了針對選擇題的自動改卷評分,針對windows操作題和office軟件操作題的自動改卷評分等功能及解決方案。
1 利用Python編程設計對選擇題考核自動閱卷的實現(xiàn)
Python語言因具有簡潔、直接、易用的特點,被廣泛地應用于解決實際問題,同時,它具有很大的靈活性,有非常強大的第三方庫支持,工作效率高。大學計算機基礎考試一般有20道理論選擇題,都是單選題。每套題的題目和答案都不一樣,需要在短時間內(nèi)準確地把每個班的選擇題成績統(tǒng)計出來,實現(xiàn)自動化批改,要做以下工作。
1.1 準備工作
要實現(xiàn)自動化改卷,電子試卷的答題卡必須要統(tǒng)一模板。答題卡采用Excel文檔,要在規(guī)定的位置填寫姓名和學號,答案填在第三行,每一題的答案要填在對應的單元格,如圖1所示。為了便于程序讀取文件,所有的電子答題卡文件必須與Python程序放在同一個文件夾目錄下。
1.2 讀取Excel表格數(shù)據(jù)
Python要讀取Excel表格數(shù)據(jù)就必須安裝openpyxl庫。在命令窗口輸入:pip install openpyxl,然后回車就安裝好了。本文以10道選擇題的自動評分為例,選擇題自動評卷的主要部分代碼如下:
import openpyxl
print(“請輸入答案所在的行數(shù)”)
# day = 3
day = int(input())
print(“請輸入正確答案”)
print(“輸入的答案是不帶空格或逗號的大寫字母”)
keys = [‘D’, ‘B’, ‘D’, ‘B’, ‘D’, ‘D’, ‘D’, ‘B’, ‘B’, ‘B’]
keys = input()
# DBDBDDDBBB
awb = openpyxl.Workbook()
awsheet = awb.active
# first row
for i in range(4, 14):
awsheet.cell(row=1, column=i - 1, value=i - 3)
awsheet.cell(row=1, column=1).value = “學號”? # write in
awsheet.cell(row=1, column=2).value = “姓名”
awsheet.cell(row=1, column=13).value = “得分”
aws = []
# get answer 1-10
for i in range(4, 14):
charaws = ws.cell(row=day, column=i).value.upper()? # turn into upper case
aws.append(charaws)
awsheet.cell(row=j, column=i - 1, value=charaws)
if charaws != keys[i - 4]:? # WA
# thiscell.font.italic = True
awsheet.cell(row=j, column=i - 1, value=charaws).font = RedFont
if i <= 14:
score = score - 1
awsheet.cell(row=j, column=13, value=score)
else:
score = score - 1
awsheet.cell(row=j, column=13, value=score)
print(aws)? # 打印答案數(shù)組
j = j + 1
# print(len(f))???????? # 目錄下文件個數(shù)
# aws.cell(row = 1, column = 1).value = ‘test’
awb.save(‘a(chǎn)ws.xlsx’)
print(“改卷完成,謝謝使用.”)
把上面編寫的程序和學生的答題卡放在同一個文件夾,然后運行代碼,會先彈出“請輸入答案所在行數(shù)”,如果答題卡的答案填在第3行就輸入一個“3”字再按回車?;剀嚭髸棾觥罢堓斎胝_答案”,并且顯示“輸入的答案是不帶空格或逗號的大寫字母”。按要求輸入了正確答案后再按回車如圖2所示:
最后得到一個Excel文檔,記錄了每位同學的選擇題最后得分,如圖3所示:
通過上面的代碼我們可以對所有學生的選擇題答題卡進行快速的自動批改,就算換了不同的題目,不同的答案,只要輸入正確的答案都可以直接快速修改,而不需要修改代碼,只要按原來答題卡的模板進行填寫答案就可以,這樣便捷而快速。
2 利用VB編程設計對操作題自動閱卷的實現(xiàn)
VisualBasic是由微軟推出的用于Windows程序設計優(yōu)秀編程語言。它對微軟的Windows系統(tǒng)和Office軟件的兼容性高。而且,它還引入了可視化的和面向?qū)ο蟮某绦蛟O計方法,大大提高了開發(fā)效率。所以,我利用VB編程設計對操作題進行了自動評卷。
2.1 Windows操作題考核自動閱卷的實現(xiàn)示例
本節(jié)介紹了 windows 操作考題自動閱卷的基本思想,并提出了解決方案。Windows 操作題自動閱卷最關(guān)鍵的技術(shù)就是對學生考題的對象屬性進行提取與判斷。考題對應的判斷模塊主要是通過選擇性語句來實現(xiàn)對考生文件夾中對象的屬性與考試要求逐一進行比較,如果比較結(jié)果一致表示正確,比較完成后將累加相應的得分?;谠撍枷耄依?vb的相關(guān)知識編寫了自動判斷Windows操作題對錯的代碼。下面將對各個類型題目的自動閱卷的關(guān)鍵代碼進行逐個介紹。由于全部閱卷的代碼較多,這里只列出了部分關(guān)鍵性代碼。
首先在計算機自動閱卷時 ,程序要和文件或文件夾放在同一個文件夾下進行 ,先進行讀取,然后再判斷正確與否,正確的增加相應的得分。比如:文件與文件夾在指定文件夾下是否存在,文件與件夾的屬性是否正確等,利用 VB編程能比較方便地進行判斷。主要代碼如下:
我們以五題Windows操作題為例,首先,先定義五個變量為整數(shù)型作為每題獲得的分數(shù)。
Dim one As Integer
Dim two As Integer
Dim three As Integer
Dim four As Integer
Dim five As Integer
然后我們新建一個EXCEL表格作為各學生成績數(shù)據(jù)存放的地方,工作表中有姓名,總分,每一題得分等字段名,后面自動判斷得出的評分數(shù)據(jù)可以按順序自動填到相應的單元格。
exl.Workbooks.Add
Cells(1, 1).Value = “姓名”
Cells(1, 2).Value = “總分”
Cells(1, 3).Value = “第一題”
Cells(1, 4).Value = “第二題”
Cells(1, 5).Value = “第三題”
Cells(1, 6).Value = “第四題”
Cells(1, 7).Value = “第五題”
Dim o As String
Dim p As String
Dim pathstr As String
pathstr = Label3.Caption & “\” ‘父目錄
p = Dir(pathstr, vbDirectory) ‘取第一個
Do While p <> “” ‘不為空就循環(huán)
If p <> “.” And p <> “..” Then ‘如果不是當前目錄及上一級目錄 . 及 ..
If (GetAttr(pathstr & p) And vbDirectory) = vbDirectory Then ‘是否是目錄
Cells(i, 1).Value = p?? ‘確定是目錄,添加到列表,這里可以自己處理
Cells(i, 3).Value = 4
End If
End If
p = Dir ‘取下一個
i = i + 1
Loop
具體操作是否正確得分,判斷文件ATEND.DOC移動到JINK文件夾,判斷USER.txt文件屬性為只讀和將文件夾REMOTE壓縮在LOCAL文件夾中。如果操作正確則增加相應的得分,把得分填入相應的單元格,代碼如下:
If Dir(Path & “JINK\” & “ATEND.DOC”, vbNormal) <> “” And Dir(Path & “success\” & “ATEND.DOC”, vbNormal) = “” Then two = two + 3
Cells(m, 4).Value = two
If Dir(Path & “PAINT\” & “USER.txt”, vbReadOnly) <> “” Then three = three + 3
Cells(m, 5).Value = three
If Dir(Path & “LOCAL\” & “REMOTE.rar”, vbNormal) <> “” Then four = four + 3
Cells(m, 6).Value = four
If Dir(Path & “MAULYH\” & “BADBOY”, vbDirectory) = “” Then five = five + 2
Cells(m, 7).Value = five
遍歷考試文件夾里每位學生的學號和姓名文件夾,把各名學生的學號和姓名填入對應的單元格,把Windows文件操作題最后得分自動相加后填入EXCEL表格中,并把EXCEL文件命名為“操作成績”,代碼如下:
FName = Label3.Caption & “\” & “操作成績.xls”
ActiveWorkbook.SaveAs FileName:=FName
i = 1
j = 1
Do While Cells(i, 1).Value <> “”
i = i + 1
Loop
Do While Cells(1, j).Value <> “”
j = j + 1
Loop
i = i - 1
j = j - 1
score = 0
For a = 2 To i
For b = 3 To j
If Cells(a, b).Value = Cells(1, b).Value Then score = score + 1
Next b
Cells(a, 2).Value = score
score = 0
Next a
Command1.Enabled = False
For k = 1 To j
最后通過窗體和控件把代碼界面化便于操作和運行,最后的效果如下圖2
2.2 Office操作題考核自動閱卷的實現(xiàn)示例
在VB中對Office操作題進行自動批改評分的思路與Windows操作題自動閱卷的思路一樣。在Word、Excel、PowerPoint大題模塊中有幾道小題就先定義幾個變量作為每題獲得的分數(shù),然后創(chuàng)建一個EXCEL表格填寫成績。通過IF和Then函數(shù)對題目進行判斷,對的就在定義得分變量進行累加得分。最后遍歷考試文件夾里每位學生的學號和姓名文件夾,把各名學生的學號和姓名填入對應的單元格,把Windows文件操作題最后得分自動相加后填入EXCEL表格中。
我們在對Office操作題目的設置做出判斷時,要用到office軟件自帶的宏功能幫助。利用宏可以幫助我們快速寫出批改程序,在不知道該用什么命令時,可以先錄制好完成該題時的宏,然后去理解其中的宏命令含義,再編寫相應的程序,這樣可以提高編程效率。對于Office操作都可以采用這種方法獲得宏命令代碼,但要經(jīng)過修改才能使用。比如想要判斷字體、字號、字體顏色等等的操作是否正確時,我們可以先錄制相應的宏命令,找出里面字體設置的代碼,因為宏命令的腳本語言是VBscript,用到的代碼在VB中一樣適用。下面我們分別對Word、Excel、PowerPoint這三大模塊的操作閱卷的主要實現(xiàn)代碼做出講解。
2.2.1 Word操作題實例
通過前面所說,我們對VB語言自動批改Word操作題已經(jīng)有了大致的思路。下面,我們通過兩個實例學習VB批改Word操作題的編程方法。
例1字體格式的評測。
題目要求:將標題段文字(“搜狐榮登Netvalue五月評測榜首”)的格式設置為:小三號宋體、紅色、加下劃線、居中,并添加藍色底紋。 批改代碼如下:
Set yirange = ActiveDocument.Paragraphs(1).Range???? ‘定義區(qū)域為第一段
With yirange
If .Font.Name = “宋體” And .Font.Size = 15 Then one = one + 1
If .Font.Color = wdColorRed Then one = one + 1
If .Font.Underline = wdUnderlineSingle Then one = one + 1
If .ParagraphFormat.Alignment = wdAlignParagraphCenter Then one = one + 1
If .Shading.Texture = wdTextureNone Then one = one + 1
例2表格格式的評測。
題目要求:將文檔中第二頁所提供的文字轉(zhuǎn)換為一個6行3列的表格,再將表格內(nèi)容設置成“中部右對齊”;設置表格各列列寬為3厘米,各行行高為1厘米,并將表格最外面的四條邊線邊框設置為紅色、1.5磅粗細的雙實線。 批改代碼如下:
Set wurange = ActiveDocument.Paragraphs(5).Range???? ‘定義區(qū)域為第五段
With wurange
If .Paragraphs.CharacterUnitFirstLineIndent = 2 Then four = four + 1
End With
If wrd.Documents(s).Tables.Count > 0 Then five = five + 2
With wrd.Documents(s).Tables(1)
If.Borders(wdBorderBottom).LineStyle=wdLineStyleDouble And .Borders(wdBorderHorizontal).LineStyle = wdLineStyleSingle Then five = five + 2
If.Borders(wdBorderBottom).LineWidth=wdLineWidth150pt And .Borders(wdBorderHorizontal).LineWidth = wdLineWidth050pt Then five = five + 1
If .Borders(wdBorderBottom).Color = wdColorRed And .Borders(wdBorderHorizontal).Color = wdColorAutomatic Then five = five + 1
If .Rows(1).Range.Paragraphs.Alignment = wdAlignParagraphRight Then five = five + 2
If .Rows(1).Height = 28.35 Then five = five + 2
End With
2.2.2 Excel操作題實例
跟前面Word操作題自動評分的代碼一樣。下面,我們繼續(xù)通過實例介紹VB批改Excel操作題的編程方法。
題目要求:1、將sheet1工作表的A1:G1單元格合并為一個單元格,文字水平居中對齊,設置第1行行高為20。2、用函數(shù)計算“合計” 、“平均值”列內(nèi)容,將工作表命名為”家用電器銷售數(shù)量情況表”。批改代碼如下:
Set xlSheet = xlBook.Worksheets(1)?? ‘改過工作表名的設置活動工作表
If xlSheet.Range(Cells(1, 1), Cells(1, 7)).MergeCells = True Then one = one + 2
‘設置行高
If xlSheet.Rows(1).RowHeight = 20 Then one = one + 1
‘判斷工作表名
If xlBook.Worksheets(1).Name = “家用電器銷售數(shù)量情況表” Then two = two + 1
‘判斷公式
Set xlSheet = xlBook.Worksheets(“家用電器銷售數(shù)量情況表”)
If xlSheet.Range(“F3”).Formula = “=SUM(B3:E3)” And xlSheet.Range(“F6”).Formula = “=SUM(B6:E6)” Then two = two + 1
If xlSheet.Range(“G3”).Formula = “=AVERAGE(B3:E3)” And xlSheet.Range(“G6”).Formula = “=AVERAGE(B6:E6)” Then two = two + 1
2.2.2 PowerPoint操作題實例
我們再來看看PowerPoint的閱卷評分代碼,全部幻燈片切換方案為“溶解”,評分的代碼如下:
If pptApp.ActivePresentation.Slides.Count <> 2 Then
If pptApp.ActivePresentation.Slides(3).SlideShowTransition.EntryEffect = ppEffectDissolve Then one = one + 3
Else:If pptApp.ActivePresentation.Slides(1).SlideShowTransition.EntryEffect = ppEffectDissolve Then one = one + 3
End If
自動批改第二題,第二張幻燈片版式改為“兩欄內(nèi)容”,標題為“尼斯湖水怪”,插入圖片“ppt2.jpg”,設置圖片動畫為“進入“動畫的 “形狀”,效果選項為“形狀-菱形“,設置文本動畫為”進入“-”飛人“,效果選項為”自左上部“。評分代碼如下:
If pptApp.ActivePresentation.Slides.Count <> 2 Then
If pptApp.ActivePresentation.Slides(3).Layout = ppLayoutTwoObjects Then two = two + 1
If pptApp.ActivePresentation.Slides(3).Shapes(1).TextFrame.TextRange.Text = “尼斯湖水怪” Then two = two + 1
If pptApp.ActivePresentation.Slides(3).Shapes(3).Height < 205.5 Then two = two + 1 ‘插入圖片
Set dhshape = pptApp.ActivePresentation.Slides(3).Shapes(2)
With dhshape
If dhshape.AnimationSettings.EntryEffect = ppEffectFlyFromTopLeft Then two = two + 1
End With
Set dh2shape = pptApp.ActivePresentation.Slides(3).Shapes(3)
With dh2shape
If dh2shape.AnimationSettings.EntryEffect = ppEffectDiamondOut Then two = two + 1
End With
Else: two = two + 0
End If
通過上面的代碼分析知道,我們可以針對不同的題目內(nèi)容去修改IF函數(shù)后面的條件,再對應給出相應的分值。最后一段統(tǒng)計分數(shù)的代碼和前面Windows操作部分的代碼類似,就是遍歷文件夾里每位考生的Word、Excel、PowerPoint文檔,最后把每位考試的姓名、學號和成績都填到一個新建的Excel文檔。當然,為了方便運行操作,我們也同樣通過窗體和控件把代碼進行界面化。
結(jié)束語
以上編程方法,有點繁復,也不一定很完美,但畢竟提供了一種閱卷思路,相比用人工去逐一打開學生的文件,然后進行評判來得省時、省力,而且閱卷者能根據(jù)自己的需要增減某些項目的評分要求。在Windows平臺上完成計算機基礎考試中各模塊自然融合自動閱卷,已成功地應用于2020年第一學期大學計算機基礎期末考試試題的批改中,經(jīng)各位老師和實踐驗證表明,該閱卷程序性能穩(wěn)定,閱卷速度快,結(jié)果完全正確。當然批改程序也不是萬能的,只起輔助手段。學生答案可能千奇百怪,若實際操作過程中,出現(xiàn)評錯分的情況時,一定要仔細研究,分析原因,修正程序,以免誤導學生。
參考文獻:
[1] 朱江,謝深泉.考試系統(tǒng)中 Word 操作題自動閱卷的實現(xiàn)[J].湘潭大學自然科學,2002,4(3):49-51.
[2] 王亞利,李井竹.基于 VBA 的 Office 操作題自動閱卷技術(shù)的研究與實現(xiàn)[J].廊坊師范學院學報然科學版),2008,8(4):5-7.
[3] 檀小璐.大學計算機基礎考試系統(tǒng)的分析與設計[D].秦皇島:燕山大學,2013.李昕.計算機基礎考試系統(tǒng)的設計與實現(xiàn) [D].青島 : 中國海洋大學,2014.
[4] 姚利國,姚暉.計算機基礎考試中 Office 操作題自動閱卷的實現(xiàn)[J].四川教育學院學報,2003,(12) :85-86.
[5]楊本倫. Visual Basic 開發(fā)技術(shù)大全.清華大學出版社, 2010.8
[6] 劉穎,榮義,劉偉.基于VBA 通用的上機考試制卷與評分系統(tǒng)的實現(xiàn) [J].電腦編程技巧與維護,2010,8:32-34.