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

下載本文檔

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

文檔簡(jiǎn)介

題目:在線考試系統(tǒng)--后端設(shè)計(jì)與實(shí)現(xiàn)目錄摘要 第1章緒論1.1課題研究的背景和意義考試作為大多數(shù)學(xué)校與教育機(jī)構(gòu)培訓(xùn)的重要檢測(cè)環(huán)節(jié)之一,在我國(guó)的教育制度下有著十分重要的作用。傳統(tǒng)的考試需要經(jīng)過(guò)命題、考試、閱卷、成績(jī)四個(gè)主要的步驟,其中每一步驟都需要考試管理人員充分參與,使得考試變成了非常繁瑣的過(guò)程,并且給教師帶來(lái)了不斷重復(fù)的高強(qiáng)度勞動(dòng)[1]。隨著計(jì)算機(jī)技術(shù)和物聯(lián)網(wǎng)技術(shù)的高速發(fā)展,高校對(duì)課程進(jìn)行考核的方式也在不斷改變。為了改變傳統(tǒng)輕實(shí)踐重理論的考核方式,以及程序設(shè)計(jì)課程的特點(diǎn),設(shè)計(jì)出基于web的在線網(wǎng)絡(luò)考試系統(tǒng),其可以在學(xué)生的學(xué)習(xí)過(guò)程中,對(duì)其課程的每章節(jié)的學(xué)習(xí)內(nèi)容進(jìn)行綜合測(cè)評(píng)。該系統(tǒng)可以及時(shí)對(duì)學(xué)生進(jìn)行評(píng)測(cè),并且為教師掌握學(xué)生的學(xué)習(xí)情況提供了極大的便利[2]。在線考試系統(tǒng)將會(huì)成為高校考試信息化管理的一個(gè)發(fā)展趨勢(shì)。一個(gè)功能完備的在線考試系統(tǒng)可以讓學(xué)生實(shí)現(xiàn)模擬刷題、在線考試,在短時(shí)間內(nèi)獲得考試成績(jī)并且及時(shí)查看錯(cuò)題,大大提高學(xué)生的考試效率,也減輕了教師的工作任務(wù)[3-4]。除此之外,在線考試的發(fā)展也有利于近年來(lái)國(guó)家提出的低碳、綠色環(huán)保、無(wú)紙化辦公的理念。1.2國(guó)內(nèi)外相關(guān)發(fā)展動(dòng)態(tài)1.2.1國(guó)外的研究現(xiàn)狀隨著互聯(lián)網(wǎng)技術(shù)的進(jìn)步,使得各個(gè)行業(yè)都開始通過(guò)信息化的手段來(lái)進(jìn)行管理,互聯(lián)網(wǎng)技術(shù)也開始應(yīng)用到了考試管理中,即形成了功能強(qiáng)大的在線考試系統(tǒng)來(lái)進(jìn)行考試[5]。國(guó)外一些發(fā)達(dá)國(guó)家,利用互聯(lián)網(wǎng)開展教育已經(jīng)多年。在上世紀(jì)90年代的美國(guó)已經(jīng)開始利用網(wǎng)絡(luò)來(lái)進(jìn)行教育活動(dòng)并且進(jìn)行考核。網(wǎng)絡(luò)教育的出現(xiàn),基本覆蓋了所有專業(yè)學(xué)科的需求,使得傳統(tǒng)的授課內(nèi)容及方式,考核評(píng)價(jià)等方便都出現(xiàn)了較大的創(chuàng)新[6]。近年來(lái),互聯(lián)網(wǎng)技術(shù)發(fā)展迅速,在線考試的種類繁多。由于其表現(xiàn)出來(lái)的便捷性和超時(shí)空性,國(guó)際上許多的大型考試都使用了網(wǎng)絡(luò)考試。例如:微軟的MSCE、MCOBA認(rèn)證考試、IBM認(rèn)證考試CCNP認(rèn)證、思科CCNA認(rèn)證考試、雅思、托福考試等,都在想用對(duì)應(yīng)的在線考試系統(tǒng)。1.2.2國(guó)內(nèi)的研究現(xiàn)狀相對(duì)于西方發(fā)達(dá)國(guó)家,國(guó)內(nèi)在線教學(xué)平臺(tái)起步較晚。但長(zhǎng)期以來(lái),我國(guó)致力于在線教育的研究與應(yīng)用,并且隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在線教育平臺(tái)的發(fā)展也呈現(xiàn)出了高速的發(fā)展趨勢(shì)。教育部與很多知名高校共同開展了在線教育及考試的工作,且已經(jīng)構(gòu)建了完備的在線考試系統(tǒng)。[7]近年來(lái),隨著高校招生和各大企業(yè)招聘的需求增加,在線考試系統(tǒng)得到了廣泛應(yīng)用。國(guó)內(nèi)的許多認(rèn)證考試也使用了在線考試系統(tǒng),比如計(jì)算機(jī)等級(jí)考試和初級(jí)會(huì)計(jì)資格證考試等。計(jì)算機(jī)考試系統(tǒng)也在許多行業(yè)都得到了應(yīng)用,比如駕??荚?yán)碚摽荚嚨萚8]。國(guó)內(nèi)比較成熟的在線教學(xué)平臺(tái)包括清華大學(xué)的新葉教學(xué)平臺(tái)、北京師范大學(xué)現(xiàn)代教育技術(shù)研究所開發(fā)的Vclass網(wǎng)絡(luò)教學(xué)平臺(tái)等,以及向牛客網(wǎng)這類擁有集成題庫(kù)、在線自測(cè)、在線筆試、用戶交流互動(dòng)等功能的在線學(xué)習(xí)系統(tǒng)。1.3系統(tǒng)研究和可行性分析1.3.1系統(tǒng)研究在線考試系統(tǒng),屬于采用B/S架構(gòu)的信息管理系統(tǒng)。B/S管理軟件的用戶在客戶機(jī)上無(wú)需安裝任何軟件,使用瀏覽器即可訪問(wèn)系統(tǒng)。B/S建立在瀏覽器上,有更加豐富和生動(dòng)的表現(xiàn)方式與用戶交流,并且大部分難度較低,減少開發(fā)成本。這樣的系統(tǒng)能夠很好的在校園網(wǎng)中架構(gòu)和實(shí)現(xiàn)。對(duì)于學(xué)校來(lái)說(shuō),系統(tǒng)管理人員只需要管理服務(wù)器即可,所有的客戶端不需要做維護(hù),可以提高工作效率。當(dāng)用戶的規(guī)模增大時(shí),也不會(huì)增加升級(jí)所需要的工作量,只需要對(duì)服務(wù)器進(jìn)行相應(yīng)操作即可,可以減少系統(tǒng)管理人員的工作量。1.3.2可行性分析可行性研究的目的,就是用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。通過(guò)系統(tǒng)化的調(diào)查,對(duì)客戶提出的具體要求和提供的時(shí)間等資源進(jìn)行詳盡的研究,從而確保本系統(tǒng)在現(xiàn)有的技術(shù)和資源條件下能夠最終實(shí)現(xiàn)并成功應(yīng)用。系統(tǒng)的可行性分析主要包括經(jīng)濟(jì)上的可行性,技術(shù)上的可行性,操作上的可行性和法律上的可行性。系統(tǒng)可行性分析應(yīng)當(dāng)具有預(yù)見性、公正性、可靠性和科學(xué)性等特點(diǎn)[9-10]。經(jīng)濟(jì)可行性學(xué)校傳統(tǒng)組織考試的過(guò)程包括教師命題、學(xué)校組織學(xué)生考試、教師閱卷、統(tǒng)計(jì)學(xué)生成績(jī)等過(guò)程。在具體的實(shí)施中,耗費(fèi)了大量的人力和物力。在線考試系統(tǒng)實(shí)現(xiàn)了真正的無(wú)紙化考試方式,達(dá)到了環(huán)保的效果,同時(shí)也節(jié)省了大量費(fèi)用。在線考試系統(tǒng)的組卷、評(píng)卷和分析試卷等過(guò)程與傳統(tǒng)的考試方式相比,縮短了時(shí)間,降低了人力和時(shí)間成本。從長(zhǎng)遠(yuǎn)利益來(lái)說(shuō),本畢業(yè)設(shè)計(jì)的開發(fā)還是具有相當(dāng)大的經(jīng)濟(jì)可行性的。技術(shù)可行性本系統(tǒng)后端主要使用Java的springboot框架完成開發(fā),描述所用的技術(shù)操作可行性在線考試系統(tǒng)要想真正發(fā)揮其作用,還需要再現(xiàn)有的各級(jí)學(xué)校的軟件和硬件條件上得以合理的應(yīng)用?,F(xiàn)在全國(guó)的所有高等院校都已經(jīng)實(shí)現(xiàn)了網(wǎng)絡(luò)化和數(shù)字化的校園。并且建立了屬于自己的校園網(wǎng),配置了大量的軟件和硬件資源以及專門的管理人員,用于管理日常教學(xué)和工作。以高校的現(xiàn)有條件和管理水平,完全由能力滿足在線考試系統(tǒng)在校園內(nèi)的實(shí)施和應(yīng)用。法律可行性由于本系統(tǒng)是在相關(guān)法律法規(guī)下實(shí)施完成的,所以不存在任何法律問(wèn)題,在法律上是完全可行的。綜合考慮經(jīng)濟(jì)、技術(shù)、操作和法律等方面的因素,該在線考試系統(tǒng)的開發(fā)工作可以開始執(zhí)行1.4本文組織結(jié)構(gòu)說(shuō)明本文詳細(xì)介紹了基于前后端分離技術(shù)的在線考試系統(tǒng)后端的設(shè)計(jì)、開發(fā)的全過(guò)程。從開始到程序設(shè)計(jì)的實(shí)現(xiàn),將在以下幾章中予以介紹:第1章:緒論,這一章主要是對(duì)本次畢業(yè)設(shè)計(jì)所開發(fā)的系統(tǒng)進(jìn)行問(wèn)題的定義,通過(guò)問(wèn)題的定義明白需要做些什么,并且對(duì)開發(fā)內(nèi)容做簡(jiǎn)單介紹;同時(shí)本章還對(duì)課題的研究背景與研究意義進(jìn)行分析,對(duì)開發(fā)本系統(tǒng)的可行性分析還有對(duì)各章內(nèi)容的簡(jiǎn)要介紹。第2章:開發(fā)環(huán)境、語(yǔ)言和相關(guān)技術(shù)介紹,主要是對(duì)本次開發(fā)涉及到的理論知識(shí)和用到的開發(fā)工具做相關(guān)闡述。第3章:系統(tǒng)需求分析,對(duì)在線考試系統(tǒng)的功能模塊與性能進(jìn)行分析第4章:總體設(shè)計(jì):對(duì)在線考試系統(tǒng)后端的總體設(shè)計(jì)思想進(jìn)行介紹,主要有系統(tǒng)的功能模塊,各功能實(shí)現(xiàn)的流程圖和數(shù)據(jù)庫(kù)的設(shè)計(jì)。第5章:詳細(xì)設(shè)計(jì):主要介紹了在線考試系統(tǒng)的核心模塊和所涉及的核心代碼。第6章:系統(tǒng)測(cè)試與評(píng)價(jià)分析,主要是對(duì)系統(tǒng)所實(shí)現(xiàn)的功能模塊來(lái)做測(cè)試,并作相關(guān)分析。第7章總結(jié)與展望,總結(jié)了本次設(shè)計(jì)過(guò)程中遇到的技術(shù)難題并做相關(guān)分析,對(duì)本系統(tǒng)尚未完善的地方作出下一步打算。

