馮麗露 康耀龍 高曉晶 王濤
摘要:本文基于JSP、Spring、Mybatis、Mysql等技術(shù),設(shè)計(jì)實(shí)現(xiàn)了基于SSM框架的數(shù)據(jù)結(jié)構(gòu)在線評(píng)測系統(tǒng)。本系統(tǒng)是一個(gè)在線評(píng)測網(wǎng)站,提供了豐富的算法題目以及必要的交流論壇,用戶可以在網(wǎng)站內(nèi)提交自己的程序代碼,系統(tǒng)會(huì)自動(dòng)進(jìn)行編譯并返回結(jié)果,管理員可以實(shí)現(xiàn)添加題庫題目、查看學(xué)生答題記錄、導(dǎo)出學(xué)生成績等。本系統(tǒng)為用戶提供了一個(gè)練習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的在線評(píng)測平臺(tái),方便學(xué)生在學(xué)習(xí)過程中更好地將理論同實(shí)踐結(jié)合,進(jìn)而充分發(fā)揮互聯(lián)網(wǎng)優(yōu)勢,使學(xué)習(xí)效益最大化。
關(guān)鍵詞:在線評(píng)測;信息管理;數(shù)據(jù)結(jié)構(gòu)
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2021)13-0086-04
數(shù)據(jù)結(jié)構(gòu)與算法的在線評(píng)測系統(tǒng)的主要用途是對用戶提交的程序代碼進(jìn)行自動(dòng)評(píng)測,并將評(píng)測結(jié)果告知用戶。在線評(píng)測機(jī)對用戶提交的代碼進(jìn)行編譯、鏈接、執(zhí)行,并將程序最終執(zhí)行結(jié)果同預(yù)期輸出進(jìn)行比較。在線評(píng)測系統(tǒng)一般包括判題機(jī)、評(píng)測樣例存儲(chǔ)服務(wù)器、網(wǎng)頁服務(wù)器。
● 相關(guān)開發(fā)技術(shù)
本系統(tǒng)采用當(dāng)下較為流行的JSP、Spring、Mybatis、Mysql技術(shù),這些技術(shù)發(fā)展較為穩(wěn)定,安全性高,容易上手編程。
JSP可以訪問Servlet、Java Bean,同時(shí)支持在網(wǎng)頁中直接嵌入Java代碼。Spring為Java企業(yè)級(jí)項(xiàng)目應(yīng)用程序開發(fā)提供了集成的整合框架。Spring利用控制翻轉(zhuǎn)和面向切面編程技術(shù)實(shí)現(xiàn)了低入侵式編程,降低代碼之間的耦合度。[1-2]Mybatis不會(huì)對應(yīng)用程序數(shù)據(jù)和數(shù)據(jù)庫表中已有結(jié)構(gòu)產(chǎn)生任何的負(fù)面影響,SQL語句在配置的Xml文件中管理,解除了原有設(shè)計(jì)過程中程序代碼同SQL語句的耦合,使得業(yè)務(wù)層邏輯同SQL語句分離,從而提高了代碼的可維護(hù)性和編程的易實(shí)現(xiàn)性。[3]
● 系統(tǒng)需求分析
①為了方便教師和學(xué)生通過互聯(lián)網(wǎng)進(jìn)行訪問,系統(tǒng)采用B/S進(jìn)行架構(gòu),免去了C/S架構(gòu)安裝的麻煩。學(xué)生在網(wǎng)絡(luò)環(huán)境良好的情況下就能進(jìn)行在線提交和在線討論。
②數(shù)據(jù)信息的保存需要安全可靠,所以,在數(shù)據(jù)庫選擇方面選擇關(guān)系型數(shù)據(jù)庫Mysql,同時(shí),為了應(yīng)對后期數(shù)據(jù)量增多導(dǎo)致查詢效率下降的問題,需要對數(shù)據(jù)進(jìn)行分類存儲(chǔ),對數(shù)據(jù)量較大的表另做分庫分表的設(shè)計(jì)。[4]數(shù)據(jù)庫中的表主要用于存放用戶信息、題目信息、提交記錄、評(píng)論內(nèi)容等。
③對不同登錄人員的權(quán)限控制。為了確保系統(tǒng)的安全性、穩(wěn)定性,要避免非授權(quán)用戶登錄后臺(tái)系統(tǒng)進(jìn)行的非法操作。
④系統(tǒng)對學(xué)生提交代碼具有評(píng)測功能,能對學(xué)生的解答做出校驗(yàn)。同時(shí)將信息反饋至學(xué)生,以便其能根據(jù)反饋有針對性地完善代碼,進(jìn)而通過測試。[5]
⑤系統(tǒng)具有統(tǒng)計(jì)、分析功能,能對學(xué)生提交的數(shù)據(jù)做出分析,能自動(dòng)計(jì)算出學(xué)生成績,數(shù)據(jù)信息應(yīng)該方便教師查閱和導(dǎo)出。
● 數(shù)據(jù)結(jié)構(gòu)在線評(píng)測系統(tǒng)的設(shè)計(jì)
本系統(tǒng)從總體框架、基本功能、數(shù)據(jù)庫三方面進(jìn)行設(shè)計(jì)??傮w框架設(shè)計(jì)是對系統(tǒng)整體功能的邏輯規(guī)劃;基本功能設(shè)計(jì)是對詳細(xì)功能的設(shè)計(jì);數(shù)據(jù)庫設(shè)計(jì)根據(jù)所需數(shù)據(jù)表建立。
1.系統(tǒng)總體框架
該在線評(píng)測系統(tǒng)劃分為前臺(tái)門戶頁面和教師后臺(tái)管理兩部分,整個(gè)系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)采用的是瀏覽器/服務(wù)器架構(gòu)模式,用戶通過網(wǎng)站域名進(jìn)行登錄訪問,如圖1所示。
2.基本功能設(shè)計(jì)
系統(tǒng)前臺(tái)主要用于學(xué)生注冊和登錄系統(tǒng)、在線評(píng)測、查詢評(píng)測結(jié)果、交流討論、修改個(gè)人信息等;后臺(tái)主要用于教師對學(xué)生的學(xué)習(xí)情況進(jìn)行查閱,維護(hù)題目信息,添加評(píng)測數(shù)據(jù)等。
①網(wǎng)站首頁:將網(wǎng)站內(nèi)容做一個(gè)整體的展示,具體包括題庫信息、登錄、注冊模塊、個(gè)人信息維護(hù)、在線評(píng)測等。
②題庫信息:主要包含待評(píng)測的數(shù)據(jù)結(jié)構(gòu)和算法題目信息,點(diǎn)擊相應(yīng)的題目標(biāo)題即可查看具體的題目描述。
③交流論壇:該模塊為學(xué)習(xí)者提供了交流平臺(tái),在學(xué)習(xí)的過程中學(xué)習(xí)者可以通過評(píng)論、問答的方式向教師或同伴提問。
④個(gè)人信息維護(hù):維護(hù)個(gè)人的賬號(hào)信息,包括用戶的頭像、昵稱、郵箱、班級(jí)等信息。
⑤后臺(tái)總體信息概覽:查看題庫系統(tǒng)總體信息,包括注冊人數(shù)、題目數(shù)量、答題提交總量等。
⑥學(xué)生信息管理:管理和查看學(xué)生在網(wǎng)站的學(xué)習(xí)情況,包括學(xué)生的答題情況、學(xué)期末總成績等。
⑦題目信息管理:完成對題庫的維護(hù),增加新題目或刪除舊題目。
3.平臺(tái)數(shù)據(jù)庫設(shè)計(jì)
根據(jù)系統(tǒng)架構(gòu)和需求分析,數(shù)據(jù)庫中各類實(shí)體可概括為用戶實(shí)體、題目實(shí)體、權(quán)限實(shí)體、提交記錄實(shí)體等。用戶實(shí)體主要用于保存用戶個(gè)人信息;題目實(shí)體主要用于保存題目詳細(xì)信息;權(quán)限實(shí)體主要用于記錄用戶權(quán)限信息;提交記錄實(shí)體用于記錄用戶的個(gè)人提交信息。用戶實(shí)體與權(quán)限實(shí)體之間存在權(quán)限關(guān)系,題目同用戶、提交記錄之間分別存在提交和答題關(guān)系。
● 數(shù)據(jù)結(jié)構(gòu)在線評(píng)測系統(tǒng)的實(shí)現(xiàn)
本文只介紹《數(shù)據(jù)結(jié)構(gòu)》在線評(píng)測系統(tǒng)中的部分核心功能,包括題庫搭建、評(píng)測邏輯、后臺(tái)管理、答題統(tǒng)計(jì)、成績分析。
1.題庫搭建
在題庫中展示了所有存儲(chǔ)在數(shù)據(jù)庫中的評(píng)測題目信息,用戶進(jìn)入題庫中點(diǎn)擊題目的標(biāo)題,進(jìn)入題目的詳情頁面,進(jìn)入后即可在題目右側(cè)的答題頁面進(jìn)行解題,如上頁圖2所示。題庫頁面核心代碼如圖3所示。
2.評(píng)測邏輯
測試系統(tǒng)以在線動(dòng)態(tài)編譯代碼的形式對代碼的正確性進(jìn)行校驗(yàn),代碼在線動(dòng)態(tài)編譯。當(dāng)用戶在線提交代碼后,后臺(tái)會(huì)返回一個(gè)評(píng)測結(jié)果,用戶可以根據(jù)服務(wù)器的返回結(jié)果來判斷提交的代碼是否正確。后臺(tái)判題業(yè)務(wù)邏輯核心代碼如圖4所示。
3.后臺(tái)管理
教師在后臺(tái)系統(tǒng)可以查看整個(gè)系統(tǒng)中的題目總數(shù)、用戶注冊人數(shù)、提交題目數(shù)等信息。
4.答題統(tǒng)計(jì)