?

面向云端的在線判題平臺研究與設計

2020-01-08 14:10周奇張凱亮劉昊
中國電氣工程學報 2020年20期

周奇 張凱亮 劉昊

摘要 對高校培養人才而言,不僅要培養學生掌握基礎的理論知識,而且需要培養學生自身編程的動手實踐能力,關于培養學生的自身編程能力方面,可以通過搭建一個在線判題平臺來滿足學生的需求。本課題在通過詳細的需求分析之后,以JAVA技術為核心,使用SpringBoot框架搭建一個Online Judge平臺。本平臺實現了平臺用戶添加登陸、權限管理模塊、題庫管理模塊、作業模塊、公開題庫模塊和競賽模塊,為在校師生提供一個高效、快捷的在線判題平臺。由于其能夠在線自動評判提交的代碼是否正確的功能,因此能夠減輕老師驗收代碼的教學任務,極大地提高了效率,并且能夠使學生得到及時的反饋,對于培養學生自身編程的實踐能力方面具有非常大的提升。本說明書主要從系統分析分析、系統實現和系統測試三個方面對平臺設計與實現過程進行詳細的描述與說明,說明書共由六部分組成。

關鍵詞 在線判題;Spring Boot;MySQL;VUE

1 研究背景及意義

隨著計算機技術的更新與迭代,高校此方面的教學內容與方式也應該隨之進步。關于教學內容方面,在注重理論教學的同時也應該更加注重對學生實踐能力的培養;關于教學方式方面,傳統的編程作業的收發需要教師親自進行批改,對于學生而言,無法得到實施的反饋,對于教師而言,在日常繁雜的教學任務下,親自批改也可能會造成很大的工作壓力。綜上所述,一個能夠自動判斷提交代碼是否正確的在線判題平臺,能夠大大緩解教師的教學壓力,以及能夠使學生快速的得到反饋,使得教學質量大大提升。

如今可供學生參加的程序設計類算法競賽也越來越多,像比較出名的ACM/ICPC、藍橋杯以及各個地方舉辦的區域級和國家級比賽。學生參與這些比賽并且能夠拿到獎項,在某種意義上便是是對學校教學水平的肯定。因此各個高校對于程序設計類算法競賽越來越重視,紛紛搭建起各自的OnlineJudge(在線判題,之后簡稱為OJ)平臺。

目前比較出名的杭電OJ、青島大學的QingDaoUOJ、開源的hustOJ來供學校學生進行算法題目的練習與競賽。這些OJ在搭建的同時都考慮到了自己學校自身的情況,可能在別的學校根據這些源碼進行搭建的時候會出現與學校自身狀況不相符的情況。一個良好的OJ不僅能體現出學校對于學生編程實踐能力的重視情況,也為學生提供了一個更加便捷與高效的平臺。

搭建起本在線判題平臺后,教師或者競賽組織者對題庫進行維護然后布置作業或發布比賽供學生參加。對于教師而言能減輕批改學生提交上來的代碼的壓力,然后能拿出更多的精力放在教學內容的優化與提高方面,有利于相關專業的長遠的發展。對于學生來說,能夠得到及時的反饋,提高學到新知識之后的鞏固的速度,并且為有志于參加算法競賽的同學提供一個良好的平臺支撐,提高其參與感與算法水平。

2 系統分析

2.1 系統需求分析

本在線判題平臺主要目標是為了在減輕教師的批改作業的壓力的前提下,同時使學生能夠在線提交編程作業以及能夠進行編程題目練習,達到雙贏的效果。本平臺共分為五種角色類型,后期可以為各個賬戶動態分配權限,其中包含除供用戶操作的前端頁面和給其提供數據的后端服務器之外,還有判題服務器用于啟動代碼評測機對用戶提交的代碼進行判題。

教師:主要負責發布作業,可以選擇自己所管理的班級進行發布作業的操作,發布作業后可以從總題庫中選擇題目加入作業列表,并且在此之后可以查看學生的提交情況。若管理員分配了總題庫管理的權限,可以對總題庫的題目進行編輯。若管理員分配了公開題庫的管理權限,可以對公開題庫進行管理。

競賽組織者:主要負責發布競賽,設置參賽碼后便可發布競賽,同時還可以添加臨時參賽者賬戶供校外學生來參加競賽。若管理員分配了總題庫管理的權限,可以對總題庫的題目進行編輯。若管理員分配了公開題庫的管理權限,可以對公開題庫進行管理。