第2章開發(fā)環(huán)境、語(yǔ)言和相關(guān)技術(shù)介紹在確定系統(tǒng)的開發(fā)前景、意義、目標(biāo)之后,就是選擇開發(fā)工具以及運(yùn)用相關(guān)的技術(shù)來(lái)開發(fā)系統(tǒng)。在模式上,我們選擇B/S架構(gòu)的操作模式,這樣可以方便學(xué)生的考試和管理員的對(duì)試題題庫(kù)的管理,使得用戶無(wú)須安裝客戶端軟件,只要打開瀏覽器即可登陸系統(tǒng)做相關(guān)操作。2.1前后端分離技術(shù)2.1.1傳統(tǒng)開發(fā)模式傳統(tǒng)的軟件開發(fā)模式的特點(diǎn)是通過(guò)后臺(tái)語(yǔ)言提供的模板來(lái)生成HTML頁(yè)面,然后聽過(guò)服務(wù)器將生成的頁(yè)面返回給瀏覽器,由瀏覽器呈現(xiàn)給客戶。以Java語(yǔ)言為例,在傳統(tǒng)開發(fā)模式中,使用JSP作為模板引擎,JSP通過(guò)在HTML代碼中使用Java代碼或者特定的標(biāo)簽集合來(lái)封裝動(dòng)態(tài)邏輯。當(dāng)客戶端請(qǐng)求JSP頁(yè)面時(shí),服務(wù)器會(huì)將JSP編譯成為servlet后執(zhí)行。這樣做的好處是開發(fā)效率較高,但是在JSP嵌入Java代碼使得前后端邏輯耦合嚴(yán)重,前端人員在維護(hù)頁(yè)面必須要會(huì)JSP,使得學(xué)習(xí)成本增高,并且項(xiàng)目上線后維護(hù)也十分不便。傳統(tǒng)的開發(fā)模式框架圖如圖2.1所示:圖2.1傳統(tǒng)開發(fā)模式框架圖2.1.2前后端分離框架在傳統(tǒng)的web項(xiàng)目開發(fā)過(guò)程中,程序員不僅要負(fù)責(zé)后端還要負(fù)責(zé)前端,這種開發(fā)方式效率極低,并且具有高度耦合度。整個(gè)項(xiàng)目的前后端都是一個(gè)人設(shè)計(jì)實(shí)現(xiàn),要求開發(fā)人員熟悉前后端開發(fā)技術(shù),但是前后端開發(fā)技術(shù)多達(dá)十幾種,對(duì)開發(fā)人員來(lái)說(shuō)是一個(gè)極大的負(fù)擔(dān)。在前后端分離開發(fā)的方式中,前端與后端程序員都只需要各司其職,前端值需要獨(dú)立編寫客戶端代碼,web端采用B/S框架[11],后端也只需要獨(dú)立編寫服務(wù)端代碼,提供API數(shù)據(jù)接口即可,前端通過(guò)Ajax請(qǐng)求來(lái)訪問(wèn)后端的數(shù)據(jù)接口,并且把接口上獲得的數(shù)據(jù)渲染到HTML頁(yè)面上[12]。在這種開發(fā)模式下,前后端開發(fā)者只需要提前約定好接口文檔,然后分別獨(dú)立開發(fā)即可,前端可以造假數(shù)據(jù)進(jìn)行測(cè)試,完全不需要依賴于后端,最終前后端完成集成即可,真正實(shí)現(xiàn)了前后端應(yīng)用的解耦合,極大的提升了開發(fā)效率。前后端分離開發(fā)框架圖如圖2.2所示:圖2.2前后端分離開發(fā)框架圖2.1.3前后端分離的優(yōu)點(diǎn)(1)有利于提升團(tuán)隊(duì)質(zhì)量開發(fā)人員只需要對(duì)前端或者后端之中選擇其一進(jìn)行深入學(xué)習(xí),并且隨著不斷學(xué)習(xí)和項(xiàng)目經(jīng)驗(yàn),開發(fā)人員會(huì)對(duì)自己負(fù)責(zé)的部分逐漸精通,編寫代碼的質(zhì)量也越來(lái)越高[13]。在提高開發(fā)產(chǎn)品質(zhì)量的同時(shí),也提升了開發(fā)人員和團(tuán)隊(duì)的業(yè)務(wù)水平。(2)分工更加明確,提升工作效率前后端分離開發(fā),使得前后端開發(fā)人員各司其職,兩者并行開發(fā),提高開發(fā)效率,加快項(xiàng)目上線速度。在程序出現(xiàn)錯(cuò)誤時(shí),可以快速定位問(wèn)題位置,并由相關(guān)負(fù)責(zé)人進(jìn)行修改,頁(yè)面內(nèi)部的布局和邏輯,頁(yè)面與頁(yè)面之間跳轉(zhuǎn)時(shí)出現(xiàn)失誤,頁(yè)面與瀏覽器不兼容,頁(yè)面的央視不合理等問(wèn)題,全部由前端開發(fā)人員來(lái)負(fù)責(zé)。調(diào)用接口時(shí)數(shù)據(jù)出錯(cuò),數(shù)據(jù)提交失敗,請(qǐng)求超時(shí)等問(wèn)題,全部由后端開發(fā)人員來(lái)解決。雙方互不干擾,職責(zé)清晰。(3)分別部署,提高系統(tǒng)性能前后端分離開發(fā)使得之前的一個(gè)項(xiàng)目變成兩個(gè)單獨(dú)的項(xiàng)目,前端和后端項(xiàng)目分別部署在單獨(dú)的服務(wù)器上,這會(huì)大大提高頁(yè)面的響應(yīng)速度。尤其是在大型項(xiàng)目與流量巨大的網(wǎng)站,這種方式尤為重要。前后端分離開發(fā),其各部分代碼中都只包括自己的部分,降低服務(wù)器運(yùn)行的壓力,從而提升了頁(yè)面相應(yīng)的速度。(4)代碼的可維護(hù)性得以增強(qiáng)前后端代碼基本實(shí)現(xiàn)解耦合,項(xiàng)目進(jìn)行模塊化開發(fā)。前端大量的代碼以組件的方式得以復(fù)用,后端代碼的邏輯更加清晰并也以模塊的方式得以復(fù)用。前后端分離開發(fā)的模式為項(xiàng)目的維護(hù)和升級(jí)提供了較好的環(huán)境,以后相似的項(xiàng)目開發(fā)可以直接利用模塊化代碼,從而降低開發(fā)時(shí)間。2.2springboot框架Springboot是一個(gè)簡(jiǎn)化Spring開發(fā)的框架。它整合了很多優(yōu)秀的框架,去繁從簡(jiǎn),立即就能創(chuàng)建一個(gè)獨(dú)立的,產(chǎn)品級(jí)的應(yīng)用,此項(xiàng)目重使用springboot時(shí)只需要配置相應(yīng)的springboot就可以用所有的spring組件,不用自己手動(dòng)去進(jìn)行xml配置[14]。所以采用SpringBoot框架可以快速容易地創(chuàng)建基于Spring框架的應(yīng)用程序,讓原本復(fù)雜的編碼、配置、部署等過(guò)程都變得簡(jiǎn)單[15]。2.3JPA技術(shù)JPA全稱JavaPersistenceAPI,是由EJB3.0軟件專家組開發(fā),作為JSR-220實(shí)現(xiàn)的一部分[16-17]。是一組用于將數(shù)據(jù)存入數(shù)據(jù)庫(kù)的類和方法的集合,JPA通過(guò)JDK5.0注解或XML描述對(duì)象-關(guān)系表的映射關(guān)系,并將運(yùn)行期的實(shí)體對(duì)象持久化到數(shù)據(jù)庫(kù)中。用戶不需要直接訪問(wèn)數(shù)據(jù)庫(kù),只需要操作對(duì)應(yīng)的類對(duì)象就能完成數(shù)據(jù)的存取,提高數(shù)據(jù)的訪問(wèn)效率。2.4Swagger技術(shù)使用springboot框架,采用微服務(wù)的模式把本系統(tǒng)前后端分離進(jìn)行開發(fā),而后端大量的服務(wù)管理以及API的說(shuō)明就顯得尤為重要。Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化RESTful風(fēng)格的Web服務(wù)??傮w目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度進(jìn)行更新。將文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步。它具有體積小,傳輸速度快,傳輸方式多樣,嚴(yán)謹(jǐn)?shù)慕Y(jié)構(gòu)化,支持跨域驗(yàn)證等優(yōu)點(diǎn)。2.5JWT校驗(yàn)JWT(全稱:JsonWebToken)是一種基于Json格式Webtoken,定義了一個(gè)緊湊的自包含的方式在不同實(shí)體之間安全傳輸信息[18]。JWT認(rèn)證技術(shù),通過(guò)特定的算法生成用戶唯一的令牌token對(duì)象,然后在用戶數(shù)據(jù)請(qǐng)求過(guò)程中攜帶此token即可完成身份有效性校驗(yàn),既保證了前后端分離又保護(hù)用戶訪問(wèn)安全。JWT的構(gòu)成簡(jiǎn)單,字節(jié)占用小,便于傳輸。由于其不在服務(wù)端保存會(huì)話信息,更易于應(yīng)用的擴(kuò)展[19-20]。2.6MySQLMySQL是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一,在WEB應(yīng)用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一[21]。由于MySQL數(shù)據(jù)庫(kù)體積小、速度快、總體擁有成本低、開發(fā)源代碼,其有著廣泛的應(yīng)用,一般中小型網(wǎng)站的開發(fā)都選擇MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。2.7運(yùn)行環(huán)境要求2.7.1硬件環(huán)境服務(wù)端:有足夠大的內(nèi)存可以運(yùn)行數(shù)據(jù)庫(kù),IDEA和Chrome瀏覽器2.7.2軟件環(huán)境(1)瀏覽器端:Chrome瀏覽器。(2)服務(wù)器端:MySQL數(shù)據(jù)庫(kù)、IDEA。

