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