學生:可以通過公開題庫模塊進行日常的算法練習,通過作業模塊來完成該學生所在的班級的教師布置的算法編程題目,以及通過競賽模塊輸入競賽組織者提供的參賽碼來進行算法競賽。

臨時參賽者:臨時參賽者只擁有訪問競賽模塊的權限,賬號由競賽組織者提供,輸入競賽組織者提供的參賽碼后選擇相應競賽便可參加比賽。

超級管理員:負責賬號的添加與維護,對于已存在的賬號進行進一步的動態權限分配,以及班級的創建和班級成員的維護。

2.2 功能模塊分析

功能模塊分析是一個項目開發過程中必不可少的一個步驟。在項目進行具體實現前通過功能模塊分析,可以大致確定項目的主要模塊與功能。如果項目開發的過程中缺少這一步驟,對于后續的項目設計會帶來主要功能界限模糊的困擾。本項目用戶交互端和評測段在一起共分為六個模塊,下面將對本項目進行完整地功能分析:

(1)用戶管理模塊:只有超級管理員才能進入此模塊,該模塊分為三個子模塊,分別為賬號管理、班級管理和權限管理。通過賬號管理模塊來進行用戶的添加與修改以及分配已經創建好的權限類型;通過班級管理模塊來管理班級,并且還可以通過該模塊對班級的具體成員進行管理。

(2)公開題庫模塊:該模塊可以由普通權限用戶進入來進行日常算法題目的練習,擁有增刪權限的用戶可以新建公開題庫或編輯現在已有的題庫。除此之外,還可以對具體的某一個公開題庫進行權限設置,設置為只有特定用戶才能進入該題庫進行題目練習。

(3)作業模塊:賬號類型為學生的用戶可以進入此模塊完成所在班級的教師布置的算法編程作業。賬號類型為教師的用戶則可以向自己所管理的班級進行發布作業的操作。作業發布完成之后還可以查看學生的提交情況。

(4)競賽模塊:比賽組織者可以通過該模塊進行比賽的創建并設置參賽碼,還可以創建臨時賬號來邀請外校用戶來參加比賽。擁有權限的普通用戶可以通過該模塊進行算法競賽,并且查看比賽

(5)總題庫模塊:本系統的所有題目均由本模塊管理,編輯權限只對由超級管理權分配增刪權限的用戶開放,而擁有公開題庫、競賽、作業模塊的增刪權限的用戶,可以進入此模塊向公開題庫、作業或者競賽中添加題目。

(6)評測模塊:評測模塊負責對用戶提交上來的代碼進行評測。當擁有參賽者權限、刷題權限和作業學生權限的用戶進行競賽、刷題和提交作業操作后,接收用戶提交的代碼然后進行編譯和評測,并將評測結果提交到數據庫中。

2.3 用例分析

2.3.1系統業務用例圖

圖2-1 業務用例模型圖

3 系統總體設計

為了方便平臺用戶使用,本平臺總的共分為用戶管理模塊、公開題庫模塊、總題庫模塊、競賽模塊、作業模塊和評測模塊共六個模塊。通過這六個模塊,將整個平臺的業務囊括其中,為用戶提供一個高效、便捷的在線判題平臺。如圖3-1所示。

圖3-1在線判題平臺系統功能結構圖

擁有總題庫權限的用戶登陸后,進入總題庫管理頁面,可以對題庫列表進行模糊查詢,也可以在此界面新增題庫,總題庫的實體類圖如圖3-2所示;選擇題庫進入之后,可以查看該題庫的題目列表(獲取題目列表的順序圖如圖3-3所示),也可以再此界面模糊查詢題目、修改此題庫信息和對該題庫的題目進行管理。

擁有競賽、公開題庫和作業權限的用戶,可以進入到具體題庫選擇題目添加到競賽、公開題庫和作業的一個題庫之中。獲取到題庫中的題目列表后可以查看題目詳情并提交代碼。

圖3-2總題庫實體類圖

圖3-3獲取題目列表順序圖

平臺總體E-R圖。如圖3-4所示

圖3-4平臺總體E-R圖

