陳 敏,湯慧儀
(1.湖南信息學(xué)院電子信息學(xué)院,湖南 長沙 410151;2.廈門大學(xué)馬來西亞分校計(jì)算機(jī)系,馬來西亞 雪蘭莪 43900)
對教師而言,傳統(tǒng)考試通常包括人工出卷、組織學(xué)生現(xiàn)場考試、人工閱卷、手動(dòng)統(tǒng)計(jì)成績和試卷分析等步驟,工作任務(wù)繁重、效率低下,且容易出現(xiàn)誤批[1];對學(xué)生而言,傳統(tǒng)考試只注重某次考試成績,無法完全反映學(xué)生平時(shí)的真實(shí)學(xué)習(xí)情況[2].因此,借助互聯(lián)網(wǎng)改革傳統(tǒng)考試的形式,構(gòu)建功能實(shí)用的在線考試系統(tǒng),從而減輕教師負(fù)擔(dān)、提高考試效率和激發(fā)學(xué)生學(xué)習(xí)興趣,成為當(dāng)務(wù)之急[3].
Java是近年來較為普及的計(jì)算機(jī)語言之一,Java程序設(shè)計(jì)是大學(xué)計(jì)算機(jī)軟件工程專業(yè)的重點(diǎn)專業(yè)基礎(chǔ)課.開發(fā)該課程的在線考試系統(tǒng),對于配合教師教學(xué)、引導(dǎo)學(xué)生自主練習(xí),以及學(xué)生參加Java課程考試、計(jì)算機(jī)考級、競賽訓(xùn)練等都有重要的意義.目前,專門針對Java程序設(shè)計(jì)的考試系統(tǒng)不多,且存在無法滿足在線編程、題型較單一且難度無梯度、缺乏數(shù)據(jù)分析功能和用戶之間難以實(shí)現(xiàn)交互等不足.因此,筆者擬設(shè)計(jì)一個(gè)面向Java程序設(shè)計(jì)課程的在線考試與練習(xí)系統(tǒng),以期減少教師的工作量、提高學(xué)生的學(xué)習(xí)積極性,并為高校在線輔助教學(xué)平臺的開發(fā)提供一定的借鑒.
在線考試與練習(xí)系統(tǒng)包括學(xué)生端、教師端和管理端.學(xué)生端主要負(fù)責(zé)各種考試與練習(xí),教師端主要負(fù)責(zé)試題管理和試后分析,管理端主要負(fù)責(zé)上傳試題和發(fā)布考試.系統(tǒng)設(shè)計(jì)特點(diǎn)如下:(1)題目按難度分級、逐級沖關(guān)設(shè)計(jì),包含專題練習(xí)與各類考試(階段測試、期中期末測試、Java國家水平考試、計(jì)算機(jī)軟考和程序設(shè)計(jì)競賽等)試題;(2)可實(shí)現(xiàn)在線編譯Java程序,即在沒有安裝Java的環(huán)境下依然能調(diào)試運(yùn)行Java代碼;(3)學(xué)生端可以回顧錯(cuò)題,查看答案與解析;(4)學(xué)生端可在論壇中進(jìn)行經(jīng)驗(yàn)交流;(5)具備考試防作弊功能;(6)教師端可以管理試題、查閱學(xué)生分?jǐn)?shù)與答題情況、自動(dòng)生成可交互的動(dòng)態(tài)圖表和分析相應(yīng)數(shù)據(jù)等;(7)試卷批閱分為系統(tǒng)自動(dòng)批閱和人工輔助批閱.
在線考試與練習(xí)系統(tǒng)的功能結(jié)構(gòu)如圖1所示.
圖1 在線考試與練習(xí)系統(tǒng)的功能結(jié)構(gòu)
系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)比較復(fù)雜,篇幅所限,圖2僅示出部分?jǐn)?shù)據(jù)庫ER模型,其中的“學(xué)生-試題-記錄”“學(xué)生-評論-點(diǎn)贊記錄”“學(xué)生-試卷-成績”均為多實(shí)體聯(lián)系.
圖2 系統(tǒng)部分?jǐn)?shù)據(jù)庫ER模型
教師將題目加入題庫以供學(xué)生在任意時(shí)間練習(xí),練習(xí)分為3種,即分級練習(xí)、專題練習(xí)和題型練習(xí).分級練習(xí)是教師將難度相似的試題組成一套試卷導(dǎo)入題庫,難度分為4個(gè)等級,在練習(xí)成績達(dá)到一定要求后可以解鎖更高等級的試卷;專題練習(xí)是學(xué)生輸入一個(gè)關(guān)鍵詞,系統(tǒng)在題庫中模糊匹配相符的題目組成一套試卷;題型練習(xí)是學(xué)生選擇一個(gè)題目類型,系統(tǒng)在題庫中隨機(jī)抽取符合題型的題目組成一套試卷.3種練習(xí)的處理流程分別如圖3~5所示.
圖3 分級練習(xí)流程 圖4 專題練習(xí)流程 圖5 題型練習(xí)流程
對于學(xué)習(xí)Java編程的學(xué)生來說,編程實(shí)踐能力很重要.系統(tǒng)加入在線編譯引擎,學(xué)生可以直接在系統(tǒng)中編譯代碼,然后提交系統(tǒng)由教師在線評分.在線編譯關(guān)鍵代碼如下:
File sourceFile = new File(className+".java"); //保存源代碼
FileWriterfr = new FileWriter(sourceFile);
bw = new BufferedWriter(fr);
bw.write(code);
bw.close();
fr.close();
Runtime = Runtime.getRuntime();
process = runtime.exec("cmd");
bw = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write("javac "+className+".java n"); //往控制臺注入命令
bw.flush();
bw.write("java "+className+" n");
bw.close();
BufferedReaderbr = new BufferedReader(new InputStreamReader(process.getInputStream()));
String content = null;
while((content = br.readLine()) != null){
list.add(content);}
實(shí)現(xiàn)思路為:系統(tǒng)獲取定義類的代碼行,運(yùn)行Windows系統(tǒng)的cmd命令;在控制臺上寫入命令編譯.java文件,系統(tǒng)在程序運(yùn)行時(shí)產(chǎn)生Java類,并編譯成.class文件;系統(tǒng)運(yùn)行.class文件就能獲取控制臺輸出的內(nèi)容并展示給用戶.
本系統(tǒng)已成功應(yīng)用于湖南信息學(xué)院軟件工程專業(yè)Java程序設(shè)計(jì)課程的線上教學(xué),較好地解決了直接利用現(xiàn)有通用型在線教學(xué)平臺(如超星、MOOC等)進(jìn)行Java考試所存在的考試功能不夠、考試形式較單一和不能在線編譯等問題.系統(tǒng)實(shí)現(xiàn)采用當(dāng)前主流技術(shù),軟件框架為Struts2+Spirng+Hibernate[4],前端使用Bootstrap和Ajax[5],數(shù)據(jù)庫使用SQL Server.以下是系統(tǒng)實(shí)現(xiàn)的部分展示.
(1)學(xué)生端.學(xué)生端主要供學(xué)生參加各種考試與練習(xí),針對Java程序設(shè)計(jì)的特點(diǎn),加入了在線編譯功能,用戶即使脫離Java語言環(huán)境也能夠在線編程(圖6).為了防止學(xué)生通過其他網(wǎng)頁搜索答案或信息,系統(tǒng)加入了防作弊功能,第1次進(jìn)入考試頁面就自動(dòng)全屏,當(dāng)系統(tǒng)檢測到用戶在考試中退出全屏3次以上時(shí),將自動(dòng)為其提交試卷并標(biāo)記作弊.防作弊功能效果如圖7所示.
圖6 在線編譯運(yùn)行截圖
圖7 防作弊效果截圖
(2)教師端.系統(tǒng)會(huì)自動(dòng)批閱學(xué)生完成的試卷,教師負(fù)責(zé)管理試題并統(tǒng)計(jì)分析相關(guān)考試數(shù)據(jù)(圖8和圖9).
圖8 數(shù)據(jù)統(tǒng)計(jì)柱形圖截圖
圖9 數(shù)據(jù)統(tǒng)計(jì)折線圖截圖
(3)管理端.管理員使用上傳試題引擎上傳試題,并發(fā)布分級練習(xí)和安排統(tǒng)一考試.圖10示出了發(fā)布分級練習(xí)界面.
圖10 發(fā)布分級練習(xí)界面截圖
設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)面向Java程序設(shè)計(jì)課程的在線考試與練習(xí)系統(tǒng),該系統(tǒng)根據(jù)Java程序設(shè)計(jì)考試的特定應(yīng)用需求加入了各種實(shí)用的特色功能,以適應(yīng)多樣的考試場景及靈活的考試形式.應(yīng)用結(jié)果表明,系統(tǒng)功能豐富,能在幫助學(xué)生積累實(shí)踐經(jīng)驗(yàn)的同時(shí)提高其學(xué)習(xí)積極性.由于系統(tǒng)的開發(fā)具有通用性,因此易于擴(kuò)展到其他程序設(shè)計(jì)語言的在線考試平臺.接下來,筆者將著力于加強(qiáng)系統(tǒng)穩(wěn)定性及提高并發(fā)量,以滿足特定時(shí)間段(如考試時(shí)并發(fā)訪問量瞬間達(dá)到峰值)的需求.