陶瑜
關(guān)鍵詞:Java;Spring Boot; VUE; MySQI.;前后端完全分離
1研究背景
互聯(lián)網(wǎng)的便利已經(jīng)覆蓋了人們的衣食住行,特別是疫情的暴發(fā),信息化的管理尤其重要。在線考試系統(tǒng)可以充分發(fā)揮網(wǎng)絡(luò)優(yōu)勢,一方面可以自己批改、算分、存檔考試成績等動態(tài)管理各種考試信息,另一方面可以不受時間地域的限制,最大限度地提高閱卷速度,可以在考試結(jié)束時能夠客觀而又準(zhǔn)確地給出考試成績,方便考試組織者工作的同時又有利于考生及時獲取考試成績,無論是對于教學(xué)還是公司考核都高效便捷。
基于Spring Boot的前后端分離的在線考試系統(tǒng),通過建立大型及高效的題庫數(shù)據(jù),可以最大限度地發(fā)揮網(wǎng)絡(luò)優(yōu)勢,以實現(xiàn)不限時間不限地域進行考試。同時可以減少不必要的外界干擾.降低投入成本,并減少監(jiān)考老師的負(fù)擔(dān)以達(dá)到節(jié)約人力、物力、財力和不必要的自然資源浪費的目的。
2系統(tǒng)整體結(jié)構(gòu)
本系統(tǒng)是基于Spring Boot的前后端分離的在線考試系統(tǒng),選擇以下技術(shù)方案:基于前后端完全分離模式,前端選用VUE,后端采用Java為應(yīng)用開發(fā)工具,持久化存儲選用MySQL為后臺數(shù)據(jù)庫,采用IntelliJIDEA作為開發(fā)平臺,整個系統(tǒng)完全基于B/S( Browser/ Server)模式進行設(shè)計,軟件架構(gòu)風(fēng)格采用MVC( Model-View-Controller)架構(gòu)模式。
2.1系統(tǒng)總體目標(biāo)
(1)系統(tǒng)根據(jù)角色權(quán)限設(shè)計,分為學(xué)生、教師、管理員三種角色。學(xué)生權(quán)限,包括參加考試和查看考試。教師權(quán)限,包括學(xué)生的所有權(quán)限及創(chuàng)建、編輯題目和創(chuàng)建、編輯考試。管理員權(quán)限,包括教師的所有權(quán)限及對用戶進行管理。
(2)本考試系統(tǒng)可以替代傳統(tǒng)考試所有流程,包括題目的創(chuàng)建、更新,考場的創(chuàng)建、更新,參加考試,考試時間,閱卷及考試記錄查看等。
(3)利用當(dāng)前主流的存儲數(shù)據(jù)技術(shù),將考生相關(guān)信息、成績、試卷信息等數(shù)據(jù)持久化存儲到硬盤上。
(4)使用MD5加密存儲技術(shù),保障用戶信息的安全性。
2.2系統(tǒng)整體架構(gòu)
本系統(tǒng)是基于“Spring Boot+VUE”的架構(gòu)模式,采用前后端分離restful接口風(fēng)格來實現(xiàn)應(yīng)用程序在網(wǎng)絡(luò)上傳輸、接收信息。采用restful變成風(fēng)格,接受前端請求數(shù)據(jù),通常為json格式的數(shù)據(jù),再由服務(wù)器端對每個請求進行分發(fā),與DB交互,通過信息的序列化,把相應(yīng)信息序列化后再信息流化,然后把數(shù)據(jù)返回給前端處理,實現(xiàn)兩者之間的數(shù)據(jù)通信。
2.3系統(tǒng)B/S結(jié)構(gòu)設(shè)計
系統(tǒng)的設(shè)計架構(gòu)基于B/S,即瀏覽器端和服務(wù)器端,瀏覽器端向服務(wù)器端發(fā)送數(shù)據(jù)請求,服務(wù)器端對發(fā)送的數(shù)據(jù)請求進行分析和處理,作出相應(yīng)的控制,并與DB進行交互。B/S結(jié)構(gòu)采取瀏覽器請求,服務(wù)器響應(yīng)的工作模式,可以通過瀏覽器對許多分布于網(wǎng)絡(luò)上的服務(wù)器進行請求訪問,瀏覽器的請求通過服務(wù)器進行處理,并將處理結(jié)果以及相應(yīng)的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請求全部都是由Web Server完成的[1]。
B/S結(jié)構(gòu)是C/S架構(gòu)的一種改進,可以說屬于三層C/S架構(gòu),主要利用不斷成熟的WWW瀏覽器技術(shù),通過瀏覽器就可以實現(xiàn)原來需要復(fù)雜專用軟件才能實現(xiàn)的強大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)架構(gòu)技術(shù)[2]。三層C/S架構(gòu)圖如圖1所示。
3系統(tǒng)分層結(jié)構(gòu)
3.1系統(tǒng)整體分層結(jié)構(gòu)
本系統(tǒng)分層思路采用了三層C/S設(shè)計模式,系統(tǒng)的開發(fā)符合軟件工程的管理思想和面向?qū)ο蟮乃枷?,系統(tǒng)模式實現(xiàn)前后端完全分離,前端采用VUE漸進式框架,后端由Spring Boot架構(gòu),由此對系統(tǒng)的程序代碼結(jié)構(gòu)進行分層,分層策略圖如圖2所示。
3.2用戶登錄序列結(jié)構(gòu)
用戶在登錄時輸入自己的用戶名和密碼,Web端會將這些信息封裝起來執(zhí)行sendRequest()方法,該方法會將請求信息進行序列化,通過網(wǎng)絡(luò)傳輸將請求數(shù)據(jù)發(fā)送給服務(wù)器端。服務(wù)器端獲取信息后根據(jù)請求URL,調(diào)用登錄(login())方法,登錄方法會查詢對應(yīng)的用戶數(shù)據(jù)庫,以校驗用戶的登錄請求信息是否正確。若信息無誤就會給請求端返回一個用戶對象,則用戶可以成功登錄:若信息不正確就會提出用戶信息錯誤,服務(wù)端拋出異常,則登錄失敗。用戶登錄序列結(jié)構(gòu)圖如圖3所示。
3.3開始考試序列結(jié)構(gòu)
考生進入考試卡片列表后,選擇相應(yīng)的考試信息,系統(tǒng)會自動獲取考生所選擇的考試信息,并將考試信息賦值給entityContext類去請求考試題目數(shù)據(jù)。獲取到考試題目信息后,將數(shù)據(jù)返回給前端進行頁面渲染,組成考卷信息后,考試即可開始正式答題。用戶開戶考試序列結(jié)構(gòu)圖如圖4所示。
4系統(tǒng)設(shè)計
4.1系統(tǒng)功能結(jié)構(gòu)
基于Spring Boot前后端分離的在線考試系統(tǒng)可以直接通過瀏覽器端進行操作??忌梢宰灾髯詾樾掠脩?,登錄系統(tǒng)進行考試,考試結(jié)束后即可查詢自己的成績,同時可以支持個人信息的查詢和修改。教師登錄系統(tǒng)后可以對考生信息、題庫信息、考場信息進行維護。系統(tǒng)總體通過前后端api調(diào)用,并與數(shù)據(jù)庫進行交互,將數(shù)據(jù)響應(yīng)給前端瀏覽器。整個系統(tǒng)的結(jié)構(gòu)圖如圖5所示。
4.2用戶登錄模塊
對于初次使用本系統(tǒng)的用戶,需要先進行注冊操作。注冊成功后,進入登錄界面,輸入正確的用戶名和密碼,則登錄成功,可進入本考試系統(tǒng),進行相關(guān)操作。比如,用戶登錄成功,主界面數(shù)據(jù)自動更新。
4.3考試主界面模塊
考生登錄到主界面后,系統(tǒng)會根據(jù)考生信息自動提取試題及考試記錄等信息??忌M入主界面,可以在考試卡片選項上選擇相應(yīng)的考試科目進行考試,考試主界面如圖6所示。
當(dāng)考生選擇相應(yīng)的考試科目之后,點擊“開始考試”按鈕,系統(tǒng)會自動從數(shù)據(jù)庫中獲取相應(yīng)科目的考題并隨機生成考卷。
考試結(jié)束,考生點擊交卷按鈕,系統(tǒng)會自動評閱.并生成評閱反饋信息,考生可以在我的考試中查看相關(guān)反饋信息。其中,主要代碼與注釋如下。
4.4個人信息模塊
在主界面,用戶可以點擊賬戶設(shè)置,進入個人信息窗口,可以查看當(dāng)前用戶的信息及進行修改密碼操作。用戶填寫完相關(guān)個人信息后,當(dāng)前新填寫的信息會覆蓋以前舊的信息,用戶可以根據(jù)系統(tǒng)提示進行相應(yīng)的修改操作。
4.5教師功能模塊
教師登錄該系統(tǒng)后,頁面會多出兩個選項:問題管理是用于創(chuàng)建開始考試試題,可以按照問題內(nèi)容、問題分類、問題選項進行創(chuàng)建試題;考試管理則是安排考試任務(wù)功能,點擊新建按鈕,可以輸入考試相關(guān)信息,如考試名稱、考試限時、考場簡述、每題分?jǐn)?shù)、選擇關(guān)聯(lián)題目等。
5結(jié)束語
基于Spring Boot的前后端分離的在線考試系統(tǒng),初衷是開發(fā)一個易于管理和維護的教學(xué)考試系統(tǒng),能夠滿足學(xué)?;蚱髽I(yè)多門課程、難易程度多樣的考核要求。本系統(tǒng)采用前后端分離技術(shù),前端使用的是VUE,后端使用的是Spring Boot框架,之所以選用這兩種語言,是為了以后的業(yè)務(wù)擴展能夠得到很好的維護。在開發(fā)的過程中,參考了MVC軟件架構(gòu)的設(shè)計思想,采用動態(tài)的程序設(shè)計理念,使后續(xù)業(yè)務(wù)擴展可以簡化程序,提高開發(fā)效率。