臨時賬戶和擁有競賽權限的學生可以進入競賽頁面查看所有的競賽列表,然后選擇要參加的競賽后輸入邀請碼,進入相應的競賽頁面。進入競賽獲取題目列表后可以點擊題目查看題目詳情并提交代碼。

比賽組織者賬戶進入競賽頁面后可以發布競賽,發布競賽時要輸入競賽名、簡介、開始時間、結束時間以及邀請碼;在競賽頁面還可以通過模糊查詢獲得競賽列表。進入相應的競賽頁面之后,可以對該競賽的信息進行編譯,以及移除該競賽中的題目。競賽模塊的實體類圖如圖3-5所示。

圖3-5競賽模塊的實體類圖

4 系統測試結果

系統測試主要是在系統上線運行前,驗證平臺是否按照功能需求保質保量完成項目,同時檢測所完成功能是否有Bug。系統測試是項目結束的最重要過程,避免項目在上線使用時出現問題,影響用戶體驗,嚴重可能導致用戶信息或者資金受到損失。

本平臺測試主要采用黑盒測試和白盒測試,黑盒測試主要通過平臺功能的正常使用流程檢測是否能夠正常運行;白盒測試主要體現在項目編寫過程中,我針對所編寫的接口編寫測試單例進行功能測試。

通過對本平臺進行白盒測試,發現平臺設計時有些復雜邏輯問題存在一定缺陷,后期通過測試結果進行了相應改正,最后測試問題已經解決??傮w來說,最終的系統測試結果與前期項目功能設計相符合。通過用戶角色去體驗本平臺,界面設計簡潔美觀,操作不復雜,用戶使用體驗感良好。

參考文獻

[1]曹郁.基于Docker容器的微服務研究與實現[J].科學技術創新,2019(28):97-98.

[2]黃俊勇.基于Spring框架的研究與設計[J].電腦知識與技術,2018,14(03):116-117.

[3]范開勇,陳宇收.MySQL數據庫性能優化研究[J].中國新通信,2019,21(01):57.

[4]李杉,賈彥平,達虎.Mybatis逆向工程在JavaEE中的應用[J].通訊世界,2017(24):342.

[5]呂宇琛.SpringBoot框架在web應用開發中的探討[J].科技創新導報,2018,15(08):168+173.

[6]高昂,魏惠茹,李曉東,李博.MVC設計模式研究[J].電腦知識與技術,2016,12(01):88-89.

[7]楊家煒.基于Spring Boot的web設計與實現[J].輕工科技,2016,32(07):86-89.

[8]盧云宏,侯文涵,趙前,張麗穎,周世平.基于Linux的OnlineJudge在線提交環境的搭建[J].電子技術與軟件工程,2017(12):50-51.

[9]李廣宏. vue.js前端應用技術分析[J].中國新通信, 2019, 21(20): 115.

[10]王志任. 基于Vue.js的開發平臺的設計與實現[D].廣東工業大學,2018.

[11]王寧,李潤東.OnlineJudge中反抄襲機制的研究和實現[J].湖南工程學院學報(自然科學版),2016,26(01):45-48.

[12]喬平安,顏景善,周敏.基于Linux系統的構建高性能服務器的研究[J].計算機與數字工程,2016,44(04):653-657.

[13]郭嘉凱.RocketMQ:從阿里巴巴走向世界[J].軟件和集成電路,2018(11):56-60.

[14]張文杰. 基于RocketMQ的消息服務系統設計與實現[D].華中科技大學,2016.

[15]張堯. 基于Nginx高并發Web服務器的改進與實現[D].吉林大學,2016.

[16]Fabian Trautsch,Steffen Herbold,Jens Grabowski. Are unit and integration test definitions still valid for modern Java projects? An empirical study on open-source projects[J]. The Journal of Systems & Software,2020,159.

[17]Arief Ginanjar,Mokhamad Hendayun. Spring Framework Reliability Investigation Against Database Bridging Layer Using Java Platform[J]. Procedia Computer Science,2019,161.

[18]Paolo Guagliardo,Leonid Libkin. On the Codd semantics of SQL nulls[J]. Information Systems,2019,86.

[19]Serdar Yegulalp,Serdar Yegulalp. MySQL 8.0: More Unicode, less hassle[J]. InfoWorld.com,2016.

[20]Gregory Barber. JavaScript[J]. Wired,2019,27(6).

2020徐州工程學院大學生創新創業訓練計劃項目(xcx2020016)

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合