国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

周奇 張凱亮 劉昊

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

關(guān)鍵詞 在線判題;Spring Boot;MySQL;VUE

1 研究背景及意義

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

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

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

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

2 系統(tǒng)分析

2.1 系統(tǒng)需求分析

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

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

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

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

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

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

2.2 功能模塊分析

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

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

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

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

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

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

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

2.3 用例分析

2.3.1系統(tǒng)業(yè)務(wù)用例圖

圖2-1 業(yè)務(wù)用例模型圖

3 系統(tǒng)總體設(shè)計

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

圖3-1在線判題平臺系統(tǒng)功能結(jié)構(gòu)圖

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

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

圖3-2總題庫實體類圖

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

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

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

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

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

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

4 系統(tǒng)測試結(jié)果

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

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

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

參考文獻

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

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

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

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

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

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

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

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

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

[10]王志任. 基于Vue.js的開發(fā)平臺的設(shè)計與實現(xiàn)[D].廣東工業(yè)大學,2018.

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

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

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

[14]張文杰. 基于RocketMQ的消息服務(wù)系統(tǒng)設(shè)計與實現(xiàn)[D].華中科技大學,2016.

[15]張堯. 基于Nginx高并發(fā)Web服務(wù)器的改進與實現(xiàn)[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徐州工程學院大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(xcx2020016)

邹平县| 广安市| 石门县| 怀柔区| 新河县| 大宁县| 富平县| 吴川市| 海城市| 高陵县| 沁水县| 渭源县| 定陶县| 荔波县| 含山县| 弥勒县| 长白| 五大连池市| 温宿县| 乐都县| 德惠市| 额济纳旗| 区。| 岚皋县| 灵石县| 吴忠市| 香格里拉县| 乌拉特后旗| 玉树县| 兴义市| 巨野县| 满城县| 内乡县| 灵武市| 和顺县| 胶州市| 唐山市| 苍溪县| 富民县| 綦江县| 钟山县|