鐵治欣 林永興 冉宇瑤



摘要:目前C語言在線考試正逐步取代傳統考試方式。針對C語言在線考試系統不能適應客觀性試題與主觀性試題混合組卷的缺點,設計開發一個基于B/S架構混合組卷的C語言在線練習與考試系統。學生登錄該系統,可隨時隨地進行C語言練習,并可根據系統給出的評分及答案判斷個人學習掌握情況,既可擴展學生學習時間和空間,也能減輕教師工作壓力。實際應用表明,該系統實用性強,用戶界面友好,可靠性高,在實踐中取得了良好效果。
關鍵詞:C語言;在線考試系統;自動判卷系統
DOI:10.11907/rjdk.192059開放科學(資源服務)標識碼(OSID):
中圖分類號:TP319文獻標識碼:A 文章編號:1672-7800(2019)010-0103-04
0引言
C語言是一種在工業界應用廣泛的程序設計語言,也是高等學校計算機專業基礎必修課程與學生使用計算機及進行后續專業課程學習的最基本工具。作為一門實踐性很強的課程,其旨在培養學生邏輯思維能力、編程能力和解決實際問題能力。課程考試是檢查學生對知識、技能掌握程度和運用情況的一個重要教學環節,是對學習行為的一種行之有效的導向措施。考試在督促學生自覺學習、激發學生創造力、調整教學策略等方面起著重要作用。隨著“互聯網+”在教育領域的不斷發展,人工進行出題、考試、閱卷、成績統計評估及試卷分析的傳統方式已不能適應C語言程序設計課程考試需求。目前,應用于C語言教學的在線考試系統主要分為3類:①通用考試系統,該類考試系統適用多種課程,只要將準備好的題目按規定格式導入題庫即可進行在線考試,但系統通常僅支持客觀性試題的自動判卷,大多不支持主觀性試題,即使支持主觀性試題考試,也不支持主觀性試題自動判卷;②專門為C語言課程設計的在線考試系統,該類系統與第一類功能基本相同,僅支持客觀性試題,如Ren等、王淑艷等設計開發的系統,這種系統由于不能考核編程類主觀試題,所以對學生整體編程能力考察程度較淺。另一些系統僅支持主觀性試題,該類系統通常集成某種OnlineJudge系統,從而實現對編程題目的自動判卷,如褚治廣、張浩斌、曾棕根、陳湘驥等等設計的系統,但由于不能考查客觀性試題,對基本概念的考察較弱。還有一些系統同時支持客觀性與主觀性試題,如周志鋒等開發的系統,但系統沒有練習模式,學生平時無法練習使用;③通過Online Judge系統進行考試,如華中科技大學推出的HUSTOJ系統、北京大學、清華大學、浙江大學各自推出的在線評測系統及杭州電子科技大學的HDOJ系統等,該類系統通常用于ACM國際大學生程序設計競賽(ACM/ICPC),也可在這些系統中以競賽的形式出題進行練習或考試,但該類系統也沒有客觀性試題的設置,因此對基本概念的考察較弱。Wasik等對Online Judge系統及其應用進行了全面綜述,目前能夠適應客觀性試題(如判斷、單選、多選等)與主觀性試題(如程序填空,程序設計等)混合組卷,并能夠支持網上考試與學生自由練習的C語言考試系統并不多見。
因此,本文基于B/S架構,設計開發一個可滿足上述要求的C語言在線練習與考試系統。學生在局域網內可通過瀏覽器在線編程練習或在線考試,系統可智能判卷并記錄評判結果。教師可通過局域網登錄考試系統進行題庫維護、設定組卷方案、開啟/關閉考試、設定平時練習作業及統計學生分數等操作。
1系統設計
1.1系統體系結構設計
系統體系結構如圖1所示。系統部署在學院局域網內,服務器部署在學院中心機房,答題終端主要部署在學院計算機實驗室內。本文系統通過HUSTOJ系統對主觀性試題進行判題,首先部署一套HUSTOJ系統,系統數據庫服務器與WEB服務器也可與HUSTOJ系統共用一臺或多臺服務器,可滿足日常教學小規模使用,同時也可滿足期末考試多課程、多班級考試大規模并發的需求。
1.2系統功能模塊設計
基于B/S的C語言在線練習與考試系統主要包括基本信息管理、題庫管理、試卷庫管理、考試過程管理、在線測試、模擬考試、考生試卷管理、成績管理及系統管理等模塊,如圖2所示。
(1)基本信息管理。該模塊主要完成課程、班級等基本信息管理。課程管理模塊完成對考試課程的管理,包括添加、修改、刪除、查詢等功能;自然班級管理模塊對使用該系統的自然班進行管理,包括添加、修改、刪除、查詢自然班級以及在自然班級中增加、修改、刪除、查詢學生信息等功能;選課班級管理模塊主要根據學生選課情況實現添加、修改、刪除、查詢選課班級及在選課班級中增加、刪除、查詢學生信息等功能。
(2)題庫管理。該模塊主要對系統試題進行管理,包括添加、修改、刪除、查詢、批量導入(出)題目等。題目類型主要包括判斷題、單項選擇題、多項選擇題、程序填空題、運行結果題、程序設計題。每個題目主要包含題目編號、題型、題目內容和標準答案、知識點等信息。
(3)試卷庫管理。該模塊主要包括自動組卷、手動組卷和試卷修改等子模塊。自動組卷功能根據用戶制定的組卷策略,自動生成指定數量的試卷;組卷策略是用戶設定自動生成試卷的一組參數,主要包括策略類型(考試或練習)、每種題型的題量、每種題型中每個題目的分值、每種題型在各個知識點的占比、考試時間與種子試卷數量等;手動組卷功能允許用戶從試題庫中任意挑選題目,并設定其分值,生成種子試卷。試卷修改功能允許用戶瀏覽生成的種子試卷,對不合適的題目進行替換。
(4)考試過程管理。該模塊主要包括開啟考試、關閉考試、考生狀態設置、考生信息查詢等子模塊。開啟考試功能主要設定考試有效截止時間,從試卷庫中抽取一套對應的模板試題生成試卷,生成試卷時會將模板試題中每種類型的題目在該類型范圍內隨機分配題號,對于客觀性試題還將隨機分配其備選項的順序,將考試課程狀態設置為“已開啟考試”;若將該課程狀態設定為“考試關閉”,此時系統會強迫所有參加考試但還未交卷的考生交卷,并關閉考試,考生無法再進入該考試進行答題;由于網絡中斷、機器重啟等客觀原因,需通過主考人員設定考生考試狀態,可通過考生狀態設置功能完成,考生狀態主要有未考試、繼續考試、重考處理、作弊處理、缺考處理、考試中、已交卷、已閱卷等。考生可按學號、姓名、考生狀態等進行信息查詢,支持模糊查詢,并可以Excel格式導出文檔。
(5)在線測試。學生通過瀏覽器訪問考試頁面進行考試,考試前需用學號和密碼登錄系統,只有合法的考生才能登錄系統;選擇合適的考試課程后得到一份考試試卷,學生答卷時,已回答的題目與未回答的題目顏色不同,系統也會自動實時保存考生試卷;考生進行交卷操作或考試時間到被迫自動交卷時,系統將執行交卷操作,此時系統設置相應考生的考試狀態和考試時間,退出考試功能,考生不能再次登錄重復考試。
(6)模擬考試。系統提供在線測試和模擬考試兩個模塊。在考試未開啟的狀態下,進入在線測試模塊,系統提示不能使用,只能使用模擬考試模塊。同樣,在考試開啟狀態下,進入模擬考試模塊,系統提示不能使用,只能使用在線測試模塊。模擬測試與在線測試功能基本相同,但模擬考試模塊增加了一個子模塊顯示模擬考試結果,該模塊的功能是當用戶在模擬考試狀態下交卷后,系統將執行交卷操作,自動閱卷,顯示成績和各題的參考答案。
(7)考生試卷管理。該模塊提供考生試卷查詢及按班級進行考試試卷備份、歸檔等功能。
(8)成績管理。教師登錄后,可查詢所有自己教授課程班級的學生考試成績,并將成績以Excel文件格式導出。
(9)系統管理。該模塊包括角色管理、用戶管理、系統設置等子模塊。系統在權限管理上采用基于角色的權限管理體系,用戶根據所屬角色具有不同的系統功能。完成系統運行相關參數設置后,系統將其存入數據庫中。
1.3數據庫設計
數據庫設計采用Power designer軟件實現。概念設計階段的系統實體聯系圖(E-R圖)如圖3所示,系統主要實體有:系統設置、系統功能信息、角色、用戶、部門、學生、行政班級、課程、知識點、考試課程、題型、題庫、程序問題、組卷策略、組卷策略題型、詳細組卷策略、課程試卷、課程試卷題目、考試班級學生、考生試卷信息、考生試卷程序問題、考試結果等。
系統采用MySQL作為數據庫管理系統。系統需要訪問兩個數據庫,一個是概念模型進一步經邏輯、物理設計后得到的數據庫DBl,另外一個是HUSTOJ項目需要的數據庫DB2,因為本文系統需通過HUSTOJ項目系統自動批改程序設計題目。
2主要實現方法
2.1考試過程管理實現
考試過程管理模塊是一個非常重要的模塊,其主要任務是管理教師對考試整個過程的控制,包括開啟、關閉考試,查詢、設置學生狀態等,其流程如圖4(a)所示。
2.2在線與模擬測試實現
系統在線與模擬測試流程如圖4(b)所示。學生登錄系統后,若教師沒有啟動考試,則學生自動進入模擬測試模式,學生可選擇練習范圍,由系統給出練習題進行模擬考試,學生交卷后,系統會進行判卷并逐題給出學生得分與參考答案;若教師已經啟動考試,則學生自動進入考試模式進行考試。
2.3試卷生成
學生試卷生成需要經過兩大步驟:生成課程種子試卷和生成學生卷。
生成某一考試課程C種子試卷的核心步驟包括:①讀取本考試課程的組卷策略S;②對組卷策略S中的任一題型P,根據組卷策略S設定的分數占比及每題分值,計算題型P的題目個數PN;③對于任一知識點K,根據組卷策略S設定的知識點K的分數占比,計算題型P在知識點K中的題目個數KN;④從試題庫中隨機抽取課程為C,題型為P,知識點為K的KN個題目;⑤至此生成一套種子試卷,重復步驟②-④,直到生成規定數量的種子試卷為止。
生成學生卷的核心步驟如下:
(1)對于每個參加某課程考試的學生S,當通過身份認證后,系統做以下步驟;
(2)在試卷庫中存貯的本考試課程的種子試卷中任取一份試卷,記為R,做以下步驟;
(3)對于R中的任一題型P,假設這一類型的題目數量為PN;
(4)設定學生S試卷中類型為P的題目題號i=1;
(5)任意選取P中的一道題目Pi,Pi即為學生試卷中類型為P的題目第i題目,若第i道題有多個選項,則將這些選項隨機排列,并將正確的選項記錄下來,生成第i道題目;
題目題號i增加1,若i
2.4自動判卷實現
對于客觀性試題,由于在生成學生試卷時已記錄正確選項,所以只需對比學生答題答案與生成試卷時答案的字符串,若完全一樣則判定學生答案正確,否則不正確。
對于主觀性試題,如程序設計題目,采用開源項目HUSTOJ搭建的在線評測系統實現自動判題。系統中的每個程序設計題目均有一個屬性用于記錄該題目在HUST0J中的題號,這樣兩個系統中的程序設計題目將建立——對應關系。本文系統設計了一個監視服務進程,當學生提交新答案后,該進程將相應判題任務加入HUSTOJ數據庫的任務隊列中,由HUSTOJ完成判題,系統定時從HUSTOJ數據庫取回判題結果。
3結語
本文設計開發了一個基于B/S的C語言在線自由練習與考試系統。實踐表明,該系統實用性強,用戶界面友好、簡潔,可靠性高,可適應多個教學班級同時在線練習或考試。系統上線后,學生可以在學院局域網內隨時隨地進行C語言學習,不僅使學生的學習時間、空間得到了擴展,而且大幅減輕了教師教授C語言課程的工作壓力,提高了教師工作效率。下一步將進一步擴展,使系統實現其它語言(如Java、C++、Pascal)的在線練習與考試。