摘?要
信息化社會內需要與之針對性的信息獲取途徑,但是途徑的擴展基本上為人們所努力的方向,由于站在的角度存在偏差,人們經常能夠獲得不同類型信息,這也是技術最為難以攻克的課題。針對在線考試等問題,對如何通過計算機在線考試進行研究分析,然后開發設計出在線考試系統已解決問題。
在線考試系統主要功能模塊包括首頁、輪播圖、公告欄、資源管理(學習資訊、資訊分類、在線考試)系統用戶(管理員、教師、考生)模塊管理(課程分類、課程信息)維護,采取面對對象的開發模式進行軟件的開發和硬體的架設,能很好的滿足實際使用的需求,完善了對應的軟體架設以及程序編碼的工作,采取MySQL作為后臺數據的主要存儲單元,采用springboot框架、Java技術、Ajax技術進行業務系統的編碼及其開發,實現了本系統的全部功能。本次報告,首先分析了研究的背景、作用、意義,為研究工作的合理性打下了基礎。針對在線考試系統的各項需求以及技術問題進行分析,證明了系統的必要性和技術可行性,然后對設計系統需要使用的技術軟件以及設計思想做了基本的介紹,最后來實現在線考試系統和部署運行使用它。
關鍵詞:考試;springboot框架;MySQL數據庫
Design and Implementation of an Online Examination System
Abstract
In the information society, there is a need for targeted information acquisition channels, but the expansion of channels is basically the direction of people's efforts. Due to the deviation in perspective, people often can obtain different types of information, which is also the most difficult topic for technology to overcome. To address issues such as online exams, conduct research and analysis on how to use computer based online exams, and then develop and design an online exam system to address these issues.
The main functional modules of the online exam system include homepage, broadcast map, bulletin board, resource management (learning information, information classification, online exam) system user (administrator, teacher, candidate) module management (course classification, course information) maintenance, adopting an object-oriented development model for software development and hardware installation, which can well meet the actual needs of use, We have improved the corresponding software installation and program coding work, using MySQL as the main storage unit for backend data, and using the Spring Boot framework, Java technology, and Ajax technology for business system coding and development, achieving all the functions of this system. This report first analyzes the background, role, and significance of the research, laying the foundation for the rationality of the research work. Analyze the various requirements and technical issues of the online examination system, prove the necessity and feasibility of the system, and then provide a basic introduction to the technical software and design ideas required for designing the system. Finally, implement the online examination system and deploy it for operation.
Keywords: exams; Springboot framework; MySQL database
目??錄
第1章 緒論
1.1 研究背景與意義
1.2 開發現狀
1.3 研究方法
第2章 相關技術介紹
2.1 開發技術說明
2.2 Java語言與JDK開發環境
2.3 HTML網頁技術
2.4 MySQL數據庫
第3章 系統分析
3.1 可行性分析
3.2 功能需求分析
3.3 非功能需求分析
3.4 安全性需求分析
3.4.1 系統的安全性
3.4.2 數據的安全性
3.5 業務流程分析
3.6 數據流程分析
第4章 系統設計
4.1 系統架構設計
4.2 系統總體設計
4.3 系統功能設計
4.4 數據庫設計
4.4.1 數據需求分析
4.4.2 數據庫概念設計
4.4.3 數據庫表設計
第5章 系統實現
5.1 數據庫訪問層的實現
5.2 登錄模塊的實現
5.3 用戶資料修改模塊的實現
5.4 學習資訊管理模塊的實現
5.5 在線考試模塊的實現
5.6 試題管理模塊的實現
第6章 系統測試
6.1 測試目的
6.2 功能測試
6.3 性能測試
第7章 總結與展望
參考文獻
致謝
在20世紀末期,國家提出了教育要面向四個現代化,同時也提出了要大力發展教育手段和教育方式的信息化建設。在這樣的背景和需求下,基于當今的互聯網技術和計算機信息技術的在線考試系統就應運而生了。人們急切地需要再在線考試中利用現代網絡技術達到教師工作量減少并且提高學校及其他工作人員工作效率的目的。同時,與傳統的考試形式相比,考試的質量也更能得以保證,從而使得考試變得更為客觀公正。
在線考試系統的實現讓考試不再局限于只能在教室中進行,它利用網絡的優勢,使得考試不再像以前那么復雜,考生也不再需要定時定點而是隨時隨地就能參與考試。在線考試系統具有傳統的考試模式無法媲美的準確、科學、公平、方便等優點,于是對在線考試系統的研究和建設也就在這樣的環境中逐漸發展了起來。
在越來越重視知識的當今社會,各個國家都加大了在新一代培育上的投入,都希望在以后的社會發展中走在互聯網的前列,從而在信息的飛速發展中占據一個有力的地位,正是這個原因,各地政府依托于互聯網來實行教育教學,并把此作為其民族發展的動力之源。
在外國,澳大利亞在早期就開始投資建設“澳大利亞教育網”,這個網絡不但包含了澳大利亞全部的高校,還要聯通本國境內的每一所中小學。另外美國政府提出要到二十一世紀初,讓本國家所有學校和圖書館都搭載上互聯網的快車,讓國內不論是哪個階段的考生都可以享受到“21世紀教師”的網絡服務,因此提出了“教育技術規劃(Educational Technology Initiative)”。到了1995年末,國外一些教育機構開始開發自己的網上教育平臺,最早的有美國的NTU、英國的OPEN COLLEGE等這些都是那個時候實施互聯網教育的典范。隨著教育搭載上互聯網的高速公路,在線考試作為遠程教育不可分割的一項,隨著互聯網的大潮也如雨后春筍般迅速發展起來,人們的選課和考試都在互聯網上進行,特別是互聯網業務的普及、低成本的在線考試從技術和經濟條件上已經日趨成熟。
在國內,從大多數來看,很大一部分的教育教學還普遍停留在傳統的考試方式上,但是傳統的考試每次都需要人為的出卷、組織考試、批改試卷并且做出許多試卷分析和成績評估,作為老師,一次考試的實施給他們帶來了許多的麻煩,并且隨著教育現代化,考試類型的增加和考試要求的更加嚴格,教師的工作也會變得越來越繁重。而現在人們普遍認為的網絡教育也是停留在網上報名和成績查詢,沒有形成相應的規模,而國外網上提交作業和考試已經變得非常普及,所以傳統考試方式終究要被替代,網上考試方式正在以燎原之勢飛速發展。
首先,通過引擎搜索或者查閱相關文獻資料,了解了本系統開發的背景以及設計系統的意義所在,收集用戶需求信息。其次,在開發工具上,最終確定選用Java平臺來設計開發本系統,MySQL作為設計數據庫的工具。即利用Java語言實現用戶界面,并同數據庫連接起來實現完整的通信功能。之后,設計出系統大致的功能模塊。主要從方便系統用戶和系統管理員的角度進行分析,明確該系統應該具有的功能。最終是測試系統,通過用例測試發現存在的問題并找到解決的方案。利用現有的開發平臺,結合自己所學的知識,在老師的指導幫助下來完成該設計,確保系統的可用性、實用性。
本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的springboot框架進行開發。
前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現響應式,可適應PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用springboot作為開發框架,同時集成MyBatis、Redis等相關技術。
Java是美國SUN公司所推出的一款程序設計語言,其能夠在多個平臺內應用,具有良好兼容性,進而其憑借自身優勢在數據中心、個人PC與科技超級計算機等平臺內廣泛應用,具有目前最為龐大的開發者專業社群。
JDK為美國sun公司為java開發員所推出的一款全新產品,要是沒有JDK的情況下,所安裝的java程序也就無法運行。
HTML是一種制作網頁的常用語言,它一般是用于制作靜態頁面。它的命令是可以體現文字信息、鏈接信息、圖形信息和表格信息等等。現在它被大眾普遍接受廣泛應用在網絡上。
MySQL 經過多次的更新,功能層面已經非常的豐富和完善了,從MySQL4版本到5版本進行了比較大的更新,在商業的實際使用中取得了很好的實際應用效果。最新版本的MySQL支持對信息的壓縮,同時還能進行加密能更好的滿足對信息安全性的需求。同時經過系統的多次更新,數據庫自身的鏡像功能也得到了很大的增強,運行的流暢度和易用性方面有了不小的進步,驅動的使用和創建也更加的高效快捷。最大的變動還是進行了空間信息的顯示優化,能更加方便的在應用地圖上進行坐標的標注和運算。強大的備份功能也保證了用戶使用的過程會更加安心,同時支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進行了不小的更新,增加了兩個非常使用的顯示區,一個是信息區,對表格和文字進行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區進行信息的顯示,同時還能進行多個信息的比對,為用戶的實際使用帶來了很大的便捷。
針對本文中設計的在線考試系統在實際的實現過程中,最終選擇MySQL數據庫的主要原因在于在企業的應用系統應用及開發的過程中會存在大量的數據庫比較頻繁的操作,而且數據的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數比較高的MySQL來對在線考試系統后臺數據進行存儲操作。
數據庫管理系統的總體結構圖如下圖所示。
圖2-1 數據庫組成結構
技術性方面,采用當前主流的springboot框架進行系統主體框架的搭建,前臺使用jQuery,Ajax,實現前臺頁面的設計與美觀調整,以上技術,均由本人經過系統學習,并且都是在課程設計中實踐過的,可以使得開發更加便捷和系統。從技術角度看,這個系統是完全可以實現的。
實用性方面,本次設計的主要任務是在在線考試系統內在線考試、查詢考試成績等,符合當前潮流的發展。從用戶角度出發,同時也考慮系統運營成本和人力資源,采用網絡上的便捷方式,實現線上業務,使得業務流程更系統,也更方便用戶的體驗,比較實用。
經濟性方面,由于本課題中設計的在線考試系統的主要目的是為了能夠更加方便及快捷的進行信息的查詢管理及檢索服務,也就是能夠可以直接投入使用的信息化軟件。系統的主要成本主要是集中在對使用數據后期繼續維護及其管理更新這個操作上。但是一旦系統投入到實際的運行及使用之后就能夠很好的提高信息查詢檢索的效率,同時也需要有效的保證查詢者的信息方面的安全性,同時這個在線考試系統所帶來的實際應用方面的價值是遠遠的超過了實際系統進行開發與維護方面的成本,因此,從經濟上來說開發這個軟件是可行的。
本系統使用的角色大概分為考生和管理員。
1.考生需求
考生登陸系統主要進行兩類操作:在線考試,成績查詢與個人信息管理.
(1)在線考試
系統能自動給考生選題,考題必須是隨機分配的,以保證考試的公平性。考生在考試過程中頁面將提供考試時間倒計時功能,使考生隨時了解考試剩余時間。在考試時間到時,系統將自動地將考生考試試卷提交,將提醒考生離開考場。當考試試卷提交時,系統自動為選擇題、判斷題、填空等客觀題評分。
(2)成績查詢與個人信息維護
考生可以登陸系統查詢各科成績,其中成績信息包括每種題型的得分,如單選題,判斷題等。別外考生還可以查詢自己的做錯的題目,了解自己的考試情況。
除此之外,考生登陸系統可以查看和修改個人的基本信息,如修改密碼等。
2.管理員需求
系統管理員登陸系統后主要進行四類操作:
(1)考題維護,考試信息維護,用戶維護和個人信息維護管理員可以往題中添加考題,修改錯誤試題和刪除無用試題,考題維護包括單選題管理(單選題添加、刪除、修改)、判斷題管理(判斷題添加、刪除、修改)、填空題管理(填空題添加、刪除、修改)。
(2)考試信息的維護
考試信息的維護主要是對于考試設置信息進行維護,這些信息主要是考試總時間,試題數量,各試題分值的分布等。
(3)用戶維護
系統管理員可以對用戶信息(包括考生信息)進行增,刪,改查操作。
(4)個人信息維護
管理員也可以對自己的基本信息的維護。
(5)課程信息維護
管理員管理課程信息,進行增,刪,改查操作。
(6)試卷維護
隨機生成試卷,并能按需求修改試卷中的題目數量和題目。
(7)考試成績維護
考試結束后,考生提交試卷后,客觀題由系統自動打分,然后總成績由客觀題加多選題得分。
考生用例圖如下所示。
圖3-1 考生用例圖
管理員用例圖如下所示。
圖3-2 管理員用例圖
教師用例圖如下所示。
圖3-3教師用例圖
首先主要考慮的是系統功能軟件,在具體設計的環節上,是不是能夠較好的滿足各類用戶的基本功能需求,如果不能較好的滿足用戶需求,那么這個系統的存在是沒有價值的。軟件系統的非功能性求分析,從7個方面展開,一個是性能分析,針對系統;一個是安全分析,針對系統,一個是完整度分析,針對系統,一個是可維護分析,針對系統,一個是可擴展性分析,針對系統,一個是適應業務的性能分析。面對在線考試系統存在的性能、安全、擴展、完整度等7個方面性能綜合比對分析后發現,需要相應的非功能性需求分析。
安全性對每一個系統來說都是非常重要的。安全性很好的系統可以保護企業的信息和用戶的信息不被竊取。提高系統的安全性不僅是對用戶的負責,更是對企業的負責。尤其針對于在線考試系統來說,必須要有很好的安全性來保障整個系統。
系統具有對使用者有權限控制,針對角色的不通限制使用者的權限,以此來確保系統的安全性。
數據庫中的數據是從外界輸入的,當數據的輸入時,由于種種原因,輸入的數據會無效,或者是臟數據。因此,怎樣保證輸入的數據符合規定,成為了數據庫系統,尤其是多用戶的關系數據庫系統首要關注的問題。
因此,在寫入數據庫時,要保證數據完整性、正確性和一致性。
首先系統將考試信息和考生個人信息提供給考生,并要求考生核對個人信息。在考試開始時系統按照一定的算法為登陸的考生隨機選取一定的試題生成考試試卷,考生在系統生成好試卷后進行答題操作。答題必須在規定的時間內進行,此時間是由管理員事先設置好的,如在規定的時間內沒有完成答題,系統將強制提交考生考試試卷。考生在試卷提交后系統自動地改卷、得到最后成績,考生可以查看個人的成績。
本系統的業務流程圖如下所示。
圖3-2 業務流程圖
對系統的數據流進行分析,系統的使用者分為二類,一般用戶,管理員。系統主要對界面信息傳送,登錄信息的驗證,注冊信息的接收,用戶各種操作的響應做處理。
系統頂層數據流圖如下圖所示。
圖3-2 頂層數據流圖
要判斷用戶是是什么身份,是根據登錄的數據來判斷后,跳轉到對應的功能界面。在系統的內部用戶就可以對數據進行操作,數據庫中心就可以接收到系統傳輸的有效數據流來對數據sql語句進行對應操作。
系統底層數據流圖如下圖所示。
?圖3-3 底層數據流圖
系統可以分為前臺和后臺兩部分,每一種操作后系統都返回操作結果。前臺和后臺的數據連接主要通過數據庫,既分別對數據庫做不同的操作。
本在線考試系統的架構設計主要分為可以3層,主要有Web層,業務層,Model層。其中web層還包括View層和Controller層,Model層包括元數據擴展層和數據訪問層。
系統架構如下圖所示。
圖4-1 系統架構
在線考試系統總體分為前臺用戶模塊和后臺管理員模塊。
兩個模塊表現上是分別獨立存在,但是訪問的數據庫是一樣的。每一個模塊的功能都是根據先前完成的需求分析,并查閱相關資料后整理制作的。
綜上所述,系統功能結構圖如下圖所示。
圖4-2 系統功能結構圖
課程數據模塊:可分為課程數據瀏覽、課程數據檢索、課程數據維護三個模塊,管理員對課程數據有維護的權限,發布新的課程數據、更新已有的課程數據等。
試題管理模塊:試題管理分為試題添加、修改和試題組卷。試題信息由管理員進行修改、添加、刪除操作;試題組卷由教師用戶來執行。
試卷管理模塊:試卷管理分為試卷添加、修改和在線考試。試卷信息由管理員進行修改、添加、刪除操作;在線考試由學生來執行。
從前面可以分析到數據庫中最重要的是考生信息,教師信息,管理員信息,同時存在試題信息和試卷信息。分析可以得到如下數據描述:
考生用戶:用于記錄考生的各種信息,包括學號、密碼、姓名、性別、手機、班級、系部、身份證、照片等數據項。
管理員:記錄管理員的登錄信息。包括用戶名,密碼,權限等數據項。
教師用戶:存放給教師用戶的賬號內容,包括教師編號、密碼、姓名、性別、職稱、年齡、系部、手機、身份證、照片等數據項。
選擇題:存儲各種選擇題信息。包括編號、課程名稱、選項A、選項B、選項C、選項D、答案等數據項。
試卷:存儲用戶的試卷信息。包括試卷的試卷編號、課程名稱、單選題、判斷題、填空題、開始日期、結束日期等數據項。
考試成績。存儲考生用戶的考試成績。包括考試成績的用戶名、課程名稱、試卷編號、成績、測試時間等數據項。
根據前面的數據流程圖,結合系統的功能模塊設計,設計出符合系統的各信息實體。
系統ER圖如下圖所示。
圖4-3 系統ER圖
在線考試系統所擁有的數據表有以下:用戶信息表,選擇題信息表,填空題表,判斷題表,試卷表,成績表等。
由于數據表較多,只展示系統主要數據表,如下表所示。
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | token_id | int | 10 | 0 | N | Y | 臨時訪問牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 臨時訪問牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大壽命:默認2小時 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用戶編號: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 標題:[0,125]用于文章和html的title標簽中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分類:[0,1000]用來搜索指定類型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 點擊數:[0,1000000000]訪問這篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
8 | source | varchar | 255 | 0 | Y | N | 來源:[0,255]文章的出處 | |
9 | url | varchar | 255 | 0 | Y | N | 來源地址:[0,255]用于跳轉到發布該文章的網站 | |
10 | tag | varchar | 255 | 0 | Y | N | 標簽:[0,255]用于標注文章所屬相關內容,多個標簽用空格隔開 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主體內容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面圖 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分類ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000]決定分類顯示的先后順序 |
3 | name | varchar | 16 | 0 | N | N | 分類名稱:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上級分類ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該分類的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分類圖標: | |
7 | url | varchar | 255 | 0 | Y | N | 外鏈地址:[0,255]如果該分類是跳轉到其他網站的情況下,就在該URL上設置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | auth_id | int | 10 | 0 | N | Y | 授權ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用戶組: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模塊名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 頁面標題: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路徑: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳轉方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可刪除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查詢字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表導航名稱: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表導航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
6 | title | varchar | 255 | 0 | Y | N | 標題: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | comment_id | int | 10 | 0 | N | Y | 評論ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 評論人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回復評論ID:空為0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 內容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵稱: | |
6 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
9 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | course_classification_id | int | 10 | 0 | N | Y | 課程分類ID | |
2 | course_type | varchar | 64 | 0 | Y | N | 課程類型 | |
3 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | course_information_id | int | 10 | 0 | N | Y | 課程信息ID | |
2 | course_name | varchar | 64 | 0 | Y | N | 課程名稱 | |
3 | course_type | varchar | 64 | 0 | Y | N | 課程類型 | |
4 | release_teacher | int | 10 | 0 | Y | N | 0 | 發布教師 |
5 | course_cover | varchar | 255 | 0 | Y | N | 課程封面 | |
6 | course_details | longtext | 2147483647 | 0 | Y | N | 課程詳情 | |
7 | hits | int | 10 | 0 | N | N | 0 | 點擊數 |
8 | praise_len | int | 10 | 0 | N | N | 0 | 點贊數 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | exam_id | mediumint | 8 | 0 | N | Y | 考試id | |
2 | name | varchar | 32 | 0 | N | N | 考試名稱:[2,32] | |
3 | duration | int | 10 | 0 | Y | N | 答題時長 | |
4 | score | double | 9 | 2 | Y | N | 總分 | |
5 | status | varchar | 10 | 0 | Y | N | 狀態:啟用、禁用 | |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | examinee_id | int | 10 | 0 | N | Y | 考生ID | |
2 | student_number | varchar | 64 | 0 | N | N | 學號 | |
3 | full_name | varchar | 64 | 0 | Y | N | 姓名 | |
4 | gender | varchar | 64 | 0 | Y | N | 性別 | |
5 | name_of_department | varchar | 64 | 0 | Y | N | 院系名稱 | |
6 | class_name | varchar | 64 | 0 | Y | N | 班級名稱 | |
7 | examine_state | varchar | 16 | 0 | N | N | 已通過 | 審核狀態 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
9 | user_id | int | 10 | 0 | N | N | 0 | 用戶ID |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | exam_question_id | mediumint | 8 | 0 | N | Y | ||
2 | type | varchar | 20 | 0 | Y | N | 類型 | |
3 | title | varchar | 255 | 0 | Y | N | 題目 | |
4 | question_item | varchar | 500 | 0 | Y | N | 選項 | |
5 | answer | varchar | 500 | 0 | Y | N | 參考答案 | |
6 | score | double | 9 | 2 | Y | N | 總分 | |
7 | question_order | int | 10 | 0 | Y | N | 排序 | |
8 | exam_id | mediumint | 7 | 0 | Y | N | 所屬試卷 | |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | hits_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 標題: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | praise_id | int | 10 | 0 | N | Y | 點贊ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 點贊人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 點贊狀態:1為點贊,0已取消 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | slides_id | int | 10 | 0 | N | Y | 輪播圖ID: | |
2 | title | varchar | 64 | 0 | Y | N | 標題: | |
3 | content | varchar | 255 | 0 | Y | N | 內容: | |
4 | url | varchar | 255 | 0 | Y | N | 鏈接: | |
5 | img | varchar | 255 | 0 | Y | N | 輪播圖: | |
6 | hits | int | 10 | 0 | N | N | 0 | 點擊量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | teacher_id | int | 10 | 0 | N | Y | 教師ID | |
2 | job_no | varchar | 64 | 0 | Y | N | 工號 | |
3 | full_name | varchar | 64 | 0 | Y | N | 姓名 | |
4 | gender | varchar | 64 | 0 | Y | N | 性別 | |
5 | examine_state | varchar | 16 | 0 | N | N | 已通過 | 審核狀態 |
6 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用戶ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | upload_id | int | 10 | 0 | N | Y | 上傳ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 訪問路徑 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路徑 | |
5 | display | varchar | 255 | 0 | Y | N | 顯示順序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父級ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夾 | |
8 | type | varchar | 32 | 0 | Y | N | 文件類型 |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用戶組:[0,32767]決定用戶身份和權限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登錄時間: |
5 | phone | varchar | 11 | 0 | Y | N | 手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手機認證:[0,1](0未認證|1審核中|2已認證) |
7 | username | varchar | 16 | 0 | N | N | 用戶名:[0,16]用戶登錄時所用的賬戶名稱 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵稱:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成 | |
10 | | varchar | 64 | 0 | Y | N | 郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 郵箱認證:[0,1](0未認證|1審核中|2已認證) |
12 | avatar | varchar | 255 | 0 | Y | N | 頭像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | user_answer_id | mediumint | 8 | 0 | N | Y | ||
2 | user_id | mediumint | 7 | 0 | N | N | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據 | |
3 | exam_id | mediumint | 7 | 0 | N | N | 0 | 考試id |
4 | score | double | 9 | 2 | Y | N | 0.00 | 分數 |
5 | answers | text | 65535 | 0 | Y | N | 答案 | |
6 | score_detail | text | 65535 | 0 | Y | N | 評分詳情 | |
7 | objective_score | double | 9 | 2 | Y | N | 0.00 | 客觀題得分 |
8 | subjective_score | double | 9 | 2 | Y | N | 0.00 | 主觀題得分 |
9 | score_state | tinyint | 4 | 0 | Y | N | 0 | 評分狀態 |
10 | nickname | varchar | 255 | 0 | Y | N | 提交人 | |
11 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
編號 | 名稱 | 數據類型 | 長度 | 小數位 | 允許空值 | 主鍵 | 默認值 | 說明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用戶組ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 顯示順序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名稱:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述該用戶組的特點或權限范圍 | |
5 | source_table | varchar | 255 | 0 | Y | N | 來源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 來源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 來源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注冊位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創建時間: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
該系統是通過jdbc和MySQL達成連接的,新建一個jdbc.properties文件來填寫與數據庫連接所需要的驅動和參數。
@SpringBootApplication
@EnableJpaRepositories
public class Application {
????public static void main(String[] args) {
????????SpringApplication.run(Application.class,args);
????}
}
第一個參數代表MySQL數據庫的驅動,第二個參數代表要連接的數據庫,第三個和第四個參數代表數據庫連接名和密碼。
后臺與數據庫訪問主要是通過HQL語句來進行查詢的,查詢語句中的表名是表格的實體類名,在這種查詢語句中*是不允許使用的,除非適合聚合函數一起使用才可以。
主要由兩部分組成,登錄前的登錄界面以及登錄后的用戶功能界面。登錄界面,要求用戶輸入用戶名和密碼,當用戶名和密碼其中一個輸入為空時,給出提示“用戶名,密碼不能為空”。獲取用戶名和密碼后到數據庫中查找,如果用戶名存在,以及對應的密碼正確,則登錄成功,否則登錄失敗。登錄失敗后給出提示,并把焦點停在文本框中。登錄成功后將該次會話的全局變量username設置為用戶名。登錄成功后進入會員的功能模塊,主要有會員基本信息修改,已經發布試題信息管理,發布信息,和退出功能。退出功能是清除全局變量username的值,并跳回到首頁。
登錄流程圖如下圖所示。
圖5-4登錄流程圖
用戶登錄界面如下圖所示。
圖5-5用戶登錄界面
用戶登錄的關鍵代碼如下。
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.select(map, new HashMap<>()).getResultList();
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
????????????String res = String.valueOf(service.runCountSql(sql).getSingleResult());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態,不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數據庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實體類中的參數相匹配,在用戶點擊修改頁面的時候,如果改后用戶名與數據庫里面重復了,頁面會提示該用戶名已經存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數據。
如果學習資訊的信息需要修改,管理員可以通過查詢學習資訊的基本信息來查詢學習資訊,查詢學習資訊是通過ajax技術來進行查詢的,需要傳遞學習資訊的標題、編號等參數然后在返回到該頁面中,可以選中要修改或刪除的那條信息,如果選中了超過一條數據,頁面會挑一個窗口提醒只能選擇一條數,如果沒有選中數據會挑一個窗口題型必須選擇一條數據。當選擇確認修改的時候,后臺會根據傳過來的id到數據庫查詢,并將結果返回到修改頁面中,可以在修改頁面中修改剛剛選中的信息當點擊確認的時候from表單會將修改的數據提交到后臺并保存到數據庫中,就是說如果提交的數據數據庫中存在就修改,否則就保存。
學習資訊展示界面如下圖所示。
圖5-6學習資訊展示界面
學習資訊管理界面如下圖所示。
圖5-7學習資訊管理界面
學習資訊發布的關鍵代碼如下。
??@RequestMapping(value = {"/sum_group", "/sum"})
????public Map<String, Object> sum(HttpServletRequest request) {
????????Query count = service.sum(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
考生開始考試后,系統要顯示考生信息、試卷、交卷。這個界面的功能使用的是Ajax框架,通過客戶端的Javascript和服務器端腳本實現。選擇項和填空項都設置了單擊事件。考生答過該題后,系統就把該題答案傳送到服務器并保存起來。當考生重新登錄時,試題仍然存在。另外,也防止考生集中交卷的時候因系統反應不及而導致答案丟失。
提交答案由客戶端函數SelectAnswer()來實現,服務器端函數send_user_answer()把答案保存到數據庫中。函數SelectAnswer()實時地把答案提交給服務器,也使得二次登錄成為可能。
結束考試有兩個部分的功能,當考試答完試卷但是交卷時間未到時,可以提前交卷,但是當考試結束時間已到,考生仍未交卷,系統則會強制收卷。函數SetTitle()在考試結束時,自動轉向處理考試結束的文件endexam.jsp,完成自動收卷。
在線考試流程圖如下圖所示。
圖5-12在線考試流程圖
在線考試界面如下圖所示。
圖5-13在線考試界面
在線考試關鍵代碼如下。
??@RequestMapping(value = {"/count_group", "/count"})
????public Map<String, Object> count(HttpServletRequest request) {
????????Query count = service.count(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
題目管理包括單選題管理、判斷題管理、填空題管理、多選題管理。教師可以點擊“添加題目”超級鏈接,既可跳轉到timuxinxi_add.jsp頁添加題目。題目添加成功后,教師可以登錄到個人中心查詢個人的題目的信息。教師在timuxinxi_list.jsp進行題目管理,timuxinxi_ list.jsp通過查詢數據庫的題目表列出所有題目管理信息,每條題目對應一個刪除按鈕和修改按鈕,當教師點擊刪除按鈕,直接在數據庫刪除題目信息,并重定向當前頁面,當教師選擇點擊修改,則進入timuxinxi_update.jsp頁面,進行題目信息的修改。
試題錄入界面采用ajax實現,客戶端的下拉框的響應事件的響應函數為select_ttype(),通過這個函數顯示指定題型的錄入界面。“提交”按鈕的響應函數為SubmitTimu()。服務器函數InsertTiMu()返回數據,由函數dis_result()處理。
此頁面的關鍵是編寫試題信息,單擊提交按鈕以完成信息的添加。如果未寫入完整的試題信息,例如,如果未寫入試題編號,系統將給出相應的錯誤提示,并且無法成功輸入。數據以概念的形式以onsubmit =“return checkForm()”的形式寫入以進行檢查,checkForm()函數是一種用于寫入數據的不同類型的校對方法,是不是為空也是經過form表單中的οnsubmit=”return checkForm()來檢查。
管理員點擊左側菜單“試題信息管理”,頁面跳轉到試題信息管理外觀,調用后臺試題查詢所有試題信息。并將信息密封到數據集合List,綁定到請求對象,然后頁面跳轉到相應的jsp,顯示出試題信息,單擊刪除按鈕完成試題信息的刪除。
試題管理流程圖如下圖所示。
圖5-17試題管理流程圖
試題錄入界面如下圖所示。
圖5-18試題錄入界面
試題錄入的關鍵代碼如下。
??@RequestMapping(value = {"/sum_group", "/sum"})
????public Map<String, Object> sum(HttpServletRequest request) {
????????Query count = service.sum(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
對任何系統而言,測試都是必不可少的環節,測試可以發現系統存在的很多問題,所有的軟件上線之前,都應該進行充足的測試之后才能保證上線后不會Bug頻發,或者是功能不滿足需求等問題的發生。下面分別從單元測試,功能測試和用例測試來對系統進行測試以保證系統的穩定性和可靠性。
下表是系統登錄功能測試用例,檢測了用戶名和密碼的不同的輸入情況,觀察系統的響應情況。得出該功能達到了設計目標。
表6-1 系統登錄功能測試用例
功能描述 | 用于系統登錄 | |
測試目的 | 檢測登錄時的合法性檢查 | |
測試數據以及操作 | 預期結果 | 實際結果 |
輸入的用戶名和密碼帶有非法字符 | 提示用戶名或者密碼錯誤 | 與預期結果一致 |
輸入的用戶名或者密碼為空 | 提示用戶名或者密碼錯誤 | 與預期結果一致 |
輸入的用戶名和密碼不存在 | 提示用戶名或者密碼錯誤 | 與預期結果一致 |
輸入正確的用戶名和密碼 | 登錄成功 | 與預期結果一致 |
下表是試題管理功能的測試用例,檢測了試題管理中對試題信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-2 試題管理的測試用例
功能描述 | 用于試題管理 | |
測試目的 | 檢測試題管理時的各種操作的運行情況 | |
測試數據以及操作 | 預期結果 | 實際結果 |
點擊添加試題,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
點擊添加試題,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊修改試題,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊修改試題,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊刪除試題,選擇試題刪除 | 提示刪除成功 | 與預期結果一致 |
點擊搜索試題,輸入存在的試題名 | 查找出試題 | 與預期結果一致 |
點擊搜索試題,輸入不存在的試題名 | 不顯示試題 | 與預期結果一致 |
下表是試卷管理功能的測試用例,檢測了試卷管理中對試卷信息的增加,刪除,修改,查詢操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-3 試卷管理的測試用例
功能描述 | 用于試卷管理 | |
測試目的 | 檢測試卷管理時的各種操作的運行情況 | |
測試數據以及操作 | 預期結果 | 實際結果 |
點擊添加試卷,必填項合法輸入,點擊保存 | 提示添加成功 | 與預期結果一致 |
點擊添加試卷,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊修改試卷,必填項修改為空,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊修改試卷,必填項輸入不合法,點擊保存 | 提示必填項不能為空 | 與預期結果一致 |
點擊刪除試卷,選擇試卷刪除 | 提示刪除成功 | 與預期結果一致 |
點擊搜索試卷,輸入存在的試卷名 | 查找出試卷 | 與預期結果一致 |
點擊搜索試卷,輸入不存在的試卷名 | 不顯示試卷 | 與預期結果一致 |
下表是考試管理功能的測試用例,檢測了考試管理中考試單的操作是否成功運行。觀察系統的響應情況,得出該功能也達到了設計目標,系統運行正確。
前置條件;用戶登錄系統。
表6-4 考試管理的測試用例
功能描述 | 用于考試管理 | |
測試目的 | 檢測考試管理時各種操作的情況 | |
測試數據以及操作 | 預期結果 | 實際結果 |
未答題,點擊試卷提交 | 考試成績為0分 | 與預期結果一致 |
在考試時間到,用戶未答完題 | 試卷自動提交 | 與預期結果一致 |
答完題,并提交考卷 | 自動計算出考試成績 | 與預期結果一致 |
使用阿里云PTS(Performance Testing Service)性能測試服務對線上系統進行壓力測試。線上服務器環境為:1核心CPU,1G內存,1Mbps公網帶寬,Centos7.0操作系統。
壓測過程中使用了2臺并發機器,每臺機器20個用戶并發,對系統主頁,登錄,數據查詢和數據維護等模塊進行并發訪問,測試結果是有40個用戶并發時,數據管理相關頁面的響應時間甚至達到了7s,通過查看服務器出網流量發現已經達到1381kb/s,可以看出服務器的帶寬已經達到峰值,如果系統使用5Mbps的帶寬,系統的響應時間和TPS將會大大增加。在整個測試的過程中,CPU的使用率占用僅8%,也提現出帶寬瓶頸對系統的影響非常嚴重。
隨著計算機互聯網技術的迅猛發展,各行各業都已經實現采用計算機相關技術對日益放大的數據進行管理。該課題是在線考試系統為核心展開的,主要是為了實現考試信息化管理和用戶在線考試的需求。
在線考試系統的開發是以Java編程語言作為基礎,在MyEclipse平臺上完成編碼工作,系統整體為B/S架構,數據庫系統使用MySQL。文中詳細分析了在線考試系統的研究背景、研究目的和意義、開發工具和相關技術以及系統需求、系統詳細設計和系統測試等等一系列內容。系統實現了在線考試系統所需的一些基本功能,并通過測試對這些實現的功能進行了完善,進而提高了系統整體的實用性。整個系統的開發過程中大量使用了Java相關的知識以及前端開發使用的Html和Javascript等,同時涉及到了很多開源框架和組件,例如后臺系統中運用的MVC架構、Freemarker模板引擎等,前端運用的UI框架等。
系統投入運行時,各功能均運行正常。系統的每個界面的操作符合常規邏輯,對使用者來說操作簡單,界面友好。整個系統的各個功能設計合理,體現了人性化。
但是由于自己在系統開發過程中對一些用到的相關知識和技術掌握不夠牢固,再加上自身開發經驗欠缺,因此系統在有些方面的功能還不夠完善,考慮的不夠全面,因此整個系統還有待日后逐步完善。
參考文獻
[1]劉新宇,易蕾香,肖斌斌,趙軍霞.期末在線測評系統的設計與實現[J].現代信息科技,2020,4(02):1-3.
[2]張麗.學生德育分數管理系統的創意[J].電腦編程技巧與維護,2020(01):92-94.
[3]陳旭創,潘遠文,王肖文,程捷.基于MVC模式的Web醫療設備租賃系統應用[J].醫療裝備,2020,33(01):24-27.
[4]謝松清,張桂花.基于MVC的校園閑置物品置換系統設計[J].信息與電腦(理論版),2020,32(01):98-99.
[5]耿學.關于JavaWeb中中文亂碼問題的探討[J].現代信息科技,2020,4(01):74-75+78.
[6]周靈輝,范國婷,任樂琦,韋斯羽,王妮,侯大有.企業知識庫管理系統的設計與實現[J].電腦知識與技術,2020,16(01):77-78+85.
[7]徐剛,翟夢嬌.基于SSM的美容資訊商務網站的設計與實現[J].商丘職業技術學院學報,2019,18(06):65-71.
[8]陳舒祥.基于JSP技術的德育分數管理系統設計與實現[J].電腦編程技巧與維護,2019(12):118-120.
[9]毋世曉.基于MVC的BBS論壇創建與實現[J].電腦編程技巧與維護,2019(12):21-23.
[10]陳學明.基于SpringBoot+ExtJS的企業應用系統通用平臺的設計與實現[J].電腦知識與技術,2019,15(35):63-66+69.
[11]吳峰,范文宇,謝宏博,趙麗.基于JSP+Servlet的企業族譜分析[J].計算機時代,2019(12):30-32+37.
[12]孟悅,趙詩奎.融合路徑重連的混合算法求解作業車間調度問題[J].機械工程師,2019(12):32-36+39.
[13]王曉芳,劉鹍,荊山,趙燕.基于工程教育專業認證的JSP應用程序設計課程改革[J].計算機教育,2019(12):46-50.
[14]趙國文,夏平平.基于springboot的人事管理系統的設計與實現[J].現代工業經濟和信息化,2019,9(11):88-89.
[15]王萍.智能設備下的應用軟件開發關鍵技術分析[J].科學技術創新,2019(34):74-75.
[16]MuhamadBahri.Analysisofthewater,energy,foodandlandnexususingthesystemarchetypes:AcasestudyintheJatiluhurreservoir,WestJava,Indonesia[J].ScienceoftheTotalEnvironment,2020,716.
[17]BahriMuhamad.Analysisofthewater,energy,foodandlandnexususingthesystemarchetypes:AcasestudyintheJatiluhurreservoir,WestJava,Indonesia.[J].TheScienceofthetotalenvironment,2020,716.
[18].TreeGeneticsandGenomics;StudiesfromUniversityofTsukubaYieldNewInformationaboutTreeGeneticsandGenomics(GeneticDiversityandtheOriginofCommercialPlantationofIndonesianTeakOnJavaIsland)[J].AgricultureWeek,2020.
[19]FajarYulianto,Suwarsono,UdhiCaturNugroho,NunungPujiNugroho,WismuSunarmodo,MuhammadRokhisKhomarudin.Spatial-TemporalDynamicsLandUse/LandCoverChangeandFloodHazardMappingintheUpstreamCitarumWatershed,WestJava,Indonesia[J].QuaestionesGeographicae,2020,39(1).
[20]RudiartoIwan,HidayaniRizqa,FisherMicah.Thebilocalmigrant:Economicdriversofmobilityacrosstherural-urbaninterfaceinCentralJava,Indonesia[J].JournalofRuralStudies,2020,74(C).
致謝
本次設計歷時3個月。在這個畢業設計中,它離不開指導教師的指導,使事情基本順利。指導老師無論是在畢業設計歷經中,還是在論文做完中都給了了我特別大的助益。另1個方面,教師認真負責的工作姿態,謹慎的教學精神厚重的理論水準都使我獲益匪淺。他勤懇謹慎的教學育人學習姿態也給我留下了特別特別深的感覺。我從老師那里學到了很多東西。在理論和實踐中,我的技能得到了特別大的提高。在此,特向教師表示由衷的感激。
經過對該畢業設計的全部研究和開發,我的系統研發經歷了從需求分析到實現詳細功能,再到最終測試和維護的特殊進展。讓我對系統研發有了更深層次的認識。如今我的動手本領單獨處理疑惑的本領也獲取到了特別大的演練學習增多,這是這次畢業設計最好的收獲。
最后,在整個系統開發過程中,我周圍的同學和朋友給了我很多意見,所以我很快就確認了系統的商業思想。在次,我由衷的向他們表示感激。
免費領取項目源碼,請關注?點贊收藏并私信博主,謝謝~