第3章系統(tǒng)需求分析3.1系統(tǒng)總體功能業(yè)務(wù)分析本系統(tǒng)定位學(xué)生在線考試和教師、管理員對(duì)試題、試卷的維護(hù)工作,具體來(lái)說(shuō)系統(tǒng)的總體功能包括以下幾個(gè)方面:

(1)學(xué)生登陸與注冊(cè)學(xué)生可以使用郵箱在線注冊(cè)并登陸該系統(tǒng);(2)在線考試學(xué)生注冊(cè)并登陸后可進(jìn)行在線考試,可以選擇模擬考試與實(shí)時(shí)考試,考試完畢后可查看自己的考試詳情;(3)學(xué)生信息維護(hù)管理員可以注冊(cè)的學(xué)生信息進(jìn)行查看,修改和刪除操作;(4)試題管理管理員可以對(duì)考試試題進(jìn)行查看,修改和刪除管理,可以生成不同的試卷;(5)學(xué)生成績(jī)管理管理員可以查看和刪除學(xué)生的考試結(jié)果信息。3.2系統(tǒng)性能需求分析該系統(tǒng)除了要滿足基本功能需求外,還滿足以下的性能需求:

(1)管理員的前端頁(yè)面能夠兼容主流瀏覽器類型;(2)前端頁(yè)面應(yīng)具有用戶友好型,操作簡(jiǎn)單便捷;(3)系統(tǒng)的設(shè)計(jì)應(yīng)該易于將來(lái)的擴(kuò)展與維護(hù)。

