馮麗露 康耀龍 高曉晶 王濤


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