基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGEPAGE44目錄TOC\o"1-3"\h\u108161前言 1199851.1研究背景 1250231.2研究的目的與意義 1179271.3國(guó)內(nèi)外研究現(xiàn)狀 195131.4論文組織結(jié)構(gòu) 2261152開(kāi)發(fā)技術(shù)和工具 3169352.1開(kāi)發(fā)技術(shù) 3259432.1.1Java開(kāi)發(fā)語(yǔ)言 3230082.1.2SpringBoot框架 349032.1.3VUE框架 3202552.2開(kāi)發(fā)工具 478042.3MySQL數(shù)據(jù)庫(kù) 4139612.4本章小結(jié) 4276803系統(tǒng)分析 5249803.1系統(tǒng)可行性分析 5205433.1.1技術(shù)可行性分析 587323.1.2經(jīng)濟(jì)可行性分析 5292103.1.3操作可行性分析 550713.1.4法律可行性分析 546933.2系統(tǒng)需求分析 5250283.2.1學(xué)生功能需求分析 5288343.2.2教師功能需求分析 6291753.3用例建模 6132733.3.1學(xué)生用例圖 6280373.3.2教師用例圖 850793.4系統(tǒng)類(lèi)建模 9322493.4.1學(xué)生主要類(lèi)圖 9307543.4.2教師主要類(lèi)圖 10195023.5本章小結(jié) 109944系統(tǒng)設(shè)計(jì) 1138234.1系統(tǒng)活動(dòng)圖 11118384.1.1學(xué)生活動(dòng)圖 11189774.1.2教師活動(dòng)圖 1260044.2系統(tǒng)時(shí)序圖 13248834.2.1學(xué)生時(shí)序圖 13288654.2.2教師時(shí)序圖 14138034.3數(shù)據(jù)庫(kù)建模 1572594.4數(shù)據(jù)庫(kù)信息表 16212304.5系統(tǒng)部署圖 2037094.6本章小結(jié) 20100235系統(tǒng)實(shí)現(xiàn) 21326625.1學(xué)生功能模塊 21168185.1.1更改個(gè)人資料功能實(shí)現(xiàn) 21280875.1.2更改個(gè)人資料功能實(shí)現(xiàn) 2276255.1.3查看消息功能實(shí)現(xiàn) 22124505.1.4試卷列表功能實(shí)現(xiàn) 23124225.1.5提交試卷功能實(shí)現(xiàn) 24257215.1.6批改試卷功能實(shí)現(xiàn) 2526285.1.7查看考試記錄功能實(shí)現(xiàn) 26140515.2教師功能模塊 26179185.2.1用戶管理功能實(shí)現(xiàn) 26247945.2.2試卷列表功能實(shí)現(xiàn) 27212325.2.3題目列表功能實(shí)現(xiàn) 2889945.2.4答卷列表功能實(shí)現(xiàn) 28132755.2.5發(fā)送消息功能實(shí)現(xiàn) 29244975.3本章小結(jié) 30236466測(cè)試方法 31223346.1功能測(cè)試 31326636.2測(cè)試用例設(shè)計(jì) 31144786.2.1學(xué)生測(cè)試用例 31165996.2.2教師測(cè)試用例 36294076.3本章小結(jié) 4137857總結(jié)與展望 42115117.1總結(jié) 4294327.2展望 423428參考文獻(xiàn) 4319685致謝 44基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著我國(guó)科技的不斷發(fā)展和經(jīng)濟(jì)實(shí)力的增強(qiáng),教育在國(guó)家發(fā)展戰(zhàn)略中扮演著越來(lái)越重要的角色。為了適應(yīng)時(shí)代的需求和培養(yǎng)具備創(chuàng)新能力的人才,學(xué)生的學(xué)習(xí)任務(wù)也隨之增加,除了大大小小的考試不計(jì)其數(shù),更有不少額外的試卷做練習(xí),在線考試這種模式在各個(gè)學(xué)校就顯得尤為重要。在線考試系統(tǒng)是一種基于互聯(lián)網(wǎng)技術(shù)的考試管理,它提供了一個(gè)虛擬的考試環(huán)境,使學(xué)生可以通過(guò)電腦在線參加考試。在線考試的引入為教育領(lǐng)域帶來(lái)了許多好處,它省去了傳統(tǒng)紙質(zhì)考試的繁瑣流程,如試卷印刷、分發(fā)、收卷等環(huán)節(jié),極大地減輕了教師的工作量,這樣老師就可以將更多的時(shí)間和精力投入到教學(xué)和輔導(dǎo)上,提高教學(xué)質(zhì)量。對(duì)于學(xué)生而言,在線考試提供了更加靈活和便捷的學(xué)習(xí)方式,學(xué)生可以根據(jù)自己的時(shí)間安排自主參加考試進(jìn)行練習(xí),不再受限于特定的考試時(shí)間,這為學(xué)生提供了更大的學(xué)習(xí)自主性和自我管理能力的培養(yǎng)。因此,在線考試不僅節(jié)約了人力資源,還大大提高了老師和學(xué)生的效率。本系統(tǒng)是基于Java,采用Springboot框架和Vue來(lái)設(shè)計(jì)進(jìn)行代碼的編寫(xiě)工作,并實(shí)現(xiàn)了前后端分離。本在線考試系統(tǒng)實(shí)現(xiàn)了登錄注冊(cè)、用戶管理、題庫(kù)管理、試題管理、錯(cuò)題練習(xí)等功能,具有靈活性、便捷性、環(huán)保性和網(wǎng)絡(luò)化的優(yōu)點(diǎn)。關(guān)鍵詞:在線考試系統(tǒng);Springboot框架;前后端分離;網(wǎng)絡(luò)化DesignandImplementationofOnlineExaminationSystemBasedonJavaAbstractWiththecontinuousdevelopmentofscienceandtechnologyandtheenhancementofChina'seconomicstrength,educationplaysanincreasinglyimportantroleinthenationaldevelopmentstrategy.Inordertomeettheneedsofthetimesandcultivatetalentswithinnovativeability,students'learningtaskshavealsoincreased,inadditiontocountlesslargeandsmallexams,therearemanyadditionaltestpapersforpractice,andtheonlineexaminationmodelisparticularlyimportantinvariousschools.TheonlineexaminationsystemisakindofexaminationadministrationbasedonInternettechnology,whichprovidesavirtualexaminationenvironmentthatenablesstudentstotaketheexamonlinethroughacomputer.Theintroductionofonlineexamshasbroughtmanybenefitstothefieldofeducation,iteliminatesthecumbersomeprocessoftraditionalpaper-basedexams,suchastheprinting,distribution,andcollectionoftestpapers,andgreatlyreducestheworkloadofteachers,sothatteacherscandevotemoretimeandenergytoteachingandtutoring,andimprovethequalityofteaching.Forstudents,onlineexamsprovideamoreflexibleandconvenientwayoflearning,studentscantakeexamsandpracticeindependentlyaccordingtotheirownschedules,andarenolongerlimitedbyspecificexamtimes,whichprovidesstudentswithgreaterlearningautonomyandself-managementability.Asaresult,onlineexamsnotonlysavehumanresources,butalsogreatlyimprovetheefficiencyofteachersandstudents.ThesystemisbasedonJava,usingSpringbootframeworkandVuetodesignandwritecode,andrealizestheseparationoffrontandbackend.Thisonlineexaminationsystemrealizesthefunctionsofloginregistration,usermanagement,questionbankmanagement,testquestionmanagement,wrongquestionpractice,etc.,andhastheadvantagesofflexibility,convenience,environmentalprotectionandnetworking.Keywords:onlineexaminationsystem;springbootframework;front-endandback-endseparation;network1前言1.1研究背景隨著信息技術(shù)的快速發(fā)展和教育改革的深入推進(jìn),傳統(tǒng)的紙質(zhì)考試逐漸顯現(xiàn)出一些不足之處,例如評(píng)分效率低、閱卷容易出錯(cuò)、試題存儲(chǔ)和管理困難等,已經(jīng)逐漸不能滿足教育教學(xué)的需求。而在當(dāng)今信息化技術(shù)日益發(fā)達(dá)的環(huán)境下,借助先進(jìn)的信息化技術(shù)能夠?qū)崿F(xiàn)無(wú)紙化考試考核以及自動(dòng)化閱卷等功能[1],為教育教學(xué)提供了更加高效、便捷、準(zhǔn)確的考試方式,并為教師提供更加高效和準(zhǔn)確的教學(xué)評(píng)估手段。因此,越來(lái)越多的學(xué)校和教育機(jī)構(gòu)開(kāi)始引入在線考試系統(tǒng),在線考試系統(tǒng)已經(jīng)成為教育領(lǐng)域的重要研究方向,并進(jìn)行相關(guān)研究和探索,推動(dòng)了在線考試系統(tǒng)的研究與開(kāi)發(fā)。在線考試系統(tǒng)改進(jìn)了傳統(tǒng)的考試方式,可以使學(xué)生不再受到地域和時(shí)間的限制,并通過(guò)自動(dòng)評(píng)分和標(biāo)準(zhǔn)化的考試流程,提高考試評(píng)價(jià)的客觀性和準(zhǔn)確性,從而提升教育質(zhì)量和效率,推動(dòng)教育的創(chuàng)新與發(fā)展。1.2研究的目的與意義1.提高考試效率:在線考試系統(tǒng)可以有效地減少傳統(tǒng)紙質(zhì)考試所需的時(shí)間和資源成本。學(xué)生可以通過(guò)網(wǎng)絡(luò)隨時(shí)隨地參加考試,避免了傳統(tǒng)考試中需要集中在特定場(chǎng)所且時(shí)間限制的問(wèn)題。同時(shí),系統(tǒng)可以自動(dòng)化完成答卷批改和成績(jī)統(tǒng)計(jì),提高考試效率。2.提高評(píng)估效率:傳統(tǒng)的紙質(zhì)考試需要大量的人力和物力投入,而在線考試系統(tǒng)可以自動(dòng)化完成考試過(guò)程,減少人力資源的浪費(fèi)。同時(shí),學(xué)生答卷的自動(dòng)批改和成績(jī)統(tǒng)計(jì)也能夠提高評(píng)估的效率。3.提高學(xué)習(xí)效率:能讓學(xué)生在隨時(shí)隨地進(jìn)行考試,成績(jī)出來(lái)后獲得自己的考試成績(jī)報(bào)告,便于查漏補(bǔ)缺,有針對(duì)性的進(jìn)行復(fù)習(xí),提高學(xué)習(xí)效率[2]。4.便于數(shù)據(jù)分析和跟蹤:在線考試系統(tǒng)可以方便地管理和存儲(chǔ)考試數(shù)據(jù)。教師可以輕松地獲取學(xué)生的考試成績(jī)和答題情況,并根據(jù)學(xué)生的實(shí)際情況進(jìn)行針對(duì)性的教學(xué),提高教學(xué)效果。5.學(xué)生自行批改試卷:目前存在的在線考試系統(tǒng)基本都是老師發(fā)布試卷,老師閱卷,但是實(shí)際上學(xué)生要完成的試卷遠(yuǎn)不止每次周考、月考、期中、期末的試卷,大部分老師都會(huì)除考試外另外發(fā)很多試卷和答案讓學(xué)生課后自己做完后對(duì)照答案進(jìn)行批改,以此作為練習(xí)。因此,針對(duì)該問(wèn)題,本系統(tǒng)做到可以讓學(xué)生自行批改試卷,學(xué)生在規(guī)定的時(shí)間內(nèi)完成試卷并進(jìn)行批改,老師可查看學(xué)生的完成情況,提高學(xué)習(xí)效率。總之,在線考試系統(tǒng)的研究旨在提高考試效率、評(píng)估效率,學(xué)生學(xué)習(xí)效率,為教師提供更好的數(shù)據(jù)分析和跟蹤手段,并實(shí)現(xiàn)讓學(xué)生自行批改試卷,從而不斷改進(jìn)教育教學(xué)質(zhì)量。1.3國(guó)內(nèi)外研究現(xiàn)狀國(guó)外研究現(xiàn)狀:歐洲各國(guó)也在推廣和研究在線考試系統(tǒng),許多大學(xué)和教育機(jī)構(gòu)廣泛使用在線考試系統(tǒng),例如Canvas、Blackboard等。Canvas是美國(guó)Instructure公司旗下的學(xué)習(xí)管理系統(tǒng),是一個(gè)開(kāi)源平臺(tái),廣泛應(yīng)用于高校和教育機(jī)構(gòu),它提供了全面的教學(xué)工具和資源,其中包括了一個(gè)強(qiáng)大的考試系統(tǒng)。教師可以在Canvas平臺(tái)上創(chuàng)建考試,根據(jù)需要安排考試的時(shí)間和地點(diǎn),并監(jiān)控學(xué)生的考試進(jìn)度。為了確??荚嚨墓叫院桶踩?,Canvas不僅提供了實(shí)時(shí)的監(jiān)控功能,可以查看學(xué)生參與情況和考試狀態(tài),還提供了多種反作弊功能,例如,監(jiān)控考試環(huán)境、限制網(wǎng)頁(yè)瀏覽、防止復(fù)制粘貼等措施可以防止作弊行為的發(fā)生。國(guó)內(nèi)研究現(xiàn)狀:近年來(lái),中國(guó)的高校和教育機(jī)構(gòu)開(kāi)始廣泛應(yīng)用在線考試系統(tǒng),在線考試系統(tǒng)的技術(shù)涉及前端設(shè)計(jì)、后端開(kāi)發(fā)、數(shù)據(jù)存儲(chǔ)等多個(gè)方面,國(guó)內(nèi)研究機(jī)構(gòu)和企業(yè)在這方面進(jìn)行了大量的技術(shù)研究和實(shí)踐,例如優(yōu)達(dá)學(xué)城、網(wǎng)易云課堂等。研究重點(diǎn)包括在線考試的技術(shù)創(chuàng)新、智能化監(jiān)控、反作弊技術(shù)等方面。同時(shí),一些研究還關(guān)注在線考試在提高教學(xué)效果和教學(xué)管理方面的作用??偟膩?lái)說(shuō),國(guó)內(nèi)外對(duì)于在線考試系統(tǒng)的研究主要關(guān)注于提高教學(xué)效果、保障考試安全、提升用戶體驗(yàn)和個(gè)性化服務(wù)等方面。隨著教育信息化的不斷深入發(fā)展,在線考試系統(tǒng)的研究和應(yīng)用將會(huì)更加多樣化和智能化。1.4論文組織結(jié)構(gòu)本論文的內(nèi)容分為七個(gè)部分:第一部分:前言。主要介紹了在線考試系統(tǒng)的研究背景,闡述了本在線考試系統(tǒng)的目的、意義,分析了在線考試系統(tǒng)的國(guó)內(nèi)外研究現(xiàn)狀。第二部分:相關(guān)技術(shù)。介紹了本在線考試系統(tǒng)所用到的相關(guān)技術(shù)和工具,后端采用SpringBoot框架,VUE前端框架和MySQL等。第三部分:系統(tǒng)分析。對(duì)本在線考試系統(tǒng)進(jìn)行詳細(xì)分析,如可行性分析、角色分析等,并簡(jiǎn)述本系統(tǒng)部分功能。第四部分:系統(tǒng)設(shè)計(jì)。依照系統(tǒng)的設(shè)計(jì)規(guī)范,對(duì)本在線考試系統(tǒng)進(jìn)行結(jié)構(gòu)設(shè)計(jì)、功能模塊設(shè)計(jì),繪制各個(gè)活動(dòng)圖和時(shí)序圖。第五部分:系統(tǒng)實(shí)現(xiàn)。對(duì)本在線考試系統(tǒng)的功能進(jìn)行說(shuō)明,并展示系統(tǒng)的具體功能運(yùn)行結(jié)果圖。第六部分:系統(tǒng)測(cè)試。主要采用黑盒測(cè)試對(duì)本在線考試系統(tǒng)進(jìn)行功能測(cè)試,并編寫(xiě)其部分功能的測(cè)試用例。第七部分:總結(jié)。對(duì)本次實(shí)現(xiàn)在線考試系統(tǒng)的設(shè)計(jì)過(guò)程進(jìn)行總結(jié)和展望。2開(kāi)發(fā)技術(shù)和工具2.1開(kāi)發(fā)技術(shù)2.1.1Java開(kāi)發(fā)語(yǔ)言Java是一種著名的面向?qū)ο缶幊陶Z(yǔ)言,由SunMicrosystems(現(xiàn)為OracleCorporation)于上世紀(jì)90年代推出,被設(shè)計(jì)成一種跨平臺(tái)的語(yǔ)言。Java不僅具有強(qiáng)大的面向?qū)ο筇匦?,而且還擁有許多其他特性,如易于學(xué)習(xí)、靈活性、健壯性、安全性和高性能等。同時(shí),Java編程語(yǔ)言具有一定的移植性,這一優(yōu)勢(shì)是其他語(yǔ)言不能比擬的,這些優(yōu)勢(shì)使得Java編程語(yǔ)言運(yùn)用愈加廣泛。[3]與許多其他編程語(yǔ)言不同,Java可以在各種操作系統(tǒng)上運(yùn)行,包括Windows、Linux和macOS等。這得益于Java虛擬機(jī)(JVM),它是一個(gè)軟件組件,可以在各種平臺(tái)上執(zhí)行Java程序,Java開(kāi)發(fā)者可以只編寫(xiě)一次代碼,然后在各種操作系統(tǒng)上運(yùn)行它。因此,Java編程語(yǔ)言既能提升軟件開(kāi)發(fā)的效率,還決定著系統(tǒng)的有序運(yùn)行[4]Java具有非常豐富的類(lèi)庫(kù)和工具,這些類(lèi)庫(kù)和工具可以幫助開(kāi)發(fā)者快速構(gòu)建各種類(lèi)型的應(yīng)用程序。Java類(lèi)庫(kù)包含了許多常用的類(lèi)和接口,如集合類(lèi)、I/O類(lèi)、GUI類(lèi)、網(wǎng)絡(luò)類(lèi)和數(shù)據(jù)庫(kù)類(lèi)等。此外,Java還有一些非常流行的框架,如Spring、Hibernate和Struts等,這些框架可以幫助開(kāi)發(fā)者更快地構(gòu)建企業(yè)級(jí)應(yīng)用程序。Java的安全性也是其受歡迎的一部分。Java通過(guò)提供安全管理器、類(lèi)加載器和字節(jié)碼驗(yàn)證等機(jī)制,可以防止Java程序執(zhí)行惡意代碼或訪問(wèn)危險(xiǎn)資源。這使得Java成為網(wǎng)絡(luò)編程和應(yīng)用程序開(kāi)發(fā)的首選語(yǔ)言之一。另外,在編程設(shè)計(jì)時(shí),Java編程語(yǔ)言可以有效適應(yīng)軟件的更新,充分利用其靈活性的優(yōu)勢(shì),運(yùn)用實(shí)時(shí)更新的案例和有效的方式,進(jìn)一步提高計(jì)算機(jī)軟件開(kāi)發(fā)的效率和質(zhì)量。[5]總的來(lái)說(shuō),Java是一種功能強(qiáng)大、易于學(xué)習(xí)、跨平臺(tái)、安全可靠的編程語(yǔ)言。因此,我選擇了Java作為本在線考試系統(tǒng)的開(kāi)發(fā)語(yǔ)言。2.1.2SpringBoot框架SpringBoot框架是一個(gè)基于Spring框架的開(kāi)源JavaWeb開(kāi)發(fā)框架。SpringBoot在整個(gè)應(yīng)用之中扮演著中介的角色,它是溝通SpringCloud和SpringFramework的橋梁,即J2EE框架和環(huán)境的中介[6]。它旨在簡(jiǎn)化Spring應(yīng)用程序的開(kāi)發(fā)和部署,并提供更快的開(kāi)發(fā)體驗(yàn)。SpringBoot可以幫助開(kāi)發(fā)者快速創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)別的應(yīng)用程序,而無(wú)需過(guò)多考慮容器、配置和依賴項(xiàng)管理等問(wèn)題。SpringBoot還通過(guò)集成第三方依賴管理工具,簡(jiǎn)化了版本沖突處理,提高了Java應(yīng)用的開(kāi)發(fā)效率[7]。SpringBoot框架使用約定優(yōu)于配置的方式來(lái)簡(jiǎn)化開(kāi)發(fā)流程。它默認(rèn)提供了一組常用的配置,如Tomcat服務(wù)器、數(shù)據(jù)庫(kù)連接池、安全性和日志記錄等。此外,SpringBoot還提供了大量的插件和工具,如Actuator、Devtools和SpringBootCLI等,可以幫助開(kāi)發(fā)者更方便地進(jìn)行開(kāi)發(fā)和調(diào)試。SpringBoot框架的另一個(gè)特點(diǎn)是可擴(kuò)展性。開(kāi)發(fā)者可以通過(guò)添加自定義的starter或自己的自動(dòng)配置類(lèi)來(lái)擴(kuò)展SpringBoot框架的功能。這使得開(kāi)發(fā)者可以根據(jù)自己的需求選擇自定義的功能,而無(wú)需編寫(xiě)大量的代碼。總之,SpringBoot框架是一個(gè)強(qiáng)大的、靈活的、易于使用的開(kāi)源Java框架,適用于各種類(lèi)型的Web開(kāi)發(fā)項(xiàng)目。它的出現(xiàn)簡(jiǎn)化了Spring應(yīng)用程序的開(kāi)發(fā)流程,加速了應(yīng)用程序的部署和運(yùn)行,為Java開(kāi)發(fā)者提供了更好的開(kāi)發(fā)體驗(yàn)。2.1.3VUE框架Vue框架是一款流行的開(kāi)源JavaScript前端框架,用于構(gòu)建交互式的Web界面。作為一款漸進(jìn)式框架,Vue.js使用組件化的方式構(gòu)建應(yīng)用,使得代碼更具可維護(hù)性和可重用性[8]。Vue采用自底向上增量開(kāi)發(fā)的設(shè)計(jì),提供了MVVM數(shù)據(jù)綁定和可組合的組件系統(tǒng),具有簡(jiǎn)單、靈活的API,通過(guò)簡(jiǎn)單的API可實(shí)現(xiàn)響應(yīng)式的數(shù)據(jù)綁定和可組合的視圖組件[9]。Vue.js具有許多優(yōu)點(diǎn),其中最突出的是其輕量級(jí)和高性能。Vue.js的文件大小小,加載速度快,同時(shí)具有響應(yīng)式的數(shù)據(jù)綁定和虛擬DOM(VirtualDOM)技術(shù),可以有效提升頁(yè)面渲染性能。此外,Vue.js還提供了豐富的指令、組件和插件,使得開(kāi)發(fā)者能夠快速構(gòu)建復(fù)雜的單頁(yè)面應(yīng)用(SPA)和交互式界面。總的來(lái)說(shuō),Vue.js是一款功能強(qiáng)大、靈活且易于學(xué)習(xí)的前端框架,適用于各種規(guī)模的Web應(yīng)用開(kāi)發(fā)。無(wú)論是構(gòu)建簡(jiǎn)單的頁(yè)面、開(kāi)發(fā)復(fù)雜的單頁(yè)面應(yīng)用,還是實(shí)現(xiàn)動(dòng)態(tài)的用戶界面,Vue.js都是一個(gè)優(yōu)秀的選擇。它的優(yōu)秀性能和便捷的開(kāi)發(fā)方式使得越來(lái)越多的開(kāi)發(fā)者選擇Vue.js作為其前端開(kāi)發(fā)的首選框架。2.2開(kāi)發(fā)工具本在線考試系統(tǒng)采用IntelliJIDEA開(kāi)發(fā)工具進(jìn)行開(kāi)發(fā),它被業(yè)界公認(rèn)為是最好用的Java開(kāi)發(fā)工具,IntelliJIDEA整合了開(kāi)發(fā)過(guò)程中實(shí)用的眾多功能,幾乎不用鼠標(biāo)方便的完成要做的任何事情,加快開(kāi)發(fā)的速度[10]。編寫(xiě)代碼時(shí)會(huì)自動(dòng)提示、重構(gòu),可以避免走彎路,提供項(xiàng)目開(kāi)發(fā)的效率和成功率。2.3MySQL數(shù)據(jù)庫(kù)MySQL是一種開(kāi)源式的關(guān)系型數(shù)據(jù)庫(kù),是廣泛應(yīng)用于Web開(kāi)發(fā)的數(shù)據(jù)庫(kù)系統(tǒng),具有可靠、高效及易用的特點(diǎn)[11]。不僅如此,MySQL屬于開(kāi)源軟件,可以免費(fèi)使用,且支持多種操作系統(tǒng),能夠快速處理大量數(shù)據(jù),因此,MySQL數(shù)據(jù)庫(kù)受到許多開(kāi)發(fā)人員的歡迎和喜愛(ài)。2.4本章小結(jié)本章節(jié)主要簡(jiǎn)述了本在線考試系統(tǒng)在開(kāi)發(fā)設(shè)計(jì)的過(guò)程中使用到的Java開(kāi)發(fā)語(yǔ)言、VUE框架和SpringBoot框架,以及IntelliJIDEA開(kāi)發(fā)工具和MySQL數(shù)據(jù)庫(kù)。3系統(tǒng)分析3.1系統(tǒng)可行性分析3.1.1技術(shù)可行性分析本系統(tǒng)采用Java語(yǔ)言進(jìn)行設(shè)計(jì)開(kāi)發(fā),后端運(yùn)用了現(xiàn)在被廣泛應(yīng)用的SpringBoot框架,前端采用了VUE框架,并結(jié)合了MySQL數(shù)據(jù)庫(kù)。SpringBoot框架可以快速搭建項(xiàng)目結(jié)構(gòu)并進(jìn)行開(kāi)發(fā),并支持內(nèi)嵌式容器,可以直接運(yùn)行,不需要外部服務(wù)器,不僅節(jié)省了開(kāi)發(fā)的時(shí)間,也降低了成本。VUE框架相對(duì)于其他框架來(lái)說(shuō)更容易上手,同時(shí)也能夠滿足各種應(yīng)用場(chǎng)景的需求。MySQL數(shù)據(jù)庫(kù)經(jīng)過(guò)長(zhǎng)期的發(fā)展,技術(shù)已經(jīng)較為成熟和完善。因此,本系統(tǒng)在技術(shù)可行性上具有很高的優(yōu)勢(shì)。3.1.2經(jīng)濟(jì)可行性分析本系統(tǒng)的經(jīng)濟(jì)可行性將從線上的設(shè)計(jì)開(kāi)發(fā)和線下的打印試卷來(lái)進(jìn)行分析。本系統(tǒng)在設(shè)計(jì)開(kāi)發(fā)的過(guò)程中,所采用的工具皆為免費(fèi)工具,例如MySQL數(shù)據(jù)庫(kù),它時(shí)一個(gè)被廣泛應(yīng)用的開(kāi)源的免費(fèi)數(shù)據(jù)庫(kù),因此,在開(kāi)發(fā)過(guò)程中節(jié)省了不少開(kāi)發(fā)成本。在線下考試,傳統(tǒng)的紙質(zhì)考試往往需要大量的紙張來(lái)打印試卷,而線上考試不僅可以減少這部分的成本,也能夠減少人力的投入,并做到環(huán)保。因此,本系統(tǒng)在經(jīng)濟(jì)可行性上具有很高的優(yōu)勢(shì)。3.1.3操作可行性分析本系統(tǒng)的頁(yè)面布局簡(jiǎn)單合理,內(nèi)容結(jié)構(gòu)清晰,用戶很容易上手,能夠快速找到想要的信息并進(jìn)行操作,頁(yè)面整體也較為整潔美觀,增強(qiáng)用戶的視覺(jué)感受,在功能模塊方面也比較完善,各個(gè)功能模塊之間相互關(guān)聯(lián),帶給用戶良好的體驗(yàn)。因此,本系統(tǒng)在操作可行性上具有很高的優(yōu)勢(shì)。3.1.4法律可行性分析本系統(tǒng)在設(shè)計(jì)開(kāi)發(fā)的過(guò)程中遵守知識(shí)產(chǎn)權(quán)法和著作權(quán)法等其余相關(guān)的法律法規(guī),沒(méi)有做出任何違反法律法規(guī)的行為,并且,本系統(tǒng)僅作為本人的畢業(yè)設(shè)計(jì),不做其他用途。系統(tǒng)中的用戶信息僅作為測(cè)試系統(tǒng)用,該系統(tǒng)也并不會(huì)導(dǎo)致數(shù)據(jù)信息泄露和濫用。因此,本系統(tǒng)在法律可行性上具有很高的優(yōu)勢(shì)。3.2系統(tǒng)需求分析本在線考試系統(tǒng)主要是對(duì)學(xué)生和老師這兩個(gè)角色的功能需求進(jìn)行分析的。對(duì)于學(xué)生而言,在線考試系統(tǒng)要做到最基本的能夠進(jìn)行考試,同時(shí)還具備改卷、查看成績(jī)、查看錯(cuò)題、對(duì)錯(cuò)題加以練習(xí)、查看個(gè)人資料、接收通知等功能。而對(duì)于老師來(lái)說(shuō),最重要的就是管理試卷、發(fā)布考試任務(wù)、管理題庫(kù),查看學(xué)生的考試情況,滿足教師對(duì)掌握學(xué)生的學(xué)習(xí)情況的需求。結(jié)合學(xué)生和老師這兩個(gè)角色的功能需求,設(shè)計(jì)出滿足該功能需求的在線考試系統(tǒng)。3.2.1學(xué)生功能需求分析學(xué)生如果還沒(méi)有賬號(hào),可以自己注冊(cè),已經(jīng)有賬號(hào)的可以登錄界面填寫(xiě)自己的賬號(hào)密碼登錄在線考試系統(tǒng),學(xué)生進(jìn)入系統(tǒng)后可以進(jìn)行考試、批改試卷、錯(cuò)題本、個(gè)人中心等功能,具體功能展示如下:注冊(cè):學(xué)生在還未有賬號(hào)時(shí),可以在注冊(cè)界面輸入用戶名和密碼,選擇年級(jí)進(jìn)行注冊(cè)。登錄:學(xué)生在登錄界面輸入正確的用戶名和密碼后點(diǎn)擊登錄,成功登錄在線考試系統(tǒng)??荚嚕簩W(xué)生可以在首頁(yè)或試卷中心選擇試卷進(jìn)行考試,在規(guī)定時(shí)間內(nèi)完成試卷。批改試卷:學(xué)生可以在考試結(jié)束后在根據(jù)解析自行批改試卷。查看考試記錄:學(xué)生可以在考試記錄界面查看自己考過(guò)的試卷,右側(cè)顯示答題情況。查看錯(cuò)題本:試卷批改后錯(cuò)題自動(dòng)收錄到錯(cuò)題本中,學(xué)生可以在錯(cuò)題本界面查看自己考試時(shí)做錯(cuò)的題,以便學(xué)生加以練習(xí)。個(gè)人中心:學(xué)生可以在個(gè)人中心查看自己的動(dòng)態(tài),也可以修改自己的個(gè)人信息。消息中心:學(xué)生可以在消息中心查看自己接收到的通知或消息。3.2.2教師功能需求分析教師在登錄在線考試系統(tǒng)后可以實(shí)現(xiàn)用戶管理、卷題管理、任務(wù)管理、成績(jī)管理和消息中心等功能,具體功能展示如下:登錄:教師在登錄界面輸入正確的賬號(hào)和密碼后點(diǎn)擊登錄,成功登錄在線考試系統(tǒng)。用戶管理:教師在登錄系統(tǒng)后可以對(duì)學(xué)生進(jìn)行進(jìn)行管理,可以添加、查詢、修改、刪除學(xué)生的信息,也可以啟用或禁用學(xué)生的賬號(hào)。卷題管理:教師可以對(duì)試卷和題庫(kù)進(jìn)行管理,對(duì)不同題型的題目進(jìn)行增刪改查,并從題庫(kù)中挑選題目完成試卷的添加,對(duì)試卷也能夠進(jìn)行查詢、修改和刪除。任務(wù)管理:教師可以創(chuàng)建任務(wù)試卷,在任務(wù)列表中對(duì)任務(wù)試卷進(jìn)行查詢、修改和刪除。學(xué)科管理:教師可以對(duì)不同年級(jí)的各學(xué)科進(jìn)行增刪改查。成績(jī)管理:教師可以查看學(xué)生的考試成績(jī)、提交時(shí)間、考試花費(fèi)時(shí)長(zhǎng)和錯(cuò)題數(shù)量,以此掌握學(xué)生的考試答題情況。消息中心:教師可以發(fā)送通知或消息給學(xué)生,也可以在列表查詢發(fā)送過(guò)的通知或消息。日志中心:教師可以通過(guò)日志中心查看學(xué)生和教師的動(dòng)態(tài),以便教師更好的了解學(xué)生的考試情況。3.3用例建模本在線考試系統(tǒng)有學(xué)生、教師這兩個(gè)角色,對(duì)應(yīng)的用例圖如下所示。3.3.1學(xué)生用例圖學(xué)生用例描述:學(xué)生在登錄界面輸入自己的用戶名和密碼后登錄在線考試系統(tǒng),然后進(jìn)行考試,批改試卷、查看試卷等各項(xiàng)操作。學(xué)生用例圖如下所示:圖3-1學(xué)生用例圖學(xué)生功能的用例規(guī)約詳情如下表3-1所示:表3-1基于Java在線考試系統(tǒng)學(xué)生功能需求用例規(guī)約表用例名稱基于Java在線考試系統(tǒng)學(xué)生用例用例描述學(xué)生登錄在線考試系統(tǒng)后,完成要進(jìn)行的操作。執(zhí)行者教師包括學(xué)生注冊(cè):尚未擁有賬號(hào)的學(xué)生可以自行在注冊(cè)界面輸入信息進(jìn)行注冊(cè)。學(xué)生登錄:已有賬號(hào)的學(xué)生在登錄界面輸入用戶名和密碼后登錄在線考試系統(tǒng)。首頁(yè):學(xué)生可以在首頁(yè)查看自己收到的三種不同類(lèi)型的試卷并進(jìn)行考試。試卷中心:學(xué)生可以通過(guò)試卷中心根據(jù)學(xué)科和試卷類(lèi)型查看試卷并進(jìn)行考試??荚囉涗洠簩W(xué)生可以通過(guò)考試記錄查看自己已經(jīng)完成的試卷,點(diǎn)擊查看試卷可以查看所選試卷的得分、用時(shí)等考試情況。錯(cuò)題本:試卷批改后錯(cuò)題會(huì)自動(dòng)收錄到錯(cuò)題本中,學(xué)生可以通過(guò)錯(cuò)題本查看自己的考試時(shí)答錯(cuò)的題目。個(gè)人中心:學(xué)生可以通過(guò)個(gè)人中心查看自己的動(dòng)態(tài)和資料,也可以修改個(gè)人資料。消息中心:學(xué)生可以在消息中心查看自己收到的通知或消息。前置條件學(xué)生進(jìn)入在線考試系統(tǒng)。后置條件學(xué)生的各個(gè)操作成功進(jìn)行并保留修改后的信息。基本路徑1.學(xué)生成功登錄并進(jìn)入在線考試系統(tǒng)。2.學(xué)生對(duì)所擁有的功能進(jìn)行操作。3.學(xué)生退出登錄并關(guān)閉在線考試系統(tǒng)。業(yè)務(wù)規(guī)則本用例規(guī)約僅限基于Java在線考試系統(tǒng)學(xué)生參考和使用。3.3.2教師用例圖教師用例描述:教師通過(guò)學(xué)校提供的賬號(hào)和密碼登錄在線考試系統(tǒng),然后對(duì)學(xué)生、試卷、題庫(kù)以及學(xué)生的成績(jī)進(jìn)行管理。教師用例圖如下所示:圖3-2教師用例圖教師功能的用例規(guī)約詳情如下表3-2所示:表3-2基于Java在線考試系統(tǒng)教師功能需求用例規(guī)約表用例名稱基于Java在線考試系統(tǒng)教師用例用例描述教師登錄在線考試系統(tǒng)后,完成要進(jìn)行的操作。執(zhí)行者教師包括教師登錄:教師根據(jù)學(xué)生所提供的賬號(hào)和密碼進(jìn)行登錄。用戶管理:教師可以通過(guò)學(xué)生列表查詢學(xué)生,添加、修改、刪除學(xué)生的信息。卷題管理:教師可以通過(guò)試卷列表和題目列表對(duì)試卷和題目進(jìn)行查詢、添加、修改、刪除。成績(jī)管理:教師可以通過(guò)答卷列表查詢學(xué)生的成績(jī)等情況。表3-2(續(xù)表)基于Java在線考試系統(tǒng)教師功能需求用例規(guī)約表用例名稱基于Java在線考試系統(tǒng)教師用例包括消息中心:教師可以填寫(xiě)消息將消息發(fā)送給學(xué)生,也可以通過(guò)消息列表查看已經(jīng)發(fā)送出去的消息。日志中心:教師可以通過(guò)用戶日志查看用戶的日志。前置條件教師進(jìn)入在線考試系統(tǒng)。后置條件教師的各個(gè)操作成功進(jìn)行并保留修改后的信息?;韭窂?.教師成功登錄并進(jìn)入在線考試系統(tǒng)。2.教師對(duì)所擁有的功能進(jìn)行操作。3.教師退出登錄并關(guān)閉在線考試系統(tǒng)。業(yè)務(wù)規(guī)則本用例規(guī)約僅限基于Java在線考試系統(tǒng)教師參考和使用。3.4系統(tǒng)類(lèi)建模本在線考試系統(tǒng)中所用到的類(lèi)模型根據(jù)角色的不同分為學(xué)生和教師兩部分,具體如下所示。3.4.1學(xué)生主要類(lèi)圖學(xué)生主要類(lèi)有試卷中心(ExamPaper)、考試記錄(Record)、錯(cuò)題本(WrongQuestion)、個(gè)人中心(Personal)等,具體如圖3-3所示:圖3-3學(xué)生主要類(lèi)圖3.4.2教師主要類(lèi)圖教師主要類(lèi)有用戶管理(User)、試卷管理(TestPaper)、題目管理(ExaminationProblems)、成績(jī)管理(Mark)等,具體如圖3-4所示:圖3-4教師主要類(lèi)圖3.5本章小結(jié)本章先對(duì)在線考試系統(tǒng)的技術(shù)、經(jīng)濟(jì)、操作、法律可行性進(jìn)行了分析,再對(duì)學(xué)生和教師這兩個(gè)角色的各個(gè)功能模塊進(jìn)行了詳細(xì)的介紹和需求分析,同時(shí)根據(jù)兩個(gè)角色的功能繪制了用例圖、類(lèi)圖和用例規(guī)約表,進(jìn)一步分析闡述了兩者之間的關(guān)聯(lián)。4系統(tǒng)設(shè)計(jì)4.1系統(tǒng)活動(dòng)圖本部分主要是根據(jù)學(xué)生和教師兩個(gè)不同角色的主要功能繪制對(duì)應(yīng)的活動(dòng)圖,具體如下所示。4.1.1學(xué)生活動(dòng)圖學(xué)生在登錄界面輸入用戶名和密碼點(diǎn)擊登錄后,進(jìn)入在線考試系統(tǒng),進(jìn)行考試,批改試卷、查看試卷、修改個(gè)人資料等各項(xiàng)操作。學(xué)生活動(dòng)圖具體如下所示:圖4-1學(xué)生活動(dòng)圖4.1.2教師活動(dòng)圖教師在登錄界面輸入用戶名和密碼點(diǎn)擊登錄后,進(jìn)入在線考試系統(tǒng),進(jìn)行用戶管理、查看日志、卷題管理、成績(jī)管理、發(fā)送消息等一系列操作。教師活動(dòng)圖具體如下所示:圖4-2教師活動(dòng)圖4.2系統(tǒng)時(shí)序圖本部分主要是繪制學(xué)生和教師兩個(gè)不同角色的時(shí)序圖,具體如下所示。4.2.1學(xué)生時(shí)序圖根據(jù)學(xué)生進(jìn)入在線考試系統(tǒng)后所進(jìn)行的一系列操作繪制的學(xué)生時(shí)序圖,明確學(xué)生在系統(tǒng)中的交互流程,具體如下圖4-3所示。圖4-3學(xué)生時(shí)序圖4.2.2教師時(shí)序圖根據(jù)教師進(jìn)入在線考試系統(tǒng)后所進(jìn)行的一系列操作繪制的教師時(shí)序圖,明確教師在系統(tǒng)中的交互流程,具體如下圖4-4所示。圖4-4教師時(shí)序圖4.3數(shù)據(jù)庫(kù)建模我們?cè)趯?shí)際項(xiàng)目的設(shè)計(jì)中,數(shù)據(jù)庫(kù)概念設(shè)計(jì)、邏輯設(shè)計(jì)都要對(duì)實(shí)體間關(guān)系進(jìn)行分析,只有正確分析出實(shí)體間存在的關(guān)系,才能為數(shù)據(jù)庫(kù)物理結(jié)構(gòu)設(shè)計(jì)奠定基礎(chǔ)[12]。本部分主要根據(jù)在線考試系統(tǒng)的實(shí)體關(guān)系繪制數(shù)據(jù)庫(kù)實(shí)體關(guān)系圖,分析數(shù)據(jù)庫(kù)表與表之間的關(guān)系,具體如下所示。圖4-5系統(tǒng)數(shù)據(jù)庫(kù)實(shí)體關(guān)系圖4.4數(shù)據(jù)庫(kù)信息表(1)試卷表,如下表4-1所示。表4-1試卷表(exam_paper)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是試卷編號(hào)namevarchar255是否試卷名subject_idint11是否學(xué)科編號(hào)paper_typeint11是否試卷類(lèi)型grade_levelint11是否年級(jí)scoreint11是否分?jǐn)?shù)question_countint11是否總題數(shù)suggest_timeint11是否建議用時(shí)limit_start_timedatetime0是否開(kāi)始時(shí)間limit_end_timedatetime0是否結(jié)束時(shí)間frame_text_content_idint11是否文本編號(hào)create_userint11是否出卷教師create_timedatetime0是否出卷時(shí)間deletedbit1是否是否刪除task_exam_idint11是否任務(wù)試卷編號(hào)(2)考試記錄表,如表4-2所示。表4-2考試記錄表(exam_paper_answer)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是考試記錄編號(hào)exam_paper_idint11是否試卷編號(hào)paper_namevarchar255是否試卷名paper_typeint11是否試卷類(lèi)型subject_idint11是否學(xué)科編號(hào)system_scoreint11是否題型分?jǐn)?shù)user_scoreint11是否學(xué)生分?jǐn)?shù)paper_scoreint11是否試卷分?jǐn)?shù)question_correctint11是否錯(cuò)題數(shù)question_countint11是否總題數(shù)do_timeint11是否考試用時(shí)statusint11是否狀態(tài)create_userint11是否考生create_timedatetime0是否考試時(shí)間task_exam_idint11是否任務(wù)試卷編號(hào)(3)試卷詳情表,如表4-3所示。表4-3試卷詳情表(exam_paper_details)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是試卷詳情編號(hào)question_idint11是否題目編號(hào)exam_paper_idint11是否試卷編號(hào)exam_paper_answer_idint11是否考試記錄編號(hào)question_typeint11是否題目類(lèi)型subject_idint11是否學(xué)科編號(hào)customer_scoreint11是否學(xué)生分?jǐn)?shù)question_scoreint11是否題目分?jǐn)?shù)question_text_content_idint11是否題目文本編號(hào)answervarchar255是否答案text_content_idint11是否文本編號(hào)do_rightbit1是否是否正確create_userint11是否考生create_timedatetime0是否考試試卷item_orderint11是否題目序號(hào)(4)消息表,如表4-4所示。表4-4消息表(message)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是消息編號(hào)titlevarchar255是否標(biāo)題contentvarchar500是否內(nèi)容create_timedatetime0是否創(chuàng)建時(shí)間send_user_idint11是否發(fā)送人編號(hào)send_user_namevarchar255是否發(fā)送人用戶名send_real_namevarchar255是否發(fā)送人真實(shí)姓名receive_user_countint11是否接收人數(shù)read_countint11是否已讀人數(shù)(5)用戶消息表,如表4-5所示。表4-5用戶消息表(message_user)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是用戶消息編號(hào)message_idint11是否消息編號(hào)receive_user_idint11是否接收人編號(hào)receive_user_namevarchar255是否接收人用戶名receive_real_namevarchar255是否接收人真實(shí)姓名表4-5(續(xù)表)用戶消息表(message_user)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述readedbit1是否是否已讀create_timedatetime0是否 創(chuàng)建時(shí)間read_timedatetime0是否閱讀時(shí)間(6)題目表,如表4-6所示。表4-6題目表(question)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是題目編號(hào)question_typeint11是否題目類(lèi)型subject_idint11是否學(xué)科編號(hào)scoreint11是否分?jǐn)?shù)grade_levelint11是否年級(jí)difficultint11是否難度correcttext0是否正確答案info_text_content_idint11是否文本內(nèi)容編號(hào)create_userint11是否創(chuàng)建人statusint11是否狀態(tài)create_timedatetime0是否創(chuàng)建時(shí)間deletedbit1是否是否刪除(7)學(xué)科表,如表4-7所示。表4-7學(xué)科表(subject)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是學(xué)科編號(hào)namevarchar255是否學(xué)科名levelint11是否年級(jí)數(shù)level_namevarchar255是否年級(jí)名item_orderint11是否序號(hào)deletedbit1是否是否刪除(8)任務(wù)試卷表,如表4-8所示。表4-8任務(wù)試卷表(task_exam)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是任務(wù)試卷編號(hào)titlevarchar255是否標(biāo)題grade_levelint11是否年級(jí)frame_text_content_idint11是否文本編號(hào)create_userint11是否出題教師create_timedatetime0是否出題時(shí)間deletedbit1是否是否刪除create_user_namevarchar255是否出題人用戶名(9)任務(wù)考試記錄表,如表4-9所示。表4-9任務(wù)考試記錄表(task_exam_answer)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是任務(wù)考試記錄編號(hào)task_exam_idint11是否任務(wù)試卷編號(hào)create_userint11是否考生create_timedatetime0是否考試時(shí)間text_content_idint11是否文本編號(hào)(10)文本內(nèi)容表,如表4-10所示。表4-10文本內(nèi)容表(text_content)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是文本編號(hào)contenttext0是否文本內(nèi)容create_timedatetime0是否創(chuàng)建時(shí)間(11)用戶表,如表4-11所示。表4-11用戶表(user)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是用戶編號(hào)user_uuidvarchar36是否用戶編碼user_namevarchar255是否用戶名passwordvarchar255是否密碼real_namevarchar255是否真實(shí)姓名ageint11是否年齡sexint11是否性別birth_daydatetime0是否出生日期user_levelint11是否年級(jí)phonevarchar255是否手機(jī)號(hào)碼roleint11是否角色statusint11是否狀態(tài)image_pathvarchar255是否圖像路徑create_timedatetime0是否創(chuàng)建用戶時(shí)間modify_timedatetime0是否修改用戶信息時(shí)間last_active_timedatetime0是否最后一次登錄時(shí)間deletedbit1是否是否刪除(12)用戶日志表,如表4-12所示。表4-12用戶日志表(user_event_log)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述idint11否是日志編號(hào)user_idint11是否用戶編號(hào)user_namevarchar255是否用戶名real_namevarchar255是否用戶真實(shí)姓名contenttext0是否文本內(nèi)容表4-12(續(xù)表)用戶日志表(user_event_log)列名數(shù)據(jù)類(lèi)型長(zhǎng)度能否為空主鍵描述create_timedatetime0是否創(chuàng)建時(shí)間4.5系統(tǒng)部署圖本在線考試系統(tǒng)采用B/S模式,該模式是一種常用的軟件開(kāi)發(fā)架構(gòu)技術(shù),具有低維護(hù)成本和易升級(jí)等特點(diǎn)[13]。如下所示:圖4-6系統(tǒng)部署圖4.6本章小結(jié)本章節(jié)主要是介紹本在線考試系統(tǒng)的設(shè)計(jì)過(guò)程,通過(guò)系統(tǒng)活動(dòng)圖、時(shí)序圖、部署圖以及數(shù)據(jù)庫(kù)實(shí)體關(guān)系圖、信息表進(jìn)一步了解該系統(tǒng)的功能。5系統(tǒng)實(shí)現(xiàn)5.1學(xué)生功能模塊5.1.1更改個(gè)人資料功能實(shí)現(xiàn)學(xué)生可以在個(gè)人中心修改個(gè)人資料,輸入相關(guān)信息后點(diǎn)擊更新,完成資料修改。修改個(gè)人資料界面如下圖所示:圖5-1修改個(gè)人資料界面圖學(xué)生修改個(gè)人資料界面代碼如下:@RequestMapping(value="/update",method=RequestMethod.POST)publicRestResponseupdate(@RequestBody@ValidUserUpdateVMmodel){if(StringUtils.isBlank(model.getBirthDay())){model.setBirthDay(null);}Useruser=userService.selectById(getCurrentUser().getId());modelMapper.map(model,user);user.setModifyTime(newDate());userService.updateByIdFilter(user);UserEventLoguserEventLog=newUserEventLog(user.getId(),user.getUserName(),user.getRealName(),newDate());userEventLog.setContent(user.getUserName()+"更新了個(gè)人資料");eventPublisher.publishEvent(newUserEvent(userEventLog));returnRestResponse.ok();}5.1.2更改個(gè)人資料功能實(shí)現(xiàn)學(xué)生可在個(gè)人中心查看自己的動(dòng)態(tài)。查看動(dòng)態(tài)界面如下:圖5-2查看個(gè)人動(dòng)態(tài)界面圖學(xué)生查看個(gè)人動(dòng)態(tài)界面代碼如下:@RequestMapping(value="/log",method=RequestMethod.POST)publicRestResponse<List<UserEventLogVM>>log(){Useruser=getCurrentUser();List<UserEventLog>userEventLogs=userEventLogService.getUserEventLogByUserId(user.getId());List<UserEventLogVM>userEventLogVMS=userEventLogs.stream().map(d->{UserEventLogVMvm=modelMapper.map(d,UserEventLogVM.class);vm.setCreateTime(DateTimeUtil.dateFormat(d.getCreateTime()));returnvm;}).collect(Collectors.toList());returnRestResponse.ok(userEventLogVMS);}5.1.3查看消息功能實(shí)現(xiàn)學(xué)生可在消息中心查看自己收到的消息。查看消息界面如下:圖5-3消息界面圖學(xué)生查看消息界面代碼如下:@RequestMapping(value="/message/page",method=RequestMethod.POST)publicRestResponse<PageInfo<MessageResponseVM>>messagePageList(@RequestBodyMessageRequestVMmessageRequestVM){messageRequestVM.setReceiveUserId(getCurrentUser().getId());PageInfo<MessageUser>messageUserPageInfo=messageService.studentPage(messageRequestVM);List<Integer>ids=messageUserPageInfo.getList().stream().map(d->d.getMessageId()).collect(Collectors.toList());List<Message>messages=ids.size()!=0?messageService.selectMessageByIds(ids):null;PageInfo<MessageResponseVM>page=PageInfoHelper.copyMap(messageUserPageInfo,e->{MessageResponseVMvm=modelMapper.map(e,MessageResponseVM.class);messages.stream().filter(d->e.getMessageId().equals(d.getId())).findFirst().ifPresent(message->{vm.setTitle(message.getTitle());vm.setContent(message.getContent());vm.setSendUserName(message.getSendUserName());});vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));returnvm;});returnRestResponse.ok(page);}5.1.4試卷列表功能實(shí)現(xiàn)學(xué)生可以查看試卷列表中的試卷,并從從中選擇試卷進(jìn)行考試。查看試卷列表界面如下:圖5-4試卷列表界面圖學(xué)生查看試卷列表界面代碼如下:@RequestMapping(value="/pageList",method=RequestMethod.POST)publicRestResponse<PageInfo<ExamPaperPageResponseVM>>pageList(@RequestBody@ValidExamPaperPageVMmodel){PageInfo<ExamPaper>pageInfo=examPaperService.studentPage(model);PageInfo<ExamPaperPageResponseVM>page=PageInfoHelper.copyMap(pageInfo,e->{ExamPaperPageResponseVMvm=modelMapper.map(e,ExamPaperPageResponseVM.class);vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));returnvm;});returnRestResponse.ok(page);5.1.5提交試卷功能實(shí)現(xiàn)學(xué)生答題結(jié)束后可以點(diǎn)擊提交試卷完成考試。提交試卷界面如下圖所示:圖5-5提交試卷界面圖學(xué)生提交試卷界面代碼如下:@RequestMapping(value="/answerSubmit",method=RequestMethod.POST)publicRestResponseanswerSubmit(@RequestBody@ValidExamPaperSubmitVMexamPaperSubmitVM){Useruser=getCurrentUser();ExamPaperAnswerInfoexamPaperAnswerInfo=examPaperAnswerService.calculateExamPaperAnswer(examPaperSubmitVM,user);if(null==examPaperAnswerInfo){returnRestResponse.fail(2,"試卷不能重復(fù)做");}ExamPaperAnswerexamPaperAnswer=examPaperAnswerInfo.getExamPaperAnswer();IntegeruserScore=examPaperAnswer.getUserScore();StringscoreVm=ExamUtil.scoreToVM(userScore);UserEventLoguserEventLog=newUserEventLog(user.getId(),user.getUserName(),user.getRealName(),newDate());Stringcontent=user.getUserName()+"提交試卷:"+examPaperAnswerInfo.getExamPaper().getName()+"得分:"+scoreVm+"耗時(shí):"+ExamUtil.secondToVM(examPaperAnswer.getDoTime());userEventLog.setContent(content);eventPublisher.publishEvent(newCalculateExamPaperAnswerCompleteEvent(examPaperAnswerInfo));eventPublisher.publishEvent(newUserEvent(userEventLog));returnRestResponse.ok(scoreVm);}5.1.6批改試卷功能實(shí)現(xiàn)學(xué)生考試結(jié)束后可以進(jìn)行試卷批改,參照答案自行給分。批改試卷界面如下所示:圖5-6批改試卷界面學(xué)生批改試卷界面代碼如下:@RequestMapping(value="/edit",method=RequestMethod.POST)publicRestResponseedit(@RequestBody@ValidExamPaperSubmitVMexamPaperSubmitVM){booleannotJudge=examPaperSubmitVM.getAnswerItems().stream().anyMatch(i->i.getDoRight()==null&&i.getScore()==null);if(notJudge){returnRestResponse.fail(2,"有未批改題目");}ExamPaperAnswerexamPaperAnswer=examPaperAnswerService.selectById(examPaperSubmitVM.getId());ExamPaperAnswerStatusEnumexamPaperAnswerStatusEnum=ExamPaperAnswerStatusEnum.fromCode(examPaperAnswer.getStatus());if(examPaperAnswerStatusEnum==ExamPaperAnswerStatusEnum.Complete){returnRestResponse.fail(3,"試卷已完成");}Stringscore=examPaperAnswerService.judge(examPaperSubmitVM);Useruser=getCurrentUser();UserEventLoguserEventLog=newUserEventLog(user.getId(),user.getUserName(),user.getRealName(),newDate());Stringcontent=user.getUserName()+"批改試卷:"+examPaperAnswer.getPaperName()+"得分:"+score;userEventLog.setContent(content);eventPublisher.publishEvent(newUserEvent(userEventLog));returnRestResponse.ok(score);}5.1.7查看考試記錄功能實(shí)現(xiàn)學(xué)生可以在考試記錄中查看試卷或點(diǎn)擊試卷查看考試情況??荚囉涗浗缑嫒缦滤荆簣D5-7考試記錄界面圖學(xué)生考試記錄界面代碼如下:@RequestMapping(value="/read/{id}",method=RequestMethod.POST)publicRestResponse<ExamPaperReadVM>read(@PathVariableIntegerid){ExamPaperAnswerexamPaperAnswer=examPaperAnswerService.selectById(id);ExamPaperReadVMvm=newExamPaperReadVM();ExamPaperEditRequestVMpaper=examPaperService.examPaperToVM(examPaperAnswer.getExamPaperId());ExamPaperSubmitVManswer=examPaperAnswerService.examPaperAnswerToVM(examPaperAnswer.getId());vm.setPaper(paper);vm.setAnswer(answer);returnRestResponse.ok(vm);}5.2教師功能模塊5.2.1用戶管理功能實(shí)現(xiàn)教師可以對(duì)用戶進(jìn)行管理,查看學(xué)生列表,對(duì)學(xué)生信息進(jìn)行查詢、添加、修改、刪除。用戶管理頁(yè)面如下所示:圖5-8用戶管理界面圖教師用戶管理頁(yè)面代碼如下所示:@RequestMapping(value="/page/list",method=RequestMethod.POST)publicRestResponse<PageInfo<UserResponseVM>>pageList(@RequestBodyUserPageRequestVMmodel){PageInfo<User>pageInfo=userService.userPage(model);PageInfo<UserResponseVM>page=PageInfoHelper.copyMap(pageInfo,d->UserResponseVM.from(d));returnRestResponse.ok(page);}5.2.2試卷列表功能實(shí)現(xiàn)教師可以查看試卷列表,并在試卷列表中查詢、添加、修改、刪除試卷。獲取試卷列表界面如下所示:圖5-9試卷列表界面圖教師獲取試卷列表界面代碼如下所示:@RequestMapping(value="/page",method=RequestMethod.POST)publicRestResponse<PageInfo<ExamResponseVM>>pageList(@RequestBodyExamPaperPageRequestVMmodel){PageInfo<ExamPaper>pageInfo=examPaperService.page(model);PageInfo<ExamResponseVM>page=PageInfoHelper.copyMap(pageInfo,e->{ExamResponseVMvm=modelMapper.map(e,ExamResponseVM.class);vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));returnvm;});returnRestResponse.ok(page);}5.2.3題目列表功能實(shí)現(xiàn)教師可以查看題目列表,并在題目列表中查詢、添加、修改、刪除題目。獲取題目列表界面如下所示:圖5-10題目列表界面圖教師獲取題目列表界面代碼如下所示:@RequestMapping(value="/page",method=RequestMethod.POST)publicRestResponse<PageInfo<QuestionResponseVM>>pageList(@RequestBodyQuestionPageRequestVMmodel){PageInfo<Question>pageInfo=questionService.page(model);PageInfo<QuestionResponseVM>page=PageInfoHelper.copyMap(pageInfo,q->{QuestionResponseVMvm=modelMapper.map(q,QuestionResponseVM.class);vm.setCreateTime(DateTimeUtil.dateFormat(q.getCreateTime()));vm.setScore(ExamUtil.scoreToVM(q.getScore()));TextContenttextContent=textContentService.selectById(q.getInfoTextContentId());QuestionObjectquestionObject=JsonUtil.toJsonObject(textContent.getContent(),QuestionObject.class);vm.setShortTitle(questionObject.getTitleContent());returnvm;});returnRestResponse.ok(page);}5.2.4答卷列表功能實(shí)現(xiàn)教師可以在成績(jī)管理中查看學(xué)生的答卷列表,查看答卷信息。獲取答卷列表界面如下所示:圖5-11答卷列表界面圖教師獲取答卷列表界面代碼如下所示:@RequestMapping(value="/page",method=RequestMethod.POST)publicRestResponse<PageInfo<ExamPaperAnswerPageResponseVM>>pageJudgeList(@RequestBodyExamPaperAnswerPageRequestVMmodel){PageInfo<ExamPaperAnswer>pageInfo=examPaperAnswerService.adminPage(model);PageInfo<ExamPaperAnswerPageResponseVM>page=PageInfoHelper.copyMap(pageInfo,e->{ExamPaperAnswerPageResponseVMvm=modelMapper.map(e,ExamPaperAnswerPageResponseVM.class);Subjectsubject=subjectService.selectById(vm.getSubjectId());vm.setDoTime(ExamUtil.secondToVM(e.getDoTime()));vm.setSystemScore(ExamUtil.scoreToVM(e.getSystemScore()));vm.setUserScore(ExamUtil.scoreToVM(e.getUserScore()));vm.setPaperScore(ExamUtil.scoreToVM(e.getPaperScore()));vm.setSubjectName(subject.getName());vm.setCreateTime(DateTimeUtil.dateFormat(e.getCreateTime()));Useruser=userService.selectById(e.getCreateUser());vm.setUserName(user.getUserName());returnvm;});returnRestResponse.ok(page);}5.2.5發(fā)送消息功能實(shí)現(xiàn)教師有事情需要通知學(xué)生時(shí),可以在消息中心發(fā)送消息給學(xué)生。發(fā)送消息界面如下所示:圖5-12發(fā)送消息界面圖教師發(fā)送消息界面代碼如下所示:@RequestMapping(value="/send",method=RequestMethod.POST)publicRestResponsesend(@RequestBody@ValidMessageSendVMmodel){Useruser=getCurrentUser();List<User>receiveUser=userService.selectByIds(model.getReceiveUserIds());Datenow=newDate();Messagemessage=newMessage();message.setTitle(model.getTitle());message.setContent(model.getContent());message.setCreateTime(now);message.setReadCount(0);message.setReceiveUserCount(receiveUser.size());message.setSendUserId(user.getId());message.setSendUserName(user.getUserName());message.setSendRealName(user.getRealName());List<MessageUser>messageUsers=receiveUser.stream().map(d->{MessageUsermessageUser=newMessageUser();messageUser.setCreateTime(now);messageUser.setReaded(false);messageUser.setReceiveRealName(d.getRealName());messageUser.setReceiveUserId(d.getId());messageUser.setReceiveUserName(d.getUserName());returnmessageUser;}).collect(Collectors.toList());messageService.sendMessage(message,messageUsers);returnRestResponse.ok();}5.3本章小結(jié)本章節(jié)主要是對(duì)學(xué)生和教師這兩個(gè)角色所擁有的主要功能進(jìn)行介紹,展示了其主要功能的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論