[摘要] 高校的考試對學校來說一直是一項繁重的工作。針對此種情況,本文提出一種高校VFP課程無紙化考試系統的設計方法并開發出實用的軟件。此軟件包括隨機抽卷、考生狀態監控、自動收卷、計算機評卷、成績輸出等功能,實現了從出卷、考試到批改試卷的全程無紙化,簡單高效。把該考試系統應用于筆者所在學校VFP課程的期末考核中,獲得了較好的效果。
[關鍵詞] VFP; 無紙化考試; SQL; 計算機評卷
[中圖分類號] G420;TP315 [文獻標識碼] A [文章編號] 1673 - 0194(2013)05- 0102- 02
1 引 言
Visual FoxPro是Microsoft公司推出的數據庫開發軟件,也是全國計算機等級考試所要求科目之一。在全國高校中,計算機專業開設該門課程,是作為數據庫開發的一門高級語言;非計算機專業開設該門課程,是作為繼計算機基礎課程之后,深入學習計算機知識的一門計算機語言類課程,且可以幫助學生通過全國計算機等級考試。
對于VFP課程的學習,除了掌握必要的理論知識外,更重要的是實際操作,如:數據庫的建立、程序的編寫、表單的建立、SQL語句的編寫等。而對于這些實際操作的考核,用傳統紙質試卷無法做到[1]。
因此,有必要開發基于微型計算機的無紙化考試系統,來克服紙質試卷的缺點。另外,無紙化考試還具有降低考試工作量、提高效率、防止作弊、考試環境與工作實際類似、增加學生動手能力、低碳等優點[2]。
2 系統設計
本系統基于局域網進行設計,使用Visual FoxPro 6.0語言進行開發。包括三部分:服務器端、學生端和改卷程序。
2.1 服務器端
服務器端的作用是對考試數據的輸入、導出、維護和監控。具體功能有:
2.1.1 試題包的導入
可以在考試前導入試題包。試題包包括:單個文件網頁(mht)格式的文本文件,用于在學生端進行顯示,供考生讀取試題信息;供考生實際操作和SQL語句操作的各種文件。為了防止相鄰考生作弊,試題包有多個,學生登錄時隨機抽取一套。導入試題包內容的命令為:Copy file *.* to目標文件夾\*.*。
2.1.2 考生表的導入
考試前需導入考試班級學生的名單,名單的格式為DBF,結構為:
學號(C型,8),姓名(C型,8),狀態(C型,6),班級(C型,20)。
導入考生表的命令為:Copy file考生表.dbf to目標文件夾\考生表.dbf
2.1.3 顯示考生狀態
為一個表單,上面顯示正在考試班級的每個考生的狀態(未登錄,登錄,已交卷)及整個班級處于各種狀態的人數。其中,統計處于“已交卷”狀態的人數的命令為:
count for狀態=’已交卷’to thisform.text3.value
2.1.4 備份考生考試數據
每場考試結束后,需要備份的考試數據。數據包括學生的答題卡和實際操作產生的各種文件,改卷程序將依據這些文件為學生評分。
2.1.5 添加考生信息
在實際考試中,經常需要臨時添加考生到某個考場中,采用的辦法是,建立一個表單,上面添加4個文本框,用來輸入學號、姓名、狀態、班級信息,然后用如下命令添加到考生表中:
insert into考生表values(alltrim(thisform.text_xh.value),alltrim (thisform.text_xm.value),alltrim(thisform.text_zt.value), alltrim(thisform.text_bj.value))
2.2 學生端
學生端的作用是提供考生登錄時的身份驗證,從服務器把考題隨機拷貝到學生端計算機,交卷,以及考試的試題板等[3]。具體功能為:
2.2.1 登錄時驗證信息
為了防止誤輸入別人學號及走錯考場,考生登錄時,需要輸入自己的學號,系統根據學號在服務器端的學生表中查詢出相應的姓名,顯示在學生端,供考生確認。
2.2.2 二次登錄和防止學生重復考試
在考試過程中,難免出現死機、斷電等非正常退出。在這種情況下,應該允許學生再次登錄,從非正常退出前的狀態下繼續做題,正常交卷。前提是需要監考老師輸入二次登錄密碼。判斷考生非正常退出的命令是:
IF len(alltrim(xmzt(1)))>0 and alltrim(xmzt(2))=’登錄’
messagebox(\"您已經登錄過,如果想再次登錄,請監考老師輸入二次登錄密碼\")
ENDIF
2.2.3 隨機抽取試題和二次登錄抽取試題
為了防止學生作弊和猜題,本系統采用隨機抽取試題:服務器端有多套試題,分別保存于不同的文件夾中,考生在學生端經過驗證后,隨機復制一套試卷到學生端計算機。
本系統采用對時間函數產生的數值進行處理獲得隨機數的辦法。例如服務器中有6套試題,分別保存于6個文件夾中:shiti 0,shiti 1,…,shiti 5,對這6套試題復制的命令如下:
Shiti_NO=alltrim(str(SEC(DATETIME( ))%6))
Shiti_direct=’\\sever\shiti’+ Shiti_NO+’\*.*’
COPY file Shiti_direct to考生目錄
經過對系統在實際應用過程中抽取試題套數的統計,發現每套題被抽中的概率相同,從而實現了隨機抽取試題的目標。
2.2.4 在學生端顯示試題
考試需要顯示試題給學生,在表單中,顯示大量文本通常使用的是編輯框,但編輯框有其不完善的地方,比如數據源不靈活,文本的頁面無法設置(如行間距和頁邊距等)。這為實現試題顯示的方便性和美觀性帶來了困難。
為了克服這些缺點,本系統采用的是使用VFP 6.0提供的瀏覽器控件_webbrowser 4,利用格式為MHT的網頁文件作為其數據源的辦法。
本系統使用3種題型對學生進行考核:選擇題、實際操作題和SQL題。題板為一個表單,上面添加一個頁數目為3的頁框,每個頁上面放一個_webbrowser 4控件,每個_webbrowser 4控件的navigate屬性設置為存放相應題的MHT文件,如:
thisform.Pageframe1.Page1._webbrowser41.navigate(‘選擇題.mht’)
其中“選擇題.mht”為頁面已經設置好的文本文件。實際操作題和SQL題也做類似設置即可。
2.2.5 答案的保存
根據題型的不同,答案有3種情況:實際操作題答案為學生所創建的各種文件,保存于考生目錄中,交卷時直接提交即可。本系統設計為只要學生是從答題板上啟動的VFP軟件,則系統自動把考生目錄設置為默認目錄,學生所做實際操作題全部保存于考生目錄;選擇題答案的保存采取的辦法為設置數個按鈕數目為4的選項按鈕組,在其InteractiveChange事件中加入如下代碼:
If thisform.Optiongroup.Option1.value=1
UPDATE 答題卡 set 選擇1=’A’
ENDIF
對于SQL題的答案,本系統設計為要求學生填寫在題板中設置好的編輯框中,在編輯框的InteractiveChange事件中加入如下代碼:
UPDATE答題卡 set sql1=this.value
2.2.6 答案的提交
無紙化考試的關鍵之一是如何把學生所做的答案準確無誤地提交。本系統設計了兩種交卷方法:第一種是手動交卷,在考試時間截止之前,點擊答題板上的“交卷”按鈕,經過學生確認以后,學生端即可把考生目錄中的所有文件提交到服務器上。使用的命令為:
COPY file *.* to \\sever\VF收卷\考生目錄
第二種交卷方法是系統自動交卷,配合Timer控件的倒計時,在考試時間只剩5分鐘的時候提醒考生一次。時間耗完,使用上述命令強制交卷。
2.3 改卷程序
如何對學生提交上來的答案進行計算機自動改卷,是無紙化考試另外一個關鍵。本系統改卷程序的功能主要包括標準答案的輸入、批改試卷和成績輸出[4]。
2.3.1 標準答案的輸入
為一個表單,上面放置一個表格控件,向表格控件添加如下內容:試題套數(C型,2),數個選擇題答案(C型,1),數個SQL題答案(memo)。改卷程序依據這些數據對學生的選擇題和SQL題進行批改,判分。
2.3.2 試卷的批改
有3種題型,需要3種改卷方法。
第一種,選擇題的批改。只需要把考生答題卡表中的選擇題答案分別和標準表中相應試題的選擇題答案進行比較,相同說明考生做對。
第二種,對實際操作題的批改。雖然實際操作題也為客觀題,但實際考試中涉及多種操作,多種操作產生多種格式的文件。這給批改帶來了一定的困難。本系統采取的辦法是先建立一個文件夾,文件夾中放入標準的實際操作產生的各種文件,把考生的文件夾中的文件和標準文件夾中的文件進行比較,相同說明正確。
對于文件的比較,在VFP中,表單文件、項目文件、報表文件、數據庫文件等都可以把它們當作VFP數據表的形式打開,打開之后,用比較表內容的方法比較即可。
第三種,SQL題的批改。SQL題屬于主觀題,答案可以不唯一。這也是無紙化考試的一個難點。本系統對SQL進行批改的方法主要分3步[5]:
(1) 關鍵部分的檢查,比如查詢的字段名,某些查詢條件等。如果關鍵部分不正確,則該SQL語句肯定不正確,不加分。
(2) 第(1)步正確的情況下,判斷SQL語句是否有語法錯誤。判斷的方法是執行語句,能執行則說明無語法錯誤。此時需要用到VFP軟件中ON ERROR命令。此命令的功能是當程序發生錯誤時,執行指定的操作。
(3) 如果第(2)步正確,需要判斷執行的結果是否滿足要求。判斷的方法是,讓標準答案表中相應的SQL語句執行,查詢結果生成一個表。讓學生答題卡表中的SQL語句執行生成另外一個表。檢查這兩個生成的表內容是否相同,如果相同,說明預判斷的SQL語句正確。
2.3.3 成績輸出
由程序生成的成績表為DBF格式,為了方便成績的查看,設置了導出為XLS格式的功能,相應的命令為:
Use成績表
COPY TO成績表TYPE XLS
3 驗 證
本系統用于筆者所在學院2009級1 023人和2010級1 012人的VFP課程期末考核。系統運行順利,減少了教師50%以上的工作量,節省了70%以上的批改試卷的時間;VFP成績公布后,無1名學生對自己的成績提出異議;本系統配置簡單。使用結果驗證了本系統的正確性和實用性。
主要參考文獻
[1] 申杰,王文凡,等. 高校《Visual Foxpro應用》課程考核改革的探索[J].華北水利水電學院學報:社科版,2010(4):175-177.
[2] 李曉宇. 新時期高校無紙化考試系統應用的幾點思考[J]. 中國科教創新導刊,2011(28):36-37.
[3] 李健,陳劍英,等. 一種基于能力考核的無紙化考試系統的設計與實現[J]. 計算機與現代化,2011(11):158-161.
[4] 王珠強,葛新旗. 無紙化考試系統評價體系研究[J]. 中國管理信息化,2010(21):73-75.
[5] 辛守庭,徐超. 一種在程序中判斷SQL正誤的方法[J]. 信息系統工程,2012(8):139-150.