張艷肖 張靜妙 河北經貿大學計算機中心
大學計算機基礎是非計算機專業學生大一的必修課程[1],課程理論部分的考核一般采用選擇題、判斷題形式,而實踐部分在課程中是至關重要的,主要包括操作系統、辦公軟件和網絡的應用。目前很多高校正在使用的考試系統存在著試題庫不能更新,考核模塊所有專業的學生都相同,甚至還存在著手工判卷[2]的現象。結合學校的課程改革,我們開發了基于VBA (Visual Basic for Applications)評分策略的大學計算機基礎課程的練習和考試系統。在實踐課上學生可以在練習模式下自由選擇練習的模塊,系統自動抽題[3],并對學生的操作進行評分,并給予詳細的步驟評分結果,可以有效提高學生的實踐操作能力。考試模式下系統能夠根據考試要求進行組卷,考核模塊可根據專業特色進行選擇。教師能根據教學要求,自主更新Office操作題的試題庫。
VBA是Visual Basic的一種宏語言,是微軟開發的在其應用程序中執行通用的自動化(OLE)任務的編程語言[4]。Office中的應用程序(WORD、EXCEL、PPT)在VBA中都被看作是一個對象。如Word 的Application對象[5]中包含了Word的文字、段落、頁眉頁腳、頁面設置、圖片、文本框、藝術字等對象,每個對象都有它的屬性。系統評分時將答案文件中給定對象的正確屬性值和學生做題文件的該對象屬性值做比較,計算該對象的得分。
我們采用EXCEL工作簿存儲每套題的答案文件,好處是每一行存儲了一個得分點的所有知識點信息。一個得分點可以由多個知識點組成,也可以有多種正確答案,用“AND”或“OR”標識。
第一行存儲了該套題滿分的分值,15分。從第二行開始存儲該套題所考核的知識點,如:查找文字,知識點關鍵詞標識為“FINDCOUNT”,參數有兩個,第一個參數為查找的文字內容,如“玫瑰”,第二個參數為文字的個數,如17。“AND”表示該行所有的知識點都正確才能得分,“OR”表示該行只要一個知識點正確即可得分。每一行的最后兩個單元格分別存儲了該題的分值和題目的具體描述信息。文件最后用“END”表示結束。
我們對Windows、Word、Excel和PPT常用的知識點進行了歸納梳理。在Word中,常用的對象有文檔、文字、段落、頁面、頁眉頁腳、分欄、圖片、文本框、藝術字、表格等。Excel常用的對象有工作簿、工作表、單元格、文字、公式和函數、圖表等。PPT常用的對象有演示文稿、幻燈片、文字、圖片、超級鏈接、幻燈片切換、幻燈片動畫、模板等。這里僅對Word圖片、文本框和藝術字的評分用到的屬性做一個介紹。
環繞方式為嵌入型的屬性:.InlineShapes,非嵌入的:.shapes。.
判斷對象是否存在:type屬性值6為表示是一個組合對象、13為圖片、17為藝術字或文本框。
對象大小和環繞方式:.Width、.Height、.WrapFormat.Type.和 WrapFormat.Side。
對 象 位 置:.Left、.RelativeHorizontalPosition、.Top和.RelativeVerticalPosition。
文 字 環 繞 距 正 文 距 離:.WrapFormat.DistanceTop、.DistanceBottom、.DistanceLeft和.DistanceRight。
文本框或藝術字文字內容:.TextFrame.TextRange.text。
文本框線條和填充顏色:.Shapes(1).line.ForeColor.和.Fill.ForeColor
文 本 框 內 部 邊 距:.MarginTop、.MarginBottom、.MarginLeft和.MarginRight
藝術字樣式:.TextFrame.TextEffect.PresetTextEffect
系統采用C/S結構,學生端和服務器端功能模塊設計如圖1所示。
開發環境:vb6.0、Office2010、SQL Server2008。

