摘 要:“程序設計語言”課程機考系統(tǒng)以Eclipse為開發(fā)平臺,采用JSP和MySQL數據庫技術,實現了程序設計語言課程機考系統(tǒng)。針對程序設計語言學科,供教師和學生使用,實現對選擇、填空、編程3類題型的自動組卷與自動批改,教師可對學生、試題和考試范圍進行管理,學生能夠參與考試并查看考試結果。此系統(tǒng)不但能減輕教師工作壓力、節(jié)約資源,更能保證考試的公平性。
關鍵詞:Java服務器頁面;MySQL;編程題;自動組卷;自動批改
互聯網技術迅速發(fā)展,在各行各業(yè)都得到了廣泛的應用,對購物、出行、教育等方面作出了巨大貢獻。教育是人們密切關注的,在線教育的發(fā)展使得在線考試系統(tǒng)得以實現與應用,例如,藍橋杯、CCF等應用于競賽、認證的在線機考系統(tǒng),但此類系統(tǒng)尚未在教學管理中普及,尤其是對于計算機專業(yè)的學生而言,該技術的實現是有可行性且有必要的。本系統(tǒng)針對學生學習“程序設計語言”課程,設計基于B/S架構的在線機考系統(tǒng)[1]。
1 ? ?“程序設計語言”課程機考系統(tǒng)的功能要求
本系統(tǒng)的總目標是通過JSP、數據庫技術和tomcat服務器搭建基于網頁的“程序設計語言”課程機考系統(tǒng),目的在于設計良好的人機交互界面,易于學生、老師的操作;實現無紙化考試,提高考試公平性。本系統(tǒng)針對兩類角色,有兩個主界面:第一,用于老師登陸,主要負責考試試題、學生信息的管理以及每次考試范圍的設定[2]。第二,用于學生登陸,并進行在線考試和最終成績查詢。從總體上考慮,本系統(tǒng)應實現如下功能:
(1)題庫管理。老師可以對題庫內的所有題目進行修改、刪除,添加關于選擇、填空、編程3類的新題目。(2)用戶注冊登錄。老師的賬號由系統(tǒng)管理員發(fā)放,無需注冊,可直接在登錄界面登錄;學生第一次使用時,需在注冊頁面注冊后方可登陸。(3)學生信息管理。老師可以對學生的資料進行查詢、修改和刪除。(4)考試范圍設置。老師可以對每次考試的題目范圍進行設置。(5)在線考試。學生點擊開始考試后,進入考試界面,所有題目都由系統(tǒng)在數據庫內隨機抽取,保證考試公平性。學生需在規(guī)定時間內提交考卷,否則強制提交[3]。(6)成績查詢。學生提交試卷后,可立即查看自己的成績。
2 ? ?“程序設計語言”課程機考系統(tǒng)的功能實現
對于注冊登錄和信息、題目管理等頁面功能,都是通過基礎的JSP技術對數據庫內數據的查詢、管理實現的,在線考試功能實現的過程如下。
2.1 ?選擇填空部分
(1)實現自動組卷。自動生成的試卷需滿足題目是隨機抽取且在老師設置的考試范圍內。先從數據庫中讀取考試范圍:起始單元(Range1)和終止單元(Range2),再由"select * from store where range<="+Range2+" and range>="+Range1+" order by rand() limit 25"這樣一條SQL語句實現對滿足條件題目的抽取,其中,“25”表示隨機生成的題目數量,最后,依次輸出到頁面上。
(2)實現題目批改。在頁面上,每輸出一道題目,就同時創(chuàng)建隱藏的標簽用于存放,表示從數據庫內讀取的該題正確答案的變量,判斷學生的答案是否與對應變量存放的正確答案一致,即可完成對題目的批改。
2.2 ?編程題部分
題目的抽取方式與選擇填空部分類似。實現編程題批改的具體過程如下:
(1)在E盤創(chuàng)建一個TXT文檔,將學生書寫的Java代碼寫入TXT文檔中,并保存為read.java。
(2)運用命令腳本語言實現對該Java程序的編譯:
String path = "E:/read.java";
Process p1 = Runtime.getRuntime().exec("javac -classpath E:/ " + path);
若編譯成功,則在E盤目錄生成字節(jié)碼文件read.class。
(3)若編譯成功,則繼續(xù)運用命令腳本語言并調用cmd,實現對該Java程序的執(zhí)行:
String arr[] = {"CLASSPATH=E://","Path=C:\\Program Files\\Java\\jdk-12.0.2\\bin"};
Process p2 =Runtime.getRuntime().exec("cmd /c java read", arr, new File("E://")) ;
執(zhí)行后可讀取運行結果。
(4)將運行結果與數據庫內存放的正確答案比對,相同則正確。
3 ? ?系統(tǒng)的不足與今后的研究方向
該系統(tǒng)編程題成績的批改是通過判斷編譯成功與否和運行結果是否與數據庫內存儲的正確結果一致來評分,就會導致成績沒有區(qū)分度,掌握70%~80%的學生與完全不懂的學生所得的分數很可能是一樣的,顯然是很不嚴謹、不夠公平的。
對此,本團隊查詢了相關資料,得到相關解決方案:結合動態(tài)檢測和靜態(tài)分析來完成對編程題分數的批改。首先,判斷該程序是否能通過編譯并運行出答案,若能,則進入動態(tài)檢測,輸入不同測試用例來評分;否則,進入靜態(tài)分析,判斷程序內是否含有相應關鍵字、關鍵語句匹配該題考查知識點以及該程序結構是否符合標準來綜合獲取得分,以有效解決編程題成績批改不嚴謹的問題[4]。
4 ? ?結語
本系統(tǒng)通過多次細致的測試及鑒定,證明是具有可行性的,能夠基本滿足初學“程序設計語言”課程學生的需求,但該系統(tǒng)還有待升級,如窗口界面和系統(tǒng)功能不夠完善、用戶界面不夠美觀、編程題批改不夠嚴謹等。因此,后續(xù)將繼續(xù)開展工作與研究,完善不足。
[參考文獻]
[1]劉暢.《大學計算機基礎》無紙化考試系統(tǒng)的設計與實現[D].哈爾濱:黑龍江大學,2010.
[2]程小明.基于B/S模式的網絡考試系統(tǒng)設計與實現[D].重慶:重慶大學,2006.
[3]宋雪亞,王傳安.基于JSP的在線考試系統(tǒng)設計與實現[J].湖南工程學院學報,2017(2):53-54.
[4]臧雙媛.C語言編程題在線評測系統(tǒng)的設計與研究[D].北京:北京交通大學,2017.
基金項目:校級大學生學術科技創(chuàng)新項目“程序設計語言課程機考系統(tǒng)的研究與實現”(X20190404)
作者簡介:葛思磊(1998— ),漢族,江蘇蘇州人,本科生;研究方向:計算機科學與技術。