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