圖 1 系統學生端和服務器端功能模塊圖
服務器端使用SQL數據庫,主要包含的數據庫表如下:
學生信息表:存儲了學生的考號、姓名、性別、班級、學院信息;主鍵是考號。
單選題信息表:存儲了單選題的類型、類型名稱、該類題目總個數、系統抽該類題目個數和每道題分值。主鍵是單選題類型。
單選題試題表:存儲了單選題號,試題類型,正確答案、題目內容以及四個選項。主鍵是單選題號和試題類型的組合,外碼是試題類型。
考試模塊設置表:存儲了各試題模塊名稱,考試時在服務器端進行考試模塊的選擇。
學生所抽單選題表:存儲了學生考號、學生考試時抽到的單選題編號、試題號、試題類型、正確答案和學生所做的答案。主鍵是學生學號和單選題編號的組合。
學生考試成績表:存儲考試模式下每場次學生考號、各模塊的滿分值和學生得分(word模塊分三部分計分:文字處理、圖片和表格;excel模塊分兩部分計分:基本操作和圖表)、機器名稱、機器IP地址、考試狀態、各模塊學生所抽試卷號。每場考完,導出考試成績后可將此表數據備份到總考試成績表,然后將此表清空。主鍵是學生考號。
練習模式下,學生可進行單模塊練習、綜合練習和隨機抽題,如圖2所示。考試模式下,根據學生考號,判斷學生考試狀態,首次登陸、二次登陸、還是已完成考試,根據考試狀態分別予以不同處理。登陸成功后,首先將在考試盤創建考生文件夾,將考生用到的試題文件復制到考生文件夾下,然后打開試題窗口和考生文件夾窗口。
打開考生文件夾窗口方法:

圖 2 學生端練習方式登錄
使用windows的API函數ShellExecute,在程序中調用該函數之前,在標準模塊先進行原型聲明,再調用該函數,調用的命令如下:

其中,driver代表創建考生文件夾的驅動器,user代表考生文件夾名字。
使用API函數MoveWindow可以移動窗口的位置,用來調整試題窗口和文件夾窗口布局合理。
選擇題的組卷過程:
首先從單選題信息表中,取出每種類別的單選所抽題目個數及每道題分值,然后產生指定范圍內的隨機整數,表示所抽單選題的該類別序號,注意所抽題目序號不能重復,如重復,則重新產生隨機數。根據產生的序號和類別從單選題試題表中取出該題正確答案,將該學生抽到的單選題類別、題目序號和該題正確答案存儲到學生所抽單選題表中。
操作題的組卷過程:
練習模式下,單模塊練習和綜合練習根據登陸模塊學生的選擇進行抽題,隨機抽題每個考核模塊均采用Rnd函數產生0-試題套數之間的一個隨機整數。考試模式下,服務器端組卷管理模塊中可以選擇選擇本場考試的模塊,然后根據選擇模塊利用Rnd函數產生隨機整數進行抽題。
根據學生單擊哪個模塊,將該模塊所抽試題內容進行顯示。試題內容以word文檔形式存放,采用口令加密方式進行安全保護。試題顯示采用RichTextBox控件,它能顯示帶格式的word文檔。由于采用了口令加密,所以裝入RichTextBox時需要轉換為.rtf格式,否則將顯示亂碼。解決方法:將口令加密文件轉換為不帶口令的.rtf臨時文件,臨時文件存儲在windows安裝目錄(用windows的API函數GetWindowsDirectory獲取),評分時將臨時文件刪除。單選題顯示時,根據組卷模塊學生所抽單選題的類別和序號,查找單選題試題表,將題目內容進行顯示,將學生所做單選題答案也存儲到學生所抽單選題表中。
為了實現通用性,我們編寫了Windows、Word、Excel、PPT各模塊評分的函數過程,調用函數時需要傳遞的參數為: 學生做題文件和答案文件。函數調用后返回學生分數。在Word和Excel評分函數中,根據知識點的類別不同,分別統計學生得分。
下面以圖1中設置word插入的圖片位置,水平距頁面右側13厘米,垂直距段落下側6厘米為例,介紹實現方法。
定義變量key,存儲從答案文件中讀到的知識點的關鍵詞,如“OBJLEFTTOP”,它有4個參數存儲相關屬性值,canshu1存儲水平方向度量值13厘米,canshu2存儲水平方向度量單位:“距頁面”值為1,canshu3存儲垂直方向度量值6厘米,canshu4存儲垂直方向度量單位:“距段落”值為2,fenzhi存儲該題分值2分。如果textcanshu2或textcanshu4值為-1,表示不判斷此方向。
我們編寫了tuxingweizhi函數,實現判斷圖形的位置。讀取學生的做題文件,將學生文檔的圖形對象的各個屬性值和答案文件的屬性值做比較,由于word圖形的位置值是以磅值為單位,所以還需要使用CentimetersToPoints函數將答案文件的度量單位厘米值轉換成磅值。部分代碼如下:

系統實現了單選題、Windows、Word、Excel、PPT 操作試題的添加、刪除和修改。圖3是添加Excel操作題的界面,添加試題后會自動生成該套題的答案文件和試題文件,可以對其進行修改和刪除。我們將Office操作題經常考核的知識點分類整理成菜單形式。下面以題目對“期末成績”工作表的“a3:k3”單元格填充淺綠色底紋,12.5%灰度為例,介紹系統提供的兩種生成答案文件的方法。
第一種方法:我們將常用的顏色、字體、字號、圖案格式、預設顏色等屬性值做成了菜單。教師按照提示直接輸入或使用菜單中的“顏色設置”、“圖案格式設置”,寫入知識點“單元格底紋”的5個參數值。
第二種方法:只需輸入前2個參數值,工作表名和單元格名,然后單擊“寫部分知識點答案”命令按鈕,將打開出題老師做好正確答案的工作簿文件,讀取指定工作表和單元格的底紋的另外3個參數值,寫入答案文件中。如果教師已經做好了正確的答案文件,推薦使用第二種方法,因為有些知識點的參數值是不太容易直接寫的,比如公式和函數、圖表繪圖區格式等,采用第二種方法,生成答案文件比較容易。
成績管理模塊:可以對學生成績進行導出和備份等功能。學生信息管理模塊:提供下載模板、上傳學生名單、添加、修改、刪除。單選題管理提供了對單選題的上傳、添加、修改和刪除等功能。組卷管理模塊:可以對單選題每種類型抽取的題目個數和分值進行設置;可以對操作題的考試模塊進行選擇。數據庫維護模塊:用戶信息維護、數據庫初始化、數據庫的備份和還原。用戶管理模塊設計:系統有4類用戶,一般用戶、一般管理員、題庫管理員和超級管理員,分別設置不同的權限。
本系統這個學期在我校大學計算機基礎課程的實踐課上投入使用。練習模式下教師可以指定模塊或同學們自行選取模塊進行練習,可以將成績上傳到服務器,教師可以及時掌握學生各模塊各部分的學習情況,從而有針對性的進行輔導和講解。教師也可以根據教學安排,添加新的試題,進入考試模式來進行期中或階段測驗,根據學生掌握情況及時調整教學策略。目前,我們學校使用本系統已經完成了期末考試,部署了16個機房,參加考試人數7000多名學生,效果良好。
[1]檀小璐.大學計算機基礎考試系統的分析與設計[D].秦皇島:燕山大學,2013.李昕.計算機基礎考試系統的設計與實現[D].青島:中國海洋大學,2014.
[2]王劍宇.計算機自適應考試系統的設計與實現[D].天津:天津大學軟件學院,2014.
[3]劉穎,榮義,劉偉.基于VBA通用的上機考試制卷與評分系統的實現[J].電腦編程技巧與維護,2010,8:32-34.
[4]金炳堯.基于VB程序設計的自動評閱策略研究[D].金華:浙江師范大學,2013.
[5]高家寶,周婭.Word操作自動評分系統的設計與實現 [J].河池學院學報,2017,37(2):94-100.