廖明梅,舒清錄
對(duì)口中職招生作為考生升學(xué)考試、學(xué)校選拔優(yōu)秀人才的重要途徑,是一個(gè)非常嚴(yán)肅的工作。其中試題編制與評(píng)分是一項(xiàng)重要活動(dòng),需兼顧考試是否方便、數(shù)據(jù)是否安全以及改卷效率是否高等多方面的因素[1,2,3]。綜合考慮,采用電子化考試是一個(gè)不錯(cuò)的選擇。在常規(guī)做法中,購買成熟的考試系統(tǒng),成本較高。自己選擇開發(fā)語言、數(shù)據(jù)庫,然后編制軟件,完成軟件部署、測(cè)試等,在技術(shù)、時(shí)間等方面有一定要求,實(shí)現(xiàn)有一定難度。有沒有一種部署簡(jiǎn)單、控制方便的系統(tǒng)?
答案就是MS Office Excel(以下簡(jiǎn)稱Excel)。Excel是一個(gè)功能強(qiáng)大、技術(shù)先進(jìn)、使用方便的表格式數(shù)據(jù)綜合管理和分析系統(tǒng),其本身就是一個(gè)數(shù)據(jù)庫。VBA編程語言使Excel更是如虎添翼,使VBA讀取Excel數(shù)據(jù)更方便,而且程序的設(shè)計(jì)更簡(jiǎn)單。在部署方面,只要求目標(biāo)機(jī)器安裝Office相應(yīng)版本,無需安裝其他組件,然后考試文件復(fù)制到目標(biāo)機(jī)器就可以使用,大大方便操作使用[4,5,6]。
平臺(tái)主要需求如下:
(1)界面友好,用戶登錄時(shí)首先看到考試說明;
(2)限制考試答題位置和規(guī)定答題選項(xiàng),盡可能保證考生答題規(guī)范[7];
(3)能方便、有限制地查看成績(jī);
(4)較高的安全性,盡可能保證代碼和標(biāo)準(zhǔn)答案的安全。
此Excel平臺(tái)共涉及3個(gè)工作表,分別用于完成考試說明、試題顯示/答題、標(biāo)準(zhǔn)答案界面的設(shè)計(jì)。實(shí)現(xiàn)了試題與標(biāo)準(zhǔn)答案分開存放[8],提高了數(shù)據(jù)的安全性。3個(gè)表的相關(guān)屬性如表1所示:
表1 工作表屬性
(1)“考試說明”工作表設(shè)計(jì)
在考試說明工作表中,合理使用Excel提供的藝術(shù)字加合適的字體修飾標(biāo)題,為了防止目標(biāo)機(jī)器因字體原因而無法顯示設(shè)計(jì)效果,采用對(duì)藝術(shù)字部分進(jìn)行截圖。
設(shè)置了一個(gè)“進(jìn)入考試”的圖形按鈕,當(dāng)用戶閱讀考試說明后,點(diǎn)擊進(jìn)入考試試題工作表,開始答題,效果如圖1所示:
圖1 考試說明工作表界面
(2)“考試試題”工作表設(shè)計(jì)
設(shè)置一個(gè)名為“對(duì)口中職計(jì)算機(jī)類招考考試試題”標(biāo)題,因試題量較大,把標(biāo)題行設(shè)置為凍結(jié)窗體。
采用數(shù)據(jù)有效性限制用戶只能在一定范圍內(nèi)輸入/選擇,盡可能地減少考生輸入錯(cuò)誤[9,10]。涉及的3種題型具體設(shè)置如下:
對(duì)于單項(xiàng)選擇,只能從“A”,“B”,“C”,“D”中選擇一個(gè);
對(duì)于多項(xiàng)選擇題,每題限制 4個(gè)選項(xiàng),則按順序把ABCD所有組合列出來供選,即“AB”,“ABC”,“ABD”,“ABCD”,“AC”,“ACD”,“AD”,“BC”,“BCD”,“BD”以及“CD”;
對(duì)于判斷題,只能從“對(duì)”,“錯(cuò)”中選一個(gè)。
具體做法,對(duì)于單選題,選中要設(shè)置有效性的區(qū)域,單擊“數(shù)據(jù)”功能頁下的“數(shù)據(jù)有效性”按鈕,在彈出對(duì)話框的“有效性條件”中選擇“序列”,來源輸入“A,B,C,D”確定即可,其他題型類似。
規(guī)定可編輯區(qū)域,劃出供考生答題的區(qū)域,其他地方不允許考試點(diǎn)擊、操作[11,12]。具體做法為,選中答題區(qū)域,點(diǎn)擊“右鍵”,選擇“設(shè)置單元格格式”,在彈出的對(duì)話框中選擇“保護(hù)”選項(xiàng)卡,把“鎖定”前的勾去掉,在配合工作表的保護(hù)即可生效。
添加一個(gè)“查看成績(jī)”按鈕,主要用戶改卷教師查看成績(jī)。為了能使該按鈕被有限制地使用,在顯示成績(jī)之前必須進(jìn)行身份驗(yàn)證,效果如圖2所示:
圖2 考試試題工作表界面
(3)“標(biāo)準(zhǔn)答案”工作表設(shè)計(jì)
此工作表是整個(gè)平臺(tái)的核心,數(shù)據(jù)的安全問題不容小視,為了更加安全保存數(shù)據(jù),從下列兩方面來加強(qiáng)數(shù)據(jù)的安全性。
一是充分利用Excel的大容量,把數(shù)據(jù)放在比較隱蔽的地方(比如把答案寫在EZL1014567:EZN1014645區(qū)域內(nèi))。在Excel 2010中,一個(gè)工作表有1048576行16384列,對(duì)標(biāo)準(zhǔn)答案的隱藏起到了很好的保護(hù)作用,即使有人想知道答案,在不知道工作表名的情況下,難度大大增加了。所以在特定的考試環(huán)境下,采用Excel工作表存放標(biāo)準(zhǔn)答案是有意義的,也是可行的。
二是通過VBE設(shè)置工作表的Visible屬性,使考生無法通過取消隱藏來顯示此表。做法是按Alt+F11快捷鍵,在左側(cè)窗格上部首先選中需要保護(hù)的工作表,通過其屬性面板的Visible屬性設(shè)置為“2-xlSheetVeryHidden”,再保存。
利用 Excel提供的 IF函數(shù)來計(jì)算每題的得分。例如Sheet2!C3為考生答案單元格,M3為標(biāo)準(zhǔn)答案單元格,則此題的評(píng)分規(guī)則為:
IF(Sheet2!C3="",0,IF(Sheet2!C3=M3,2,0)),即沒有填寫考試答案則0分,考生答案和標(biāo)準(zhǔn)答案相同,則得2分,否則的0分。
SUM 函數(shù)來實(shí)現(xiàn)總分進(jìn)行統(tǒng)計(jì),用 SUM(N:N)求出得分列所有小題得分之和。
把以上所有工作表設(shè)計(jì)好之后,把每個(gè)工作表的網(wǎng)格線、編輯欄、標(biāo)題去掉,再進(jìn)行工作表保護(hù)。
通過3.1只是把平臺(tái)的基本框架完成,基本能實(shí)現(xiàn)答題,但看成績(jī)較為麻煩。先要把隱藏工作表的隱藏屬性設(shè)置為顯示,最后,找到存儲(chǔ)總分的單元格。操作步驟多且繁瑣,容易出錯(cuò),所以利用宏代碼直接讀出指定單元格值并顯示出來就顯得很有必要。圍繞此問題,該平臺(tái)共設(shè)置了以下幾個(gè)宏和一個(gè)用戶窗體。
(1)ShowSheet宏
點(diǎn)擊“考試說明”工作表的“進(jìn)入考試”按鈕,調(diào)用此宏,作用是顯示“試題顯示”工作表。宏代碼為“Sheets("考試說明").Activate”。
(2)HideRibbon宏
為了使考試操作簡(jiǎn)單,避免考生到處點(diǎn)擊發(fā)生意外情況,增加了平臺(tái)的安全性,采用禁用功能區(qū),使考生能直接操作的功能按鈕大大減少。涉及的宏代碼為[13-15]:
此宏在Workbook的Open事件中被調(diào)用。
(3)SaveDocument宏
禁用功能區(qū),導(dǎo)致了考生無法通過點(diǎn)擊保存按鈕來實(shí)現(xiàn)修改內(nèi)容的保存,對(duì)不習(xí)慣使用Ctrl+s組合鍵來保存的考生來說,是一件痛苦的事情。為了解決此問題,除了考試說明中明確提示外,還采用VBA代碼來實(shí)現(xiàn)Excel定時(shí)自動(dòng)保存。
實(shí)現(xiàn)思路:在Workbook的Open事件中,以當(dāng)前時(shí)間為準(zhǔn),10秒后,通過Application.OnTime DTime自動(dòng)調(diào)用SaveDocument過程。而SaveDocument
過程主要完成:當(dāng)ThisWorkbook.saved為假時(shí),則調(diào)用ThisWorkbook.Save保存,以當(dāng)前時(shí)間為準(zhǔn),10秒后再次調(diào)用自己。如此反復(fù)就可以實(shí)現(xiàn)定時(shí)自動(dòng)保存。核心代碼如下:
(4)UserFormPassword
此窗體主要完成對(duì)用戶身份信息的驗(yàn)證,如果用戶輸入正確的密碼,則調(diào)用ShowScore宏顯示成績(jī),否則關(guān)閉本窗口。
為了防止用戶點(diǎn)擊窗體的關(guān)閉按鈕導(dǎo)致意外情況,使用FindWindow( )等API函數(shù)禁用關(guān)閉按鈕[16,17],使用戶只能點(diǎn)擊窗體指定的“確定”按鈕來控制。核心代碼如下:
(5)showUFPassword宏
此宏主要用于顯示身份驗(yàn)證的用戶界面。被sheet2表的“查看考試成績(jī)”按鈕執(zhí)行,屬于以正常方式進(jìn)行查分的情況。其實(shí)現(xiàn)代碼如下:
Flag = 1 注釋:確認(rèn)是以正常方式進(jìn)行查分的情況UserFormPassword.Show 1 注釋:模態(tài)方式打開身份驗(yàn)證窗體
(6)ShowScore宏
當(dāng)用戶點(diǎn)擊“查看考試成績(jī)”時(shí),系統(tǒng)應(yīng)該會(huì)自動(dòng)彈出一個(gè)對(duì)話框,要求驗(yàn)證身份。最初考慮使用 InputBox函數(shù)來實(shí)現(xiàn),但發(fā)現(xiàn)其輸入的密碼以明文顯示,效果不好。經(jīng)分析,最后決定使用密碼文本框和確定按鈕的用戶窗體(也就是前面提及的UserFormPass word窗體)。當(dāng)用戶輸入正確密碼后,自動(dòng)調(diào)用自定義過程,從Excel工作表指定單元格中讀出相應(yīng)成績(jī),并使用MsgBox函數(shù)顯示各題得分以及總分,然后關(guān)閉窗體。部分實(shí)現(xiàn)代碼如下:
(7)保護(hù)代碼
按Alt+F11組合鍵進(jìn)入VBE界面,點(diǎn)擊“工具”菜單下的“VBAProject屬性”,在彈出的對(duì)話框中選擇“保護(hù)”選項(xiàng)卡,輸入想設(shè)置的密碼即可。
在此平臺(tái)中,數(shù)據(jù)安全是一個(gè)核心問題,特別是標(biāo)準(zhǔn)答案、總分決不能被不授權(quán)人員看到,否則考試就失去了意義。通過前面幾步,一個(gè)較為合理的評(píng)分平臺(tái)基本實(shí)現(xiàn)了。但在平臺(tái)測(cè)試過程中,模擬考生試圖通過查看后臺(tái)代碼來獲取成績(jī)等相關(guān)信息,發(fā)現(xiàn)了一些問題。按Alt+F11組合鍵,點(diǎn)擊代碼,彈出一個(gè)VBA工程密碼框,因沒有密碼,點(diǎn)擊“取消”按鈕,雖然看不到 VBA代碼,但可以通過菜單或 F5按鈕逐個(gè)運(yùn)行宏列表里的宏名稱,最終也可以看到考生成績(jī),暴露出嚴(yán)重的安全隱患。
為了解決此問題,定義了一個(gè)名為 Flag的全局軟標(biāo)志進(jìn)行處理。具體為,如果是正常進(jìn)入(點(diǎn)擊Excel界面上的查看成績(jī)按鈕或運(yùn)行showUFPassword宏)查看成績(jī)的Flag設(shè)為1,其他情況設(shè)置為0。正常看完成績(jī)后,又把Flag設(shè)為0,下次想看成績(jī)又必須以正常方式進(jìn)入。
對(duì)于ShowScore宏,在查看具體成績(jī)之前,首先判斷是否以正常方式進(jìn)入(通過 Flag來判斷),如果是(Flag=1)則直接讀出存放成績(jī)的單元格,否則彈出用戶身份驗(yàn)證窗口,對(duì)身份進(jìn)行驗(yàn)證。這樣就能保證,不管以何種方式進(jìn)入,都會(huì)使程序跳轉(zhuǎn)到用戶身份驗(yàn)證窗口,進(jìn)行強(qiáng)制身份驗(yàn)證。
到此為止,一個(gè)較為安全的評(píng)分平臺(tái)建成。
以上基于Excel 2010實(shí)現(xiàn)的中職招考平臺(tái),在過去招生考試實(shí)踐中取得了較好的效果,幾秒鐘就可以完成對(duì)一份考卷140小題的評(píng)分,大大降低了閱卷工作量。當(dāng)然,也有待完善的地方,比如能對(duì)存入Excel工作表的題目,結(jié)合Excel的隨機(jī)函數(shù),在試題總量不變的情況下,打亂題目的顯示順序,評(píng)分后把所有的成績(jī)和考生信息對(duì)應(yīng)地匯總到一個(gè)格式化文件中就更加實(shí)用了。
[1]李花,張偉娜.用Excel設(shè)計(jì)標(biāo)準(zhǔn)化試卷的自動(dòng)判卷系統(tǒng)[J].計(jì)算機(jī)與現(xiàn)代化.2012.1
[2]羅翠瓊.基于Excel的自動(dòng)閱卷評(píng)分系統(tǒng)[J].電腦知識(shí)與技術(shù).2013.09
[3]劉雁.基于Excel VBA的通用客觀題自我訓(xùn)練工具的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī).2013.09
[4]郝晗瀚,康慕寧.Excel操作題自動(dòng)出題系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化.2013.12
[5]羅剛君.Excel VBA程序開發(fā)自學(xué)寶典[M].北京:電子工業(yè)出版社,2011.
[6]李花,郭建璞.用VBA程序保護(hù)Excel文件[J].計(jì)算機(jī)與現(xiàn)代化.2013.9.
[7]安曉梅.Office 2007寶典[M].北京:人民郵電出版社,2008.
[8]張穎.基于 Excel構(gòu)建計(jì)算機(jī)考試系統(tǒng)[J].電子制作.2013.12.
[9]Excel Home.Excel VBA實(shí)戰(zhàn)技巧精粹[M].北京:人民郵電出版社,2013.
[10]韓小良.Excel VBA活用范例大辭典(第2版)[M].中國鐵道出版社,2011.
[11]唐燕,韓愛慶,翟興.基于VBA技術(shù)實(shí)現(xiàn)調(diào)查問卷數(shù)據(jù)自動(dòng)讀取[J].計(jì)算機(jī)與現(xiàn)代化.2014.3
[12]舒清錄,廖明梅.Excel電子自動(dòng)評(píng)分系統(tǒng)構(gòu)建的研究與實(shí)現(xiàn)[J].科技創(chuàng)新導(dǎo)報(bào).2011-02-01
[13]張寧.用Excel制作試卷必須解決的幾個(gè)問題[J].計(jì)算機(jī)時(shí)代.2013年第3期
[14]Microsoft Inc.Excel對(duì)象模型概述[DB/OL].http://msdn.microsoft.com/zh-cn/library/wss56b z7.aspx,2013-07-11.
[15]韓小良.Excel VBA高效辦公實(shí)用寶典(第1版)[M].中國鐵道出版社,2009.
[16][16]李政,王月,鄭月鋒等.VBA 應(yīng)用基礎(chǔ)與實(shí)例教程(第2版)—上機(jī)實(shí)驗(yàn)指導(dǎo)[M].國防工業(yè)出版社,2009.
[17]王東明,葛武滇.Visual C#.NET程序設(shè)計(jì)與應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2008:18.