第4章在線考試系統(tǒng)的總體設(shè)計(jì)本章介紹在線考試系統(tǒng)的總體設(shè)計(jì),主要包括系統(tǒng)總體的功能模塊、各模塊實(shí)現(xiàn)的流程圖以及數(shù)據(jù)庫(kù)的邏輯和物理設(shè)計(jì)。4.1設(shè)計(jì)目標(biāo)本系統(tǒng)的設(shè)計(jì)目標(biāo)是建立一個(gè)基于Web的程序設(shè)計(jì)在線考試系統(tǒng),方便教師和學(xué)生的操作,給教學(xué)工作帶來(lái)簡(jiǎn)便化。用戶界面友好,操作簡(jiǎn)單,降低使用該系統(tǒng)前需要的培訓(xùn),實(shí)施和使用中的維護(hù)時(shí)間。通過(guò)合理的網(wǎng)絡(luò)設(shè)計(jì)及軟、硬件的優(yōu)化選型,可以保證本系統(tǒng)的可靠性與容錯(cuò)性,系統(tǒng)以用戶需求為目標(biāo),以方便用戶為原則,處處為使用者考慮。4.2系統(tǒng)功能模塊根據(jù)系統(tǒng)功能分析,將整個(gè)在線考試系統(tǒng)的功能模塊規(guī)劃為以下的功能模塊;如圖4.1在線考試系統(tǒng)功能框架圖所示:

圖4.1在線考試系統(tǒng)功能模塊圖4.3各功能模塊描述系統(tǒng)分為三大模塊:學(xué)生模塊、教師模塊和管理員模塊。4.3.1學(xué)生模塊學(xué)生模塊包括用戶注冊(cè)、登陸、修改密碼、模擬刷題、參加考試、查看考試記錄、查看考試錯(cuò)題等。用戶注冊(cè):學(xué)生用戶在考試系統(tǒng)首頁(yè)點(diǎn)擊注冊(cè)賬戶,使用郵箱、密碼、手機(jī)號(hào)填寫驗(yàn)證碼進(jìn)行注冊(cè)。用戶登陸:學(xué)生用戶可在考試系統(tǒng)首頁(yè)通過(guò)用戶名,密碼進(jìn)行登陸。修改密碼:學(xué)生用戶可以選擇修改密碼,在修改密碼界面,通過(guò)輸入舊密碼驗(yàn)證的方式,輸入新密碼進(jìn)行修改。參加考試:學(xué)生用戶注冊(cè)登陸后,可以在考試列表中參加相應(yīng)的考試,做完題目后,可以提交試卷以結(jié)束考試。考試記錄:學(xué)生用戶注冊(cè)登陸,并且參加過(guò)至少一次考試后,可進(jìn)入我的考試界面,查看考試記錄與錯(cuò)題分析。學(xué)生模塊業(yè)務(wù)流程如圖4.2所示:圖4.2學(xué)生模塊業(yè)務(wù)流程圖4.3.2教師模塊教師模塊的功能在學(xué)生模塊的基礎(chǔ)上,增加了題目管理和創(chuàng)建考試的功能。用戶登陸:教師用戶在登陸界面通過(guò)用戶名、密碼進(jìn)行登陸,登陸之后進(jìn)入首頁(yè)。修改密碼:教師用戶在我的界面里可以修改密碼,輸入舊密碼驗(yàn)證之后,可以輸入新密碼就進(jìn)行修改。題目管理:教師用戶可以在題目管理頁(yè)面進(jìn)行題目的增加、刪除、修改、查詢等操作??荚嚬芾恚航處熡脩艨梢酝ㄟ^(guò)選擇題目來(lái)創(chuàng)建考試,填寫考試的時(shí)間和題目的難易度以及分值。教師模塊具體業(yè)務(wù)流程如圖4.3所示:

圖4.3教師模塊具體業(yè)務(wù)流程圖4.3.3管理員模塊管理員擁有最高權(quán)限,在老師的模塊功能基礎(chǔ)上,增加了管理用戶的模塊功能?;拘畔⒐芾恚汗芾韱T擁有學(xué)生和教師用戶擁有的全部功能。管理用戶功能:管理員擁有最高全新啊,可以對(duì)用戶進(jìn)行添加、刪除、修改、查詢等操作,還可以賦予用戶不同的角色,角色不同,其權(quán)限和對(duì)應(yīng)的功能也不相同。管理員模塊的具體業(yè)務(wù)流程如圖4.4所示:圖4.4管理員模塊具體業(yè)務(wù)流程圖4.4數(shù)據(jù)庫(kù)表設(shè)計(jì)4.4.1數(shù)據(jù)庫(kù)的E-R圖設(shè)計(jì)E-R圖,即實(shí)體—聯(lián)系圖,提供了表示實(shí)體型、屬性和聯(lián)系的方法,是用來(lái)描述現(xiàn)實(shí)世界的模型概念。本在線考試系統(tǒng)的E-R圖如下圖4.5所示:圖4.5在線考試系統(tǒng)E-R圖4.4.2數(shù)據(jù)庫(kù)表設(shè)計(jì)數(shù)據(jù)庫(kù)表設(shè)計(jì)主要是把概念結(jié)構(gòu)設(shè)計(jì)的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。它包括數(shù)據(jù)項(xiàng)、記錄及記錄間的聯(lián)系、安全性和一致性約束等等。導(dǎo)出的邏輯結(jié)構(gòu)是否與概念模式一致,從功能和性能上是否滿足用戶的要求,要進(jìn)行模式評(píng)價(jià)。本系統(tǒng)設(shè)計(jì)的數(shù)據(jù)庫(kù)表主要包括:(1)action表主要用來(lái)存儲(chǔ)前端操作,如增刪改查等的權(quán)限表。如表4.1action表所示表4.1action表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明action_idint(11)YN前端頁(yè)面操作表主鍵idaction_namevarchar(64)NN前端操作的名字action_descriptionvarchat(128)NY頁(yè)面操作的描述defaulttinyint(1)NN當(dāng)前操作是否需要校驗(yàn),true為1,false為0(2)exam表是用來(lái)存儲(chǔ)考試的詳細(xì)信息表。如表4.2exam表所示表4.2exam表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明exam_idvarchar(32)YN考試表的主鍵exam_namevarchar(128)NN考試名稱exam_avatarvarchar(512)NY考試的預(yù)覽圖exam_descriptionvarchar(256)NY考試描述exam_question_idsvarchar(2048)NY當(dāng)前考試下的題目的id用-連在一起的字符串exam_question_ids_radiovarchar(512)NY當(dāng)前考試下的題目單選題的id用-連在一起的字符串exam_question_ids_checkvarchar(512)NY當(dāng)前考試下的題目多選題的id用-連在一起的字符串exam_question_ids_judgevarchar(512)NY當(dāng)前考試下的題目判斷題的id用-連在一起的字符串exam_scoreint(11)NN當(dāng)前考試的總分?jǐn)?shù)exam_score_radioint(11)NN當(dāng)前考試每個(gè)單選題的分?jǐn)?shù)exam_score_checkint(11)NN當(dāng)前考試每個(gè)多選題的分?jǐn)?shù)exam_score_judgeint(11)NN當(dāng)前考試每個(gè)判斷題的分?jǐn)?shù)exam_creator_idvarchar(32)NN考試創(chuàng)建者的用戶idexam_time_limitint(11)NN考試的時(shí)間限制,單位為分鐘exam_start_datadatatimeNN考試有效期開始時(shí)間exam_end_datadatatimeNN考試有效期結(jié)束時(shí)間create_timedatatimeNN創(chuàng)建時(shí)間update_timedatatimeNN更新時(shí)間(3)exam_record表是用來(lái)存儲(chǔ)考試記錄的表。如表4.3exam_record表所示:表4.3exam_record表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明exam_record_idvarchar(32)YN考試記錄表的主鍵exam_joiner_idvarchar(32)NN考試參與者的用戶idexam_join_datadatetimeNN參加考試的時(shí)間exam_time_costint(11)NY完成考試所用的時(shí)間,單位分鐘exam_join_scoreint(11)NN參與考試的實(shí)際得分exam_result_levelint(11)NY考試結(jié)果的等級(jí)(4)exam_record_level表是用來(lái)存儲(chǔ)考試結(jié)果等級(jí)的表。如表4.4exam_record_level表所示:表4.4exam_record_level表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明exam_record_level_idint(11)YN考試結(jié)果等級(jí)表的主鍵exam_record_level_namevarchar(128)NN考試結(jié)果等級(jí)的名稱exam_record_level_descriptionvarchar(512)NY考試結(jié)果等級(jí)的詳細(xì)闡述(5)page是前端頁(yè)面表。如表4.5page表所示:表4.5page表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明page_idint(11)YN前端頁(yè)面表主鍵idpage_namevarchar(64)NN頁(yè)面的名稱,要唯一page_descriptionvarchar(128)NY頁(yè)面的功能性描述action_idsvarchar(128)NY頁(yè)面對(duì)應(yīng)的操作權(quán)限列表,用-連接action的id(6)question表是用來(lái)存儲(chǔ)考試記錄的表。如表4.6question表所示:表4.6question表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明question_idvarchar(64)YN題目的主鍵question_namevarchar(64)NN題目的名字question_scoreint(11)NN題目的分?jǐn)?shù)question_creator_idvarchar(32)NN題目創(chuàng)建者的用戶idquestion_level_idint(11)NN題目難易度級(jí)別question_type_idint(11)NN題目的類型question_category_idint(11)NN題目科目的類型question_descriptionvarchar(256)NN題目額外的描述question_option_idsvarchar(256)NN題目的選項(xiàng),用選項(xiàng)的id用-連在一起表示答案question_answer_option_idsvarchar(256)NN題目的答案,用選項(xiàng)的id用-連在一起表示答案create_timedatetimeNN創(chuàng)建時(shí)間update_timedatetimeNN更新時(shí)間(7)question_category表是用來(lái)存儲(chǔ)題目類目的表。如表4.7question_category表所示:表4.7question_category表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明question_category_idint(11)YN問(wèn)題類別表的主鍵question_category_namevarchar(64)NN問(wèn)題類別名稱question_category_descriptionvarchar(512)NN問(wèn)題類別描述(8)question_level表是用來(lái)存儲(chǔ)問(wèn)題的難易度級(jí)別表。如表4.8question_level表所示:表4.8question_level表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明question_level_idint(11)YN題目難易度的主鍵question_level_namevarchar(64)NN題目難易度名稱question_level_descriptionvarchar(128)NN題目難易度的描述(9)question_option表是用來(lái)存儲(chǔ)題目的選項(xiàng)的表。如表4.9question_option表所示:表4.9question_option表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明question_option_idvarchar(64)YN題目選項(xiàng)表的主鍵question_option_contentvarchar(512)NN選項(xiàng)的內(nèi)容question_option_descriptionvarchar(512)NN選項(xiàng)的額外描述(10)question_type表是用來(lái)存儲(chǔ)題目類型的表。如表4.10question_type表所示:表4.10question_type表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明question_type_idint(11)YN題目類型表的主鍵question_type_namevarchar(64)NN題目類型名稱question_type_descriptionvarchar(128)NN題目類型的描述(11)role是用來(lái)存儲(chǔ)用戶角色的表。如表4.11role表所示:表4.11role表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明role_idint(11)YN角色表主鍵idrole_namevarchar(32)NN角色名稱role_descriptionvarchar(128)NN角色的描述role_detailvarchar(256)NN角色的詳細(xì)功能闡述role_page_idsvarchar(256)NN當(dāng)前角色所能訪問(wèn)的頁(yè)面的id集合(12)user是用來(lái)存儲(chǔ)用戶基本信息的表。如表4.12user表所示:表4.12user表字段名稱數(shù)據(jù)類型主鍵是否為空說(shuō)明user_idvarchar(64)YN主鍵user_usernamevarchar(64)NN用戶名user_nicknamevarchar(64)NN用戶昵稱user_passwordvarchar(64)NN用戶密碼user_role_idint(11)NN當(dāng)前用戶角色的iduser_avatarvarchar(512)NN用戶的頭像地址user_descriptionvarchar(512)NN用戶的自我描述user_emailvarchar(128)NN用戶郵箱user_phonevarchar(128)NN用戶手機(jī)號(hào)create_timedatetimeNN創(chuàng)建時(shí)間update_timedatetimeNN更新時(shí)間

第5章詳細(xì)設(shè)計(jì)本章介紹程序設(shè)計(jì)在線考試系統(tǒng)后端接口設(shè)計(jì)與實(shí)現(xiàn)模塊的詳細(xì)設(shè)計(jì)過(guò)程。5.1學(xué)生模塊詳細(xì)設(shè)計(jì)學(xué)生模塊主要包括注冊(cè)、登陸、修改密碼、模擬刷題、參加考試、查看考試記錄、查看錯(cuò)題等。5.1.1注冊(cè)學(xué)生在用戶的注冊(cè)頁(yè)面通過(guò)郵箱和手機(jī)號(hào)碼進(jìn)行注冊(cè)。傳遞的參數(shù)如表5.1注冊(cè)參數(shù)表所示:表5.1注冊(cè)參數(shù)表接受參數(shù)email郵箱stringpassword密碼stringpassword2確認(rèn)密碼stringmobile手機(jī)string返回參數(shù)id用戶idstringusername用戶名stringnickname用戶昵稱stringrole用戶角色I(xiàn)ntegeravatar用戶的頭像地址stringdescription用戶的自我描述stringemail用戶郵箱stringphone用戶手機(jī)號(hào)string與接收前端返回的注冊(cè)信息有關(guān)的后端代碼建立在UserController類中,部分代碼如下:@RestController@Api(tags="UserAPIs")@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserServiceuserService;@PostMapping("/register")@ApiOperation("注冊(cè)")ResultVO<User>register(@RequestBodyRegisterDTOregisterDTO){ResultVO<User>resultVO;//注冊(cè)信息的完善,還有唯一性校驗(yàn)沒(méi)(用戶名、郵箱和手機(jī)號(hào))已經(jīng)在user表中通過(guò)unique來(lái)設(shè)置了Useruser=userService.register(registerDTO);if(user!=null){//注冊(cè)成功resultVO=newResultVO<>(ResultEnum.REGISTER_SUCCESS.getCode(),ResultEnum.REGISTER_SUCCESS.getMessage(),user);}else{resultVO=newResultVO<>(ResultEnum.REGISTER_FAILED.getCode(),ResultEnum.REGISTER_FAILED.getMessage(),null);}returnresultVO;}其中獲得前端注冊(cè)數(shù)據(jù)的API接口為:/user/register5.1.2登陸學(xué)生用戶可以通過(guò)用戶名,密碼在首頁(yè)登陸,傳遞的參數(shù)如表5.2的登陸參數(shù)表所示:表5.2登陸參數(shù)表接受參數(shù)username用戶名stringpassword密碼string返回參數(shù)id用戶idstringusername用戶名stringnickname用戶昵稱stringrole用戶角色I(xiàn)ntegeravatar用戶的頭像地址stringdescription用戶的自我描述stringemail用戶郵箱stringphone用戶手機(jī)號(hào)stringtokenstring與學(xué)生登陸有關(guān)的后端代碼建立在UserController類中,部分代碼如下:@PostMapping("/login")@ApiOperation("根據(jù)用戶名或郵箱登錄,登錄成功返回token")ResultVO<String>login(@RequestBodyLoginQologinQo){//這里不用手機(jī)號(hào)是因?yàn)槭謾C(jī)號(hào)和用戶名難以進(jìn)行格式區(qū)分,而用戶名和//用戶登錄ResultVO<String>resultVO;Stringtoken=userService.login(loginQo);if(token!=null){//登錄成功resultVO=newResultVO<>(ResultEnum.LOGIN_SUCCESS.getCode(),ResultEnum.LOGIN_SUCCESS.getMessage(),token);}else{//登錄失敗resultVO=newResultVO<>(ResultEnum.LOGIN_FAILED.getCode(),ResultEnum.LOGIN_FAILED.getMessage(),null);}returnresultVO;}與前端進(jìn)行交互的API接口為:/user/login5.1.3參加考試學(xué)生點(diǎn)擊考試參加,與參加考試有關(guān)的考試參數(shù)列表如表5.3參加考試參數(shù)表所示:表5.3參加考試參數(shù)表接受參數(shù)exam_name考試名稱stringexam_description考試描述string返回參數(shù)exam_id考試idstringexam_question_ids考試的題目的id序列stringexam_question_ids_radio考試的單選題目的id序列stringexam_question_ids_check考試的多選題目的id序列stringexam_question_ids_judge考試的判斷題目的id序列stringexam_score考試的總分?jǐn)?shù)Integerexam_score_radio每個(gè)單選題的分?jǐn)?shù)Integerexam_score_check每個(gè)多選題的分?jǐn)?shù)Integerexam_score_judge每個(gè)判斷題的分?jǐn)?shù)Integerexam_time_limit考試時(shí)間限制dateexam_start_date考試開始時(shí)間dateexam_end_date考試結(jié)束時(shí)間date@GetMapping("/card/list")@ApiOperation("獲取考試列表,適配前端卡片列表")ResultVO<List<ExamCardVo>>getExamCardList(){//獲取考試列表卡片ResultVO<List<ExamCardVo>>resultVO;try{List<ExamCardVo>examCardVoList=examService.getExamCardList();resultVO=newResultVO<>(0,"獲取考試列表卡片成功",examCardVoList);}catch(Exceptione){e.printStackTrace();resultVO=newResultVO<>(-1,"獲取考試列表卡片失敗",null);}returnresultVO;}與前端進(jìn)行交互的API接口為:/exam/card/list@GetMapping("/detail/{id}")@ApiOperation("根據(jù)考試的id,獲取考試詳情")ResultVO<ExamDetailVo>getExamDetail(@PathVariableStringid){//根據(jù)id獲取考試詳情ResultVO<ExamDetailVo>resultVO;try{ExamDetailVoexamDetail=examService.getExamDetail(id);resultVO=newResultVO<>(0,"獲取考試詳情成功",examDetail);}catch(Exceptione){resultVO=newResultVO<>(-1,"獲取考試詳情失敗",null);}returnresultVO;}與前端進(jìn)行交互的API接口為:/exam/detail/{id}@PostMapping("/finish/{examId}")@ApiOperation("根據(jù)用戶提交的答案對(duì)指定id的考試判分")ResultVO<ExamRecord>finishExam(@PathVariableStringexamId,@RequestBodyHashMap<String,List<String>>answersMap,HttpServletRequestrequest){ResultVO<ExamRecord>resultVO;try{//攔截器里設(shè)置上的用戶idStringuserId=(String)request.getAttribute("user_id");//下面根據(jù)用戶提交的信息進(jìn)行判分,返回用戶的得分情況ExamRecordexamRecord=examService.judge(userId,examId,answersMap);resultVO=newResultVO<>(0,"考卷提交成功",examRecord);}catch(Exceptione){e.printStackTrace();resultVO=newResultVO<>(-1,"考卷提交失敗",null);}returnresultVO;}與前端進(jìn)行交互的API接口為:/exam/finish/{examId}5.1.4查看考試與錯(cuò)題記錄學(xué)生點(diǎn)擊我的考試,與考試記錄有關(guān)的參數(shù)列表如表5.4查看考試參數(shù)表所示:表5.4查看考試參數(shù)表接受參數(shù)exam_join_date參加考試的時(shí)間dateexam_time_cost完成考試所用時(shí)間dateexam_join_score參與者的實(shí)際得分Integerexam_result_level考試結(jié)果的等級(jí)Integer返回參數(shù)exam_join_date參加考試的時(shí)間dateexam_time_cost完成考試所用時(shí)間dateexam_join_score參與者的實(shí)際得分Integerexam_result_level考試結(jié)果的等級(jí)Integerexam_record_id考試記錄的idstringexam_joiner_id考試參與者的用戶idstring@GetMapping("/record/list")@ApiOperation("獲取當(dāng)前用戶的考試記錄")ResultVO<List<ExamRecordVo>>getExamRecordList(HttpServletRequestrequest){ResultVO<List<ExamRecordVo>>resultVO;try{//攔截器里設(shè)置上的用戶idStringuserId=(String)request.getAttribute("user_id");//下面根據(jù)用戶賬號(hào)拿到他(她所有的考試信息),注意要用VO封裝下List<ExamRecordVo>examRecordVoList=examService.getExamRecordList(userId);resultVO=newResultVO<>(0,"獲取考試記錄成功",examRecordVoList);}catch(Exceptione){e.printStackTrace();resultVO=newResultVO<>(-1,"獲取考試記錄失敗",null);}returnresultVO;}@GetMapping("/record/detail/{recordId}")@ApiOperation("根據(jù)考試記錄id獲取考試記錄詳情")ResultVO<RecordDetailVo>getExamRecordDetail(@PathVariableStringrecordId){ResultVO<RecordDetailVo>resultVO;try{RecordDetailVorecordDetailVo=examService.getRecordDetail(recordId);resultVO=newResultVO<>(0,"獲取考試記錄詳情成功",recordDetailVo);}catch(Exceptione){e.printStackTrace();resultVO=newResultVO<>(-1,"獲取考試記錄詳情失敗",null);}returnresultVO;}與前端進(jìn)行交互的API接口為:/exam/record/list5.2教師模塊詳細(xì)設(shè)計(jì)5.2.1題目管理教師進(jìn)行問(wèn)題管理時(shí),有關(guān)的參數(shù)列表如表5.5題目管理參數(shù)表所示:表5.5題目管理參數(shù)表接受參數(shù)question_name題目名字stringquestion_score題目分?jǐn)?shù)stringquestion_description題目描述string返回參數(shù)question_id題目idstringquestion_name題目名字stringquestion_score題目分?jǐn)?shù)stringquestion_creator_id題目創(chuàng)建者的用戶idstringquestion_level_id題目難易度級(jí)別Integerquestion_type_id題目類型Integerquestion_category_id題目章節(jié)類型Integerquestion_description題目描述stringquestion_option_ids題目的選項(xiàng)id序列stringquestion_answer_option_ids題目的答案id序列stringcreate_time創(chuàng)建時(shí)間dateupdate_time更新時(shí)間date@PostMapping("/question/create")@ApiOperation("創(chuàng)建問(wèn)題")ResultVO<String>questionCreate(@RequestBodyQuestionCreateSimplifyVoquestionCreateSimplifyVo,HttpServletRequestrequest){QuestionCreateVoquestionCreateVo=newQuestionCreateVo();//把能拷貝過(guò)來(lái)的屬性都拷貝過(guò)來(lái)BeanUtils.copyProperties(questionCreateSimplifyVo,questionCreateVo);//設(shè)置創(chuàng)建者信息StringuserId=(String)request.getAttribute("user_id");questionCreateVo.setQuestionCreatorId(userId);System.out.println(questionCreateVo);try{examService.questionCreate(questionCreateVo);returnnewResultVO<>(0,"問(wèn)題創(chuàng)建成功",null);}catch(Exceptione){e.printStackTrace();returnnewResultVO<>(-1,"創(chuàng)建問(wèn)題失敗",null);}}與前端進(jìn)行交互的API接口為:/exam/question/create5.2.2考試管理老師進(jìn)行考試管理有關(guān)的參數(shù)如表5.6考試管理參數(shù)表所示:表5.6考試管理參數(shù)表接受參數(shù)name題目名稱stringscore題目分?jǐn)?shù)stringcreator創(chuàng)建者stringlevel題目難度等級(jí)Integertype題目類型Integercategory問(wèn)題章節(jié)stringdescription問(wèn)題描述string@PostMapping("/create")@ApiOperation("創(chuàng)建考試")ResultVO<Exam>createExam(@RequestBodyExamCreateVoexamCreateVo,HttpServletRequestrequest){//從前端傳參數(shù)過(guò)來(lái),在這里完成考試的入庫(kù)ResultVO<Exam>resultVO;StringuserId=(String)request.getAttribute("user_id");try{Examexam=examService.create(examCreateVo,userId);resultVO=newResultVO<>(0,"創(chuàng)建考試成功",exam);}catch(Exceptione){e.printStackTrace();resultVO=newResultVO<>(-1,"創(chuàng)建考試失敗",null);}returnresultVO;}與前端交互有關(guān)的API接口為:/exam/create5.3管理員模塊詳細(xì)設(shè)計(jì)管理員模塊包括學(xué)生和教師的所有功能和權(quán)限,在此不做贅述。

第6章系統(tǒng)測(cè)試與評(píng)價(jià)分析系統(tǒng)測(cè)試主要是為了盡早發(fā)現(xiàn)系統(tǒng)的一些bug并做修正,使系統(tǒng)正式發(fā)布后能夠在一種較為穩(wěn)定的狀態(tài)下運(yùn)行。6.1學(xué)生模塊單元測(cè)試6.1.1注冊(cè)測(cè)試注冊(cè)測(cè)試如表6.1的注冊(cè)測(cè)試用例表所示:表6.1注冊(cè)測(cè)試用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1密碼與確認(rèn)密碼一致,使用郵箱登陸注冊(cè)成功,跳轉(zhuǎn)至登陸頁(yè)面同預(yù)期的輸出結(jié)果2郵箱不為空,密碼為空提示密碼不能為空同預(yù)期的輸出結(jié)果3郵箱,密碼不為空,手機(jī)號(hào)為空提示手機(jī)號(hào)不能為空同預(yù)期的輸出結(jié)果4郵箱,密碼,手機(jī)號(hào)不為空,驗(yàn)證碼填寫錯(cuò)誤提示驗(yàn)證碼錯(cuò)誤同預(yù)期的輸出結(jié)果5手機(jī)、密碼不為空,郵箱為空提示郵箱不為空同預(yù)期的輸出結(jié)果6密碼與確認(rèn)密碼不一致提示兩次密碼輸入不一致同預(yù)期的輸出結(jié)果7用戶已注冊(cè)時(shí)再注冊(cè)提示用戶已存在同預(yù)期的輸出結(jié)果6.1.2登陸測(cè)試登陸測(cè)試表如表6.2的登陸測(cè)試用例表所示:表6.2登陸測(cè)試用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1賬號(hào)或密碼為空提示賬號(hào)或密碼不能為空同預(yù)期的輸出結(jié)果2賬號(hào)和密碼不一致提示賬號(hào)或密碼不正確同預(yù)期的輸出結(jié)果3賬號(hào)和密碼一致登陸成功,跳轉(zhuǎn)在線考試系統(tǒng)首頁(yè)同預(yù)期的輸出結(jié)果6.1.3模擬刷題測(cè)試模擬刷題測(cè)試表如表6.3的模擬刷題測(cè)試用例表所示:表6.3模擬刷題測(cè)試用例表序號(hào)用戶輸入預(yù)期的結(jié)果實(shí)際的輸出結(jié)果1選擇模擬考試章節(jié),該章節(jié)沒(méi)有題庫(kù)提示未找到相關(guān)題庫(kù)同預(yù)期的輸出結(jié)果2選擇模擬考試章節(jié),該章節(jié)有題庫(kù)進(jìn)入做題頁(yè)面同預(yù)期的輸出結(jié)果3做題時(shí)未選擇答案提示當(dāng)前題目未作答同預(yù)期的輸出結(jié)果4做題時(shí)選擇答案進(jìn)入下一題目同預(yù)期的輸出結(jié)果6.1.4正式考試測(cè)試正式考試測(cè)試如表6.4的正式考試測(cè)試用例表所示:表6.4正式考試測(cè)試用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1做題時(shí)未選擇答案提示當(dāng)前題目未作答同預(yù)期的輸出結(jié)果2做題時(shí)選擇答案進(jìn)入下一題目同預(yù)期的輸出結(jié)果3做題時(shí)超時(shí)提示已到交卷時(shí)間同預(yù)期的輸出結(jié)果6.1.5修改密碼測(cè)試修改密碼測(cè)試如表6.5的修改密碼測(cè)試用例表所示:表6.5修改密碼測(cè)試用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1舊密碼錯(cuò)誤或者為空,新密碼與確認(rèn)密碼一致提示原密碼不正確同預(yù)期的輸出結(jié)果2舊密碼正確,新密碼與確認(rèn)密碼不一致提示兩次密碼輸入不一致同預(yù)期的輸出結(jié)果3舊密碼正確,新密碼或確認(rèn)密碼為空提示新密碼不能為空同預(yù)期的輸出結(jié)果6.1.6考試記錄測(cè)試考試記錄測(cè)試如表6.6的考試記錄測(cè)試用例表所示:表6.6考試記錄用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1選擇考試記錄顯示考試名稱,考試得分同預(yù)期的輸出結(jié)果6.1.7錯(cuò)題記錄測(cè)試錯(cuò)題記錄測(cè)試如表6.7的錯(cuò)題記錄測(cè)試用例表所示:表6.7錯(cuò)題記錄測(cè)試用例表序號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1選擇我的考試,查看題目記錄顯示做錯(cuò)的題目,正確答案,你的答案同預(yù)期的輸出結(jié)果6.2教師模塊單元測(cè)試6.2.1登陸測(cè)試登陸測(cè)試如表6.8的登陸測(cè)試用例表所示:表6.8登陸測(cè)試用例表編號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1賬號(hào)或密碼為空提示賬號(hào)或密碼不能為空同預(yù)期的輸出結(jié)果2賬號(hào)和密碼不一致提示賬號(hào)或密碼不正確同預(yù)期的輸出結(jié)果3賬號(hào)和密碼一致登陸成功,跳轉(zhuǎn)教師頁(yè)面首頁(yè)同預(yù)期的輸出結(jié)果6.2.2題目管理測(cè)試題目管理測(cè)試如表6.9的錯(cuò)題記錄測(cè)試用例表所示:表6.9錯(cuò)題記錄測(cè)試用例表編號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1查詢:輸入題目顯示題目信息同預(yù)期的輸出結(jié)果2新增:填寫新增題目信息提示操作成功同預(yù)期的輸出結(jié)果3更新:填寫修改題目信息提示操作成功同預(yù)期的輸出結(jié)果4刪除:選擇確認(rèn)刪除提示確定刪除?確認(rèn)之后提示操作成功同預(yù)期的輸出結(jié)果6.2.3創(chuàng)建考試測(cè)試創(chuàng)建考試測(cè)試如表6.10的創(chuàng)建考試測(cè)試用例表所示:表6.10創(chuàng)建考試測(cè)試用例表編號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1查詢:輸入考試名稱顯示考試信息同預(yù)期的輸出結(jié)果2新增:填寫新增考試信息提示操作成功同預(yù)期的輸出結(jié)果3修改:填寫修改考試信息提示操作成功同預(yù)期的輸出結(jié)果4刪除:選擇確認(rèn)刪除提示確定刪除?確認(rèn)之后提示操作成功同預(yù)期的輸出結(jié)果6.3管理員模塊單元測(cè)試6.3.1角色管理測(cè)試角色管理測(cè)試如表6.11的角色管理測(cè)試用例表所示。表6.11角色管理測(cè)試用例表編號(hào)用戶輸入預(yù)期的輸出結(jié)果實(shí)際的輸出結(jié)果1查詢:輸入角色名稱顯示角色信息同預(yù)期的輸出結(jié)果2新增:填寫新增角色信息提示操作成功同預(yù)期的輸出結(jié)果3修改:填寫修改角色信息提示操作成功同預(yù)期的輸出結(jié)果4刪除:選擇確認(rè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)論