張艷肖 張靜妙 河北經(jīng)貿(mào)大學(xué)計(jì)算機(jī)中心
大學(xué)計(jì)算機(jī)基礎(chǔ)是非計(jì)算機(jī)專業(yè)學(xué)生大一的必修課程[1],課程理論部分的考核一般采用選擇題、判斷題形式,而實(shí)踐部分在課程中是至關(guān)重要的,主要包括操作系統(tǒng)、辦公軟件和網(wǎng)絡(luò)的應(yīng)用。目前很多高校正在使用的考試系統(tǒng)存在著試題庫不能更新,考核模塊所有專業(yè)的學(xué)生都相同,甚至還存在著手工判卷[2]的現(xiàn)象。結(jié)合學(xué)校的課程改革,我們開發(fā)了基于VBA (Visual Basic for Applications)評分策略的大學(xué)計(jì)算機(jī)基礎(chǔ)課程的練習(xí)和考試系統(tǒng)。在實(shí)踐課上學(xué)生可以在練習(xí)模式下自由選擇練習(xí)的模塊,系統(tǒng)自動(dòng)抽題[3],并對學(xué)生的操作進(jìn)行評分,并給予詳細(xì)的步驟評分結(jié)果,可以有效提高學(xué)生的實(shí)踐操作能力。考試模式下系統(tǒng)能夠根據(jù)考試要求進(jìn)行組卷,考核模塊可根據(jù)專業(yè)特色進(jìn)行選擇。教師能根據(jù)教學(xué)要求,自主更新Office操作題的試題庫。
VBA是Visual Basic的一種宏語言,是微軟開發(fā)的在其應(yīng)用程序中執(zhí)行通用的自動(dòng)化(OLE)任務(wù)的編程語言[4]。Office中的應(yīng)用程序(WORD、EXCEL、PPT)在VBA中都被看作是一個(gè)對象。如Word 的Application對象[5]中包含了Word的文字、段落、頁眉頁腳、頁面設(shè)置、圖片、文本框、藝術(shù)字等對象,每個(gè)對象都有它的屬性。系統(tǒng)評分時(shí)將答案文件中給定對象的正確屬性值和學(xué)生做題文件的該對象屬性值做比較,計(jì)算該對象的得分。
我們采用EXCEL工作簿存儲(chǔ)每套題的答案文件,好處是每一行存儲(chǔ)了一個(gè)得分點(diǎn)的所有知識(shí)點(diǎn)信息。一個(gè)得分點(diǎn)可以由多個(gè)知識(shí)點(diǎn)組成,也可以有多種正確答案,用“AND”或“OR”標(biāo)識(shí)。
第一行存儲(chǔ)了該套題滿分的分值,15分。從第二行開始存儲(chǔ)該套題所考核的知識(shí)點(diǎn),如:查找文字,知識(shí)點(diǎn)關(guān)鍵詞標(biāo)識(shí)為“FINDCOUNT”,參數(shù)有兩個(gè),第一個(gè)參數(shù)為查找的文字內(nèi)容,如“玫瑰”,第二個(gè)參數(shù)為文字的個(gè)數(shù),如17?!癆ND”表示該行所有的知識(shí)點(diǎn)都正確才能得分,“OR”表示該行只要一個(gè)知識(shí)點(diǎn)正確即可得分。每一行的最后兩個(gè)單元格分別存儲(chǔ)了該題的分值和題目的具體描述信息。文件最后用“END”表示結(jié)束。
我們對Windows、Word、Excel和PPT常用的知識(shí)點(diǎn)進(jìn)行了歸納梳理。在Word中,常用的對象有文檔、文字、段落、頁面、頁眉頁腳、分欄、圖片、文本框、藝術(shù)字、表格等。Excel常用的對象有工作簿、工作表、單元格、文字、公式和函數(shù)、圖表等。PPT常用的對象有演示文稿、幻燈片、文字、圖片、超級鏈接、幻燈片切換、幻燈片動(dòng)畫、模板等。這里僅對Word圖片、文本框和藝術(shù)字的評分用到的屬性做一個(gè)介紹。
環(huán)繞方式為嵌入型的屬性:.InlineShapes,非嵌入的:.shapes。.
判斷對象是否存在:type屬性值6為表示是一個(gè)組合對象、13為圖片、17為藝術(shù)字或文本框。
對象大小和環(huán)繞方式:.Width、.Height、.WrapFormat.Type.和 WrapFormat.Side。
對 象 位 置:.Left、.RelativeHorizontalPosition、.Top和.RelativeVerticalPosition。
文 字 環(huán) 繞 距 正 文 距 離:.WrapFormat.DistanceTop、.DistanceBottom、.DistanceLeft和.DistanceRight。
文本框或藝術(shù)字文字內(nèi)容:.TextFrame.TextRange.text。
文本框線條和填充顏色:.Shapes(1).line.ForeColor.和.Fill.ForeColor
文 本 框 內(nèi) 部 邊 距:.MarginTop、.MarginBottom、.MarginLeft和.MarginRight
藝術(shù)字樣式:.TextFrame.TextEffect.PresetTextEffect
系統(tǒng)采用C/S結(jié)構(gòu),學(xué)生端和服務(wù)器端功能模塊設(shè)計(jì)如圖1所示。
開發(fā)環(huán)境:vb6.0、Office2010、SQL Server2008。
圖 1 系統(tǒng)學(xué)生端和服務(wù)器端功能模塊圖
服務(wù)器端使用SQL數(shù)據(jù)庫,主要包含的數(shù)據(jù)庫表如下:
學(xué)生信息表:存儲(chǔ)了學(xué)生的考號、姓名、性別、班級、學(xué)院信息;主鍵是考號。
單選題信息表:存儲(chǔ)了單選題的類型、類型名稱、該類題目總個(gè)數(shù)、系統(tǒng)抽該類題目個(gè)數(shù)和每道題分值。主鍵是單選題類型。
單選題試題表:存儲(chǔ)了單選題號,試題類型,正確答案、題目內(nèi)容以及四個(gè)選項(xiàng)。主鍵是單選題號和試題類型的組合,外碼是試題類型。
考試模塊設(shè)置表:存儲(chǔ)了各試題模塊名稱,考試時(shí)在服務(wù)器端進(jìn)行考試模塊的選擇。
學(xué)生所抽單選題表:存儲(chǔ)了學(xué)生考號、學(xué)生考試時(shí)抽到的單選題編號、試題號、試題類型、正確答案和學(xué)生所做的答案。主鍵是學(xué)生學(xué)號和單選題編號的組合。
學(xué)生考試成績表:存儲(chǔ)考試模式下每場次學(xué)生考號、各模塊的滿分值和學(xué)生得分(word模塊分三部分計(jì)分:文字處理、圖片和表格;excel模塊分兩部分計(jì)分:基本操作和圖表)、機(jī)器名稱、機(jī)器IP地址、考試狀態(tài)、各模塊學(xué)生所抽試卷號。每場考完,導(dǎo)出考試成績后可將此表數(shù)據(jù)備份到總考試成績表,然后將此表清空。主鍵是學(xué)生考號。
練習(xí)模式下,學(xué)生可進(jìn)行單模塊練習(xí)、綜合練習(xí)和隨機(jī)抽題,如圖2所示??荚嚹J较?,根據(jù)學(xué)生考號,判斷學(xué)生考試狀態(tài),首次登陸、二次登陸、還是已完成考試,根據(jù)考試狀態(tài)分別予以不同處理。登陸成功后,首先將在考試盤創(chuàng)建考生文件夾,將考生用到的試題文件復(fù)制到考生文件夾下,然后打開試題窗口和考生文件夾窗口。
打開考生文件夾窗口方法:
圖 2 學(xué)生端練習(xí)方式登錄
使用windows的API函數(shù)ShellExecute,在程序中調(diào)用該函數(shù)之前,在標(biāo)準(zhǔn)模塊先進(jìn)行原型聲明,再調(diào)用該函數(shù),調(diào)用的命令如下:
其中,driver代表創(chuàng)建考生文件夾的驅(qū)動(dòng)器,user代表考生文件夾名字。
使用API函數(shù)MoveWindow可以移動(dòng)窗口的位置,用來調(diào)整試題窗口和文件夾窗口布局合理。
選擇題的組卷過程:
首先從單選題信息表中,取出每種類別的單選所抽題目個(gè)數(shù)及每道題分值,然后產(chǎn)生指定范圍內(nèi)的隨機(jī)整數(shù),表示所抽單選題的該類別序號,注意所抽題目序號不能重復(fù),如重復(fù),則重新產(chǎn)生隨機(jī)數(shù)。根據(jù)產(chǎn)生的序號和類別從單選題試題表中取出該題正確答案,將該學(xué)生抽到的單選題類別、題目序號和該題正確答案存儲(chǔ)到學(xué)生所抽單選題表中。
操作題的組卷過程:
練習(xí)模式下,單模塊練習(xí)和綜合練習(xí)根據(jù)登陸模塊學(xué)生的選擇進(jìn)行抽題,隨機(jī)抽題每個(gè)考核模塊均采用Rnd函數(shù)產(chǎn)生0-試題套數(shù)之間的一個(gè)隨機(jī)整數(shù)??荚嚹J较?,服務(wù)器端組卷管理模塊中可以選擇選擇本場考試的模塊,然后根據(jù)選擇模塊利用Rnd函數(shù)產(chǎn)生隨機(jī)整數(shù)進(jìn)行抽題。
根據(jù)學(xué)生單擊哪個(gè)模塊,將該模塊所抽試題內(nèi)容進(jìn)行顯示。試題內(nèi)容以word文檔形式存放,采用口令加密方式進(jìn)行安全保護(hù)。試題顯示采用RichTextBox控件,它能顯示帶格式的word文檔。由于采用了口令加密,所以裝入RichTextBox時(shí)需要轉(zhuǎn)換為.rtf格式,否則將顯示亂碼。解決方法:將口令加密文件轉(zhuǎn)換為不帶口令的.rtf臨時(shí)文件,臨時(shí)文件存儲(chǔ)在windows安裝目錄(用windows的API函數(shù)GetWindowsDirectory獲取),評分時(shí)將臨時(shí)文件刪除。單選題顯示時(shí),根據(jù)組卷模塊學(xué)生所抽單選題的類別和序號,查找單選題試題表,將題目內(nèi)容進(jìn)行顯示,將學(xué)生所做單選題答案也存儲(chǔ)到學(xué)生所抽單選題表中。
為了實(shí)現(xiàn)通用性,我們編寫了Windows、Word、Excel、PPT各模塊評分的函數(shù)過程,調(diào)用函數(shù)時(shí)需要傳遞的參數(shù)為: 學(xué)生做題文件和答案文件。函數(shù)調(diào)用后返回學(xué)生分?jǐn)?shù)。在Word和Excel評分函數(shù)中,根據(jù)知識(shí)點(diǎn)的類別不同,分別統(tǒng)計(jì)學(xué)生得分。
下面以圖1中設(shè)置word插入的圖片位置,水平距頁面右側(cè)13厘米,垂直距段落下側(cè)6厘米為例,介紹實(shí)現(xiàn)方法。
定義變量key,存儲(chǔ)從答案文件中讀到的知識(shí)點(diǎn)的關(guān)鍵詞,如“OBJLEFTTOP”,它有4個(gè)參數(shù)存儲(chǔ)相關(guān)屬性值,canshu1存儲(chǔ)水平方向度量值13厘米,canshu2存儲(chǔ)水平方向度量單位:“距頁面”值為1,canshu3存儲(chǔ)垂直方向度量值6厘米,canshu4存儲(chǔ)垂直方向度量單位:“距段落”值為2,fenzhi存儲(chǔ)該題分值2分。如果textcanshu2或textcanshu4值為-1,表示不判斷此方向。
我們編寫了tuxingweizhi函數(shù),實(shí)現(xiàn)判斷圖形的位置。讀取學(xué)生的做題文件,將學(xué)生文檔的圖形對象的各個(gè)屬性值和答案文件的屬性值做比較,由于word圖形的位置值是以磅值為單位,所以還需要使用CentimetersToPoints函數(shù)將答案文件的度量單位厘米值轉(zhuǎn)換成磅值。部分代碼如下:
系統(tǒng)實(shí)現(xiàn)了單選題、Windows、Word、Excel、PPT 操作試題的添加、刪除和修改。圖3是添加Excel操作題的界面,添加試題后會(huì)自動(dòng)生成該套題的答案文件和試題文件,可以對其進(jìn)行修改和刪除。我們將Office操作題經(jīng)??己说闹R(shí)點(diǎn)分類整理成菜單形式。下面以題目對“期末成績”工作表的“a3:k3”單元格填充淺綠色底紋,12.5%灰度為例,介紹系統(tǒng)提供的兩種生成答案文件的方法。
第一種方法:我們將常用的顏色、字體、字號、圖案格式、預(yù)設(shè)顏色等屬性值做成了菜單。教師按照提示直接輸入或使用菜單中的“顏色設(shè)置”、“圖案格式設(shè)置”,寫入知識(shí)點(diǎn)“單元格底紋”的5個(gè)參數(shù)值。
第二種方法:只需輸入前2個(gè)參數(shù)值,工作表名和單元格名,然后單擊“寫部分知識(shí)點(diǎn)答案”命令按鈕,將打開出題老師做好正確答案的工作簿文件,讀取指定工作表和單元格的底紋的另外3個(gè)參數(shù)值,寫入答案文件中。如果教師已經(jīng)做好了正確的答案文件,推薦使用第二種方法,因?yàn)橛行┲R(shí)點(diǎn)的參數(shù)值是不太容易直接寫的,比如公式和函數(shù)、圖表繪圖區(qū)格式等,采用第二種方法,生成答案文件比較容易。
成績管理模塊:可以對學(xué)生成績進(jìn)行導(dǎo)出和備份等功能。學(xué)生信息管理模塊:提供下載模板、上傳學(xué)生名單、添加、修改、刪除。單選題管理提供了對單選題的上傳、添加、修改和刪除等功能。組卷管理模塊:可以對單選題每種類型抽取的題目個(gè)數(shù)和分值進(jìn)行設(shè)置;可以對操作題的考試模塊進(jìn)行選擇。數(shù)據(jù)庫維護(hù)模塊:用戶信息維護(hù)、數(shù)據(jù)庫初始化、數(shù)據(jù)庫的備份和還原。用戶管理模塊設(shè)計(jì):系統(tǒng)有4類用戶,一般用戶、一般管理員、題庫管理員和超級管理員,分別設(shè)置不同的權(quán)限。
本系統(tǒng)這個(gè)學(xué)期在我校大學(xué)計(jì)算機(jī)基礎(chǔ)課程的實(shí)踐課上投入使用。練習(xí)模式下教師可以指定模塊或同學(xué)們自行選取模塊進(jìn)行練習(xí),可以將成績上傳到服務(wù)器,教師可以及時(shí)掌握學(xué)生各模塊各部分的學(xué)習(xí)情況,從而有針對性的進(jìn)行輔導(dǎo)和講解。教師也可以根據(jù)教學(xué)安排,添加新的試題,進(jìn)入考試模式來進(jìn)行期中或階段測驗(yàn),根據(jù)學(xué)生掌握情況及時(shí)調(diào)整教學(xué)策略。目前,我們學(xué)校使用本系統(tǒng)已經(jīng)完成了期末考試,部署了16個(gè)機(jī)房,參加考試人數(shù)7000多名學(xué)生,效果良好。
[1]檀小璐.大學(xué)計(jì)算機(jī)基礎(chǔ)考試系統(tǒng)的分析與設(shè)計(jì)[D].秦皇島:燕山大學(xué),2013.李昕.計(jì)算機(jī)基礎(chǔ)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].青島:中國海洋大學(xué),2014.
[2]王劍宇.計(jì)算機(jī)自適應(yīng)考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津大學(xué)軟件學(xué)院,2014.
[3]劉穎,榮義,劉偉.基于VBA通用的上機(jī)考試制卷與評分系統(tǒng)的實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2010,8:32-34.
[4]金炳堯.基于VB程序設(shè)計(jì)的自動(dòng)評閱策略研究[D].金華:浙江師范大學(xué),2013.
[5]高家寶,周婭.Word操作自動(dòng)評分系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [J].河池學(xué)院學(xué)報(bào),2017,37(2):94-100.