Ssm网上考试系统 计算机专业毕设源码12795
摘 ?要
科技進步的飛速發(fā)展引起人們?nèi)粘I畹木薮笞兓?#xff0c;電子信息技術的飛速發(fā)展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流,人類發(fā)展的歷史正進入一個新時代。在現(xiàn)實運用中,應用軟件的工作規(guī)則和開發(fā)步驟,采用SSM框架開發(fā)基于網(wǎng)上考試系統(tǒng)。
本設計主要實現(xiàn)集人性化、高效率、便捷等優(yōu)點于一身的基于網(wǎng)上考試系統(tǒng),完成首頁、系統(tǒng)用戶、資料信息、資料類型、考試留言等功能模塊。系統(tǒng)通過瀏覽器與服務器進行通信,實現(xiàn)數(shù)據(jù)的交互與變更。本系統(tǒng)通過科學的管理方式、便捷的服務提高了工作效率,減少了數(shù)據(jù)存儲上的錯誤和遺漏。基于網(wǎng)上考試系統(tǒng)開發(fā)是采用基于 MVVM模式的SSM框架進行開發(fā),使用 MyEclipse 2017 CI 10 編譯器編寫,數(shù)據(jù)方面主要采用的是微軟的MySQL關系型數(shù)據(jù)庫來作為數(shù)據(jù)存儲媒介,配合前臺HTML+CSS 技術完成系統(tǒng)的開發(fā)。
關鍵詞 :網(wǎng)上考試系統(tǒng);MySQL;SSM?
Ssm Online Examination System
Abstract
The rapid development of technology has caused tremendous changes in people's daily lives, and the rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The arrival of the information age has become an unstoppable fashion trend, and the history of human development is entering a new era. In practical applications, the working rules and development steps of the application software are developed using the SSM framework based on an online exam system.
This design mainly implements an online exam system that combines the advantages of humanization, efficiency, and convenience. It completes functional modules such as homepage, system users, data information, data types, and exam messages. The system communicates with the server through a browser to achieve data interaction and changes. This system improves work efficiency and reduces errors and omissions in data storage through scientific management and convenient services. The development of the online examination system is based on the SSM framework based on the MVVM mode. It is written using the MyEclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL relational database is mainly used as the data storage medium, and the system development is completed with the foreground HTML+CSS technology.
Key words:Online examination system; MySQL; SSM
目 ???錄
1 概述
1.1選題背景
1.2 課題來源及研究目的
1.3 本文的組織結(jié)構(gòu)
2 系統(tǒng)開發(fā)工具介紹
2.1 J2EE技術
2.2?MySQL數(shù)據(jù)庫
2.3?SSM框架介紹
2.4?B/S體系工作原理
3 系統(tǒng)分析 6
3.1 可行性分析 6
3.1.1 技術可行性 6
3.1.2操作可行性 6
3.1.3 經(jīng)濟可行性 7
3.1.4 法律可行性 7
3.2系統(tǒng)流程分析 7
3.2.1系統(tǒng)開發(fā)流程 7
3.2.2 用戶登錄流程
3.2.3 系統(tǒng)操作流程
3.2.4 添加信息流程
3.2.5 修改信息流程
3.2.6 刪除信息流程
3.3系統(tǒng)用例分析
3.3.1管理員用例圖
4 系統(tǒng)設計
4.1 系統(tǒng)概述
4.2 系統(tǒng)結(jié)構(gòu)設計
4.3數(shù)據(jù)庫設計 14
4.3.1 數(shù)據(jù)庫設計原則
4.3.2 數(shù)據(jù)庫實體
4.3.3 數(shù)據(jù)庫表設計
5系統(tǒng)統(tǒng)詳細設計 24
5.1登錄模塊的實現(xiàn) 24
5.2注冊模塊的實現(xiàn) 30
5.3資料信息收藏模塊的實現(xiàn) 31
5.4評論模塊的實現(xiàn) 31
5.5考試留言模塊的實現(xiàn) 31
5.6密碼修改模塊的實現(xiàn) 32
5.7系統(tǒng)公告模塊的實現(xiàn) 33
5.8用戶管理模塊的實現(xiàn) 35
5.9資料類型管理模塊的實現(xiàn) 36
6系統(tǒng)測試 37
6.1系統(tǒng)測試的意義
6.2 測試方法 38
6.3測試分析
結(jié)????論 40
致????謝 41
參考文獻 42
1 概述
1.1選題背景
現(xiàn)今,不管是國內(nèi)還是國外的各大機構(gòu),都不斷的推出了一系列大型的認證考試,如微軟的MCSE、Cisco的CCNA以及我們國家的自學考試和各省市的各種考試等,這些考試都在朝著網(wǎng)絡化的方向發(fā)展,只有這樣才符合大規(guī)模考試省時省力以及公正公開的要求。所以,網(wǎng)上考試系統(tǒng)的研制是當今教育信息化建設的一項重要課題,目的是充分利用學校現(xiàn)有的計算機軟、硬件資源和網(wǎng)絡資源實現(xiàn)無紙化考試以彌補傳統(tǒng)手工考試的不足。基于Web的網(wǎng)絡考試已成為大勢所趨,與傳統(tǒng)考試模式相比,網(wǎng)上考試滲入了更多的技術環(huán)節(jié),對實現(xiàn)安全性的途徑、方法也提出了更高的技術要求,它在教育現(xiàn)代化的進程中具有很重要的現(xiàn)實意義。傳統(tǒng)考試要求老師刻試卷、印試卷、安排考試、監(jiān)考、收集試卷、評改試卷、講評試卷和分析試卷,這是一個漫長而復雜的過程,已經(jīng)越來越不適應現(xiàn)代教學的需要,于是產(chǎn)生了大量的網(wǎng)上考試系統(tǒng)。它應用ssm等網(wǎng)絡軟件開發(fā)工具進行研發(fā),并充分利用了B/S結(jié)構(gòu)的特點,其功能目標是實現(xiàn)將現(xiàn)有的紙張答題式考試向基于Internet?的無紙化考試系統(tǒng)的轉(zhuǎn)變,具有良好的開放性,允許系統(tǒng)管理員對試題庫進行管理與開發(fā),有效地保證了題庫的時效性。通過Internet/Intranet來實現(xiàn)網(wǎng)上考試,可以實現(xiàn)教考分離以及考務工作的全自動化管理,可以有效利用校園網(wǎng)的軟硬件資源,使其發(fā)揮最大效力,更好的為學校的教學、科研、管理服務,它可以將傳統(tǒng)考試過程中的試卷組織、審定印制、傳送收集、登記發(fā)放、評判歸檔各個環(huán)節(jié)縮小到一至兩個環(huán)節(jié),幾乎屏蔽了所有人工直接干預考試活動的可能性,不但能夠節(jié)約大量的時間、人力、物力與財力,而且還可以大幅度提高考試成績的客觀性和公正性。
利用ssm技術開發(fā)的基于WEB的多用戶網(wǎng)上考試系統(tǒng)具有用戶注冊、多用戶同時網(wǎng)上考試、系統(tǒng)公告、資料信息、資料類型、考試留言等功能....
1.2?課題來源及研究目的
隨著信息技術與網(wǎng)絡技術的快速發(fā)展,計算機越來越多地應用到人們的實際生活當中,也扮演著越來越重要的角色。在我們教育飛速進步的今天,比較傳統(tǒng)的紙質(zhì)考試已經(jīng)過時了,因為這不僅需要大量的人力物力去刻印試卷、還要去批改試卷,要花費大把大把的時間,更關鍵的是,在遠程的教學教育中,不利于安排統(tǒng)一的考試,注定要被時代所淘汰。為了打破傳統(tǒng)的考試模式,為了新形勢的發(fā)展,把老師從繁重的工作中解脫出來,適應實現(xiàn)真正的無紙化的考試,使考試可以在任何地點進行,不受地域的限制,人們迫切要求利用計算機技術實現(xiàn)在線考試,以減輕教師的工作負擔及提高工作效率,提高考試的質(zhì)量,使考試更趨于公證。基于互聯(lián)網(wǎng)的各種應用日益受到人們的重視,基于web的網(wǎng)上考試系統(tǒng)在這種形勢下應運而生,它是伴隨著網(wǎng)絡技術和數(shù)據(jù)庫技術的應用發(fā)展而誕生,可以利用網(wǎng)絡,隨時隨地地對學生進行考試,是傳統(tǒng)考試的延伸:另外,借助它可以有效利用校園網(wǎng)的資源,更好地為學校的教學管理服務。
其實,目前已有一些網(wǎng)上考試系統(tǒng)實現(xiàn)了這樣的目標,如普通話考試、計算機等級考試等,都是網(wǎng)絡考試系統(tǒng)的典型應用。但目前大部分高校仍采用傳統(tǒng)的考試方式。因此,本課題擬基于B/S模式設計一個簡單的網(wǎng)上考試系統(tǒng)。系統(tǒng)采用Java來開發(fā),后臺采用MySQL作為數(shù)據(jù)庫服務器,界面友好,操作簡單。用戶通過普通的Web瀏覽器即能完成出題、考試和自動閱卷等操作,簡單快捷。通過使用該系統(tǒng)可以大大的提高考試的效率,減少人力、物力和財力的消耗。
1.3本文的組織結(jié)構(gòu)
第一章是緒論,本文章的開頭部分,對本題目的選題背景和選題背景等一些做文字性的描述。
第二章研究了基于網(wǎng)上考試系統(tǒng)的所采用的開發(fā)技術和開發(fā)工具。
第三章是系統(tǒng)分析部分,包括系統(tǒng)總體需求描述、功能性角度分析系統(tǒng)需求、非功能性等各個方面分析系統(tǒng)是否可以實現(xiàn)。
第四章是系統(tǒng)設計部分,本文章的重要部分,提供了系統(tǒng)架構(gòu)的詳細設計和一些主要功能模塊的設計說明。
第五章是系統(tǒng)的具體實現(xiàn),介紹系統(tǒng)的各個模塊的具體實現(xiàn)。
第六章在前幾章的基礎上對系統(tǒng)進行測試和運行。
最后對系統(tǒng)進行了認真的總結(jié),以此對未來有一個新的展望。
2 系統(tǒng)開發(fā)環(huán)境??
2.1 J2EE技術
人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發(fā)出的“中間件”不夠規(guī)范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統(tǒng)的搭建穩(wěn)定可用、開發(fā)高效、維護方便[1][2]。
2.2MySQL數(shù)據(jù)庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數(shù)碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數(shù)據(jù)庫,而這次的物流信息管理系統(tǒng)也需要這項技術的支持[7]。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數(shù)據(jù)進行分類,然后分別保存在表里,這樣的特別操作就會提高數(shù)據(jù)管理系統(tǒng)自身的速度,讓數(shù)據(jù)庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網(wǎng)站系統(tǒng)。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象[8]。
2.3SSM框架介紹
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內(nèi)容)。常作為數(shù)據(jù)源較簡單的web項目的框架。
?Spring
Spring就像是整個項目中裝配bean的大工廠,在配置文件中可以指定使用特定的參數(shù)去調(diào)用實體類的構(gòu)造方法來實例化對象。也可以稱之為項目中的粘合劑。
Spring的核心思想是IoC(控制反轉(zhuǎn)),即不再需要程序員去顯式地`new`一個對象,而是讓Spring框架幫你來完成這一切。
?SpringMVC
SpringMVC在項目中攔截用戶請求,它的核心Servlet即DispatcherServlet承擔中介或是前臺這樣的職責,將用戶請求通過HandlerMapping去匹配Controller,Controller就是具體對應請求所執(zhí)行的操作。SpringMVC相當于SSH框架中struts。
?mybatis
mybatis是對jdbc的封裝,它讓數(shù)據(jù)庫底層操作變的透明。mybatis的操作都是圍繞一個sqlSessionFactory實例展開的。mybatis通過配置文件關聯(lián)到各實體類的Mapper文件,Mapper文件中配置了每個類對數(shù)據(jù)庫所需進行的sql語句映射。在每次與數(shù)據(jù)庫交互時,通過sqlSessionFactory拿到一個sqlSession,再執(zhí)行sql命令。
頁面發(fā)送請求給控制器,控制器調(diào)用業(yè)務層處理邏輯,邏輯層向持久層發(fā)送請求,持久層與數(shù)據(jù)庫交互,后將結(jié)果返回給業(yè)務層,業(yè)務層將處理邏輯發(fā)送給控制器,控制器再調(diào)用視圖展現(xiàn)數(shù)據(jù)。
?
2.4B/S體系工作原理:
B/S架構(gòu)采取瀏覽器請求,服務器響應的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務器產(chǎn)生的文本、數(shù)據(jù)、圖片、動畫、視頻點播和聲音等信息;
而每一個Web服務器又可以通過各種方式與數(shù)據(jù)庫服務器連接,大量的數(shù)據(jù)實際存放在數(shù)據(jù)庫服務器中;
從Web服務器上下載程序到本地來執(zhí)行,在下載過程中若遇到與數(shù)據(jù)庫有關的指令,由Web服務器交給數(shù)據(jù)庫服務器來解釋執(zhí)行,并返回給Web服務器,Web服務器又返回給用戶。在這種結(jié)構(gòu)中,將許許多多的網(wǎng)連接到一塊,形成一個巨大的網(wǎng),即全球網(wǎng)。而各個企業(yè)可以在此結(jié)構(gòu)的基礎上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網(wǎng)絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結(jié)果以及相應的信息返回給瀏覽器,其他的數(shù)據(jù)加工、請求全部都是由Web Server完成的。通過該框架結(jié)構(gòu)以及植入于操作系統(tǒng)內(nèi)部的瀏覽器,該結(jié)構(gòu)已經(jīng)成為了當今軟件應用的主流結(jié)構(gòu)模式。
3 系統(tǒng)分析
所謂系統(tǒng)分析就是,需求人員通過與用戶的溝通,所獲取的信息,然后把這些信息通過需求說明書的方式展示給用戶和開發(fā)人員。在軟件功能發(fā)展的歷史長河中,很長時間,特別是最開始的時候,需求分析的重要性并不被人們所認同,例如當時美國IBM公司為英國電信公司開發(fā)一套信息管理系統(tǒng),在需求不明確的情況下開始開發(fā),最初的工期為一年,由于需求獲取不清晰導致工期推遲了半年多,造成巨大損失。我們很多軟件公司也存在這種情況,邊需求,邊開發(fā),甚至與用戶沒有溝通清楚的情況下,直接照搬同類型的項目進行更改,導致到系統(tǒng)驗收的時候,重新更改,造成了人力、物力的極大浪費。而導致這一切后果的原因就是需求獲取不及時、不清楚、不全面。
3.1 可行性分析
基于網(wǎng)上考試系統(tǒng)主要目標是實現(xiàn)網(wǎng)上考試、系統(tǒng)用戶、資料信息、資料類型、考試留言、資源管理的相關信息管理服務。在確定了目標后,我們從以下四方面對能否實現(xiàn)本系統(tǒng)目標進行可行性分析。
3.1.1 技術可行性
基于網(wǎng)上考試系統(tǒng)主要采用SSM框架,基于B/S結(jié)構(gòu),Mysql數(shù)據(jù)庫,對于應用程序的開發(fā)要求具備完整功能,使用簡單的特點,并建立一個數(shù)據(jù)完整安全穩(wěn)定的數(shù)據(jù)庫。基于網(wǎng)上考試系統(tǒng)的開發(fā)技術具有很高可行性,且開發(fā)人員掌握了一定的開發(fā)技術,所以系統(tǒng)的開發(fā)具有可行性。
3.1.2操作可行性
基于網(wǎng)上考試系統(tǒng)的登錄界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,會員只要平時使用過電腦都能進行訪問操作。此系統(tǒng)的開發(fā)采用java語言開發(fā),基于B/S結(jié)構(gòu),這些開發(fā)環(huán)境使系統(tǒng)更加完善。本系統(tǒng)具有易操作、易管理、交互性好的特點,在操作上是非常簡單的。因此本系統(tǒng)可以進行開發(fā)。
3.1.3 經(jīng)濟可行性
基于網(wǎng)上考試系統(tǒng)是基于B/S模式,采用Mysql數(shù)據(jù)庫儲存數(shù)據(jù),所要求的硬件和軟件環(huán)境,市場上都很容易購買,程序開發(fā)主要是管理系統(tǒng)的開發(fā)和維護。所以程序在開發(fā)人力、財力上要求不高,而且此系統(tǒng)不是很復雜,開發(fā)周期短,在經(jīng)濟方面具有較高的可行性。
3.1.4 法律可行性
基于網(wǎng)上考試系統(tǒng)是自己設計的管理系統(tǒng),具有很大的實際意義。因為無論是軟件還是數(shù)據(jù)庫,采用的都是開源代碼,因此這個系統(tǒng)的開發(fā)和設計,并不存在侵權等問題,在法律上完全具有可行性。
綜上所述,基于網(wǎng)上考試系統(tǒng)在技術、經(jīng)濟、操作和法律上都具有很高的可行性,開發(fā)此程序是可行的。
3.2系統(tǒng)流程分析
3.2.1系統(tǒng)開發(fā)流程
基于網(wǎng)上考試系統(tǒng)開發(fā)時,首先進行需求分析,進而對系統(tǒng)進行總體的設計規(guī)劃,設計系統(tǒng)功能模塊,數(shù)據(jù)庫的選擇等,本系統(tǒng)的開發(fā)流程如圖3-1所示
?
圖3-1系統(tǒng)開發(fā)流程圖
3.2.2 用戶登錄流程
為了保證系統(tǒng)的安全性,要使用本系統(tǒng)對系統(tǒng)信息進行管理,必須先登陸到系統(tǒng)中。如圖3-2所示。
?
圖3-2 登錄流程圖
3.2.3 系統(tǒng)操作流程
用戶打開并進入系統(tǒng)后,會先顯示登錄界面,輸入正確的用戶名和密碼,系統(tǒng)自動檢測信息,若信息無誤,則用戶會進入系統(tǒng)功能界面,進行操作,否則會提示錯誤無法登錄,操作流程如圖3-3所示。
?
圖3-3 系統(tǒng)操作流程圖
3.2.4 添加信息流程
管理員可以對網(wǎng)上考試、系統(tǒng)用戶、資料信息、資料類型、考試留言進行信息的添加,用戶可以對自己權限內(nèi)的信息進行添加,輸入信息后,系統(tǒng)會自行驗證輸入的信息和數(shù)據(jù),若信息正確,會將其添加到數(shù)據(jù)庫內(nèi),若信息有誤,則會提示重新輸入信息,添加信息流程如圖3-4所示。
?
圖3-4 添加信息流程圖
3.2.5 修改信息流程
管理員可以對網(wǎng)上考試、系統(tǒng)用戶、資料信息、資料類型、考試留言進行的修改,用戶可以對自己權限內(nèi)的信息進行修改,首先進入修改信息界面,輸入修改信息數(shù)據(jù),系統(tǒng)進行數(shù)據(jù)的判斷驗證,修改信息合法則修改成功,信息更新至數(shù)據(jù)庫,信息不合法則修改失敗,重新輸入。修改信息流程圖如圖3-5所示。
?
圖3-5 修改信息流程圖
3.2.6 刪除信息流程
管理員可以對網(wǎng)上考試、系統(tǒng)用戶、資料信息、資料類型、考試留言進行信息的刪除,對要刪除的信息進行選中后,點擊刪除按鈕,系統(tǒng)會詢問是否確定,若點擊確定,則系統(tǒng)會刪除掉選中的信息,并在數(shù)據(jù)庫內(nèi)對信息進行刪除,刪除信息流程圖如圖3-6所示。
?
圖3-6 刪除信息流程圖
3.3系統(tǒng)用例分析
3.3.1管理員用例圖
系統(tǒng)中的核心用戶是系統(tǒng)管理員,管理員登錄后,通過管理員菜單來管理后臺系統(tǒng)。主要功能有:網(wǎng)上考試、系統(tǒng)用戶、資料信息、資料類型、考試留言等功能。管理員用例如圖3-7所示。
?
圖3-7 管理員用例圖
系統(tǒng)中的核心用戶是考試用戶,考試用戶注冊登錄后,通過管理員菜單來管理前臺系統(tǒng)。主要功能有:網(wǎng)上考試、系統(tǒng)公告、新聞資訊、資料信息、考試留言等功能考試用戶用例如圖3-8所示。
?
圖3-8?考試用戶用例圖
4 系統(tǒng)設計
4.1 系統(tǒng)概述
進過系統(tǒng)的分析后,就開始記性系統(tǒng)的設計,系統(tǒng)設計包含總體設計和詳細設計。總體設計只是一個大體的設計,經(jīng)過了總體設計,我們能夠劃分出系統(tǒng)的一些東西,例如文件、文檔、數(shù)據(jù)等。而且我們通過總體設計,大致可以劃分出了程序的模塊,以及功能。但是只是一個初步的分類,并沒有真正的實現(xiàn)。
整體設計,只是一個初步設計,而且,對于一個項目,我們可以進行多個整體設計,通過對比,包括性能的對比、成本的對比、效益的對比,來最終確定一個最優(yōu)的設計方案,選擇優(yōu)秀的整體設計可以降低開發(fā)成本,增加公司效益,從這一點來講,整體設計還是非常重要的。
基于網(wǎng)上考試系統(tǒng)工作原理圖如圖4-1所示:
? ? ? ? ? ? ? ? ? ? ? ?
?
圖4-1 系統(tǒng)工作原理圖
4.2 系統(tǒng)結(jié)構(gòu)設計
系統(tǒng)架構(gòu)圖屬于系統(tǒng)設計階段,系統(tǒng)架構(gòu)圖只是這個階段一個產(chǎn)物,系統(tǒng)的總體架構(gòu)決定了整個系統(tǒng)的模式,是系統(tǒng)的基礎。基于網(wǎng)上考試系統(tǒng)的整體結(jié)構(gòu)設計如圖4-2所示。
?
圖4-2 系統(tǒng)結(jié)構(gòu)圖
4.3數(shù)據(jù)庫設計
數(shù)據(jù)庫是計算機信息系統(tǒng)的基礎。目前,電腦系統(tǒng)的關鍵與核心部分就是數(shù)據(jù)庫。數(shù)據(jù)庫開發(fā)的優(yōu)劣對整個系統(tǒng)的質(zhì)量和速度有著直接影響。
4.3.1 數(shù)據(jù)庫設計原則
數(shù)據(jù)庫的概念結(jié)構(gòu)設計采用實體—聯(lián)系(E-R)模型設計方法。E-R模型法的組成元素有:實體、屬性、聯(lián)系,E-R模型用E-R圖表示,是提示用戶工作環(huán)境中所涉及的事物,屬性則是對實體特性的描述。在系統(tǒng)設計當中數(shù)據(jù)庫起著決定性的因素。下面設計出這幾個關鍵實體的實體—關系圖。
4.3.2 數(shù)據(jù)庫實體
數(shù)據(jù)模型中的實體(Entity),也稱為實例,對應現(xiàn)實世界中可區(qū)別于其他對象的“事件”或“事物”。
本系統(tǒng)的E-R圖如下圖所示:
1、資料信息實體圖如圖4-3所示:
?
圖4-3資料信息實體圖
2、考試用戶實體圖如圖4-4所示:
?
圖4-4考試用戶實體圖
3、考試留言實體圖如圖4-5所示:
?
圖4-5考試留言實體圖
4.3.3 數(shù)據(jù)庫表設計
表comment (評論)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 內(nèi)容: | |
| 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 | 創(chuàng)建時間: |
| 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: |
表data_type (資料類型)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | data_type_id | int | 10 | 0 | N | Y | 資料類型ID | |
| 2 | data_type | varchar | 64 | 0 | Y | N | 資料類型 | |
| 3 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
| 4 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創(chuàng)建時間 |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表exam (考試)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 狀態(tài):啟用、禁用 | |
| 6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創(chuàng)建時間: |
| 7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表exam_message (考試留言)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | exam_message_id | int | 10 | 0 | N | Y | 考試留言ID | |
| 2 | candidate_users | int | 10 | 0 | Y | N | 0 | 考生用戶 |
| 3 | candidate_name | varchar | 64 | 0 | Y | N | 考生姓名 | |
| 4 | message_content | text | 65535 | 0 | Y | N | 留言內(nèi)容 | |
| 5 | message_date | date | 10 | 0 | Y | N | 留言日期 | |
| 6 | examine_state | varchar | 16 | 0 | N | N | 未審核 | 審核狀態(tài) |
| 7 | examine_reply | varchar | 16 | 0 | Y | N | 審核回復 | |
| 8 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創(chuàng)建時間 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表exam_question (試題)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創(chuàng)建時間: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表exam_users (考試用戶)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | exam_users_id | int | 10 | 0 | N | Y | 考試用戶ID | |
| 2 | candidate_name | varchar | 64 | 0 | Y | N | 考生姓名 | |
| 3 | candidate_gender | varchar | 64 | 0 | Y | N | 考生性別 | |
| 4 | examination_qualification | varchar | 255 | 0 | Y | N | 考試資格 | |
| 5 | examine_state | varchar | 16 | 0 | N | N | 未審核 | 審核狀態(tài) |
| 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 | 創(chuàng)建時間 |
| 9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表hits (用戶點擊)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創(chuàng)建時間: |
| 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: |
表information (資料信息)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | information_id | int | 10 | 0 | N | Y | 資料信息ID | |
| 2 | data_name | varchar | 64 | 0 | Y | N | 資料名稱 | |
| 3 | cover | varchar | 255 | 0 | Y | N | 封面 | |
| 4 | data_type | varchar | 64 | 0 | Y | N | 資料類型 | |
| 5 | data_label | varchar | 64 | 0 | Y | N | 資料標簽 | |
| 6 | data_attachment | varchar | 255 | 0 | Y | N | 資料附件 | |
| 7 | details | longtext | 2147483647 | 0 | Y | N | 詳情介紹 | |
| 8 | recommend | int | 10 | 0 | N | N | 0 | 智能推薦 |
| 9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創(chuàng)建時間 |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間 |
表notice (公告)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創(chuàng)建時間: |
| 5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表praise (點贊)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創(chuàng)建時間: |
| 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 | 點贊狀態(tài):1為點贊,0已取消 |
表slides (輪播圖)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | slides_id | int | 10 | 0 | N | Y | 輪播圖ID: | |
| 2 | title | varchar | 64 | 0 | Y | N | 標題: | |
| 3 | content | varchar | 255 | 0 | Y | N | 內(nèi)容: | |
| 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 | 創(chuàng)建時間: |
| 8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表upload (文件上傳)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 文件類型 |
表user (用戶賬戶:用于保存用戶登錄信息)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | user_id | mediumint | 8 | 0 | N | Y | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數(shù)據(jù) | |
| 2 | state | smallint | 5 | 0 | N | N | 1 | 賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|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位數(shù)字或英文組成 | |
| 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 | 創(chuàng)建時間: |
表user_answer (用戶答題)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 1 | user_answer_id | mediumint | 8 | 0 | N | Y | ||
| 2 | user_id | mediumint | 7 | 0 | N | N | 用戶ID:[0,8388607]用戶獲取其他與用戶相關的數(shù)據(jù) | |
| 3 | exam_id | mediumint | 7 | 0 | N | N | 0 | 考試id |
| 4 | score | double | 9 | 2 | Y | N | 0.00 | 分數(shù) |
| 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 | 評分狀態(tài) |
| 10 | nickname | varchar | 255 | 0 | Y | N | 提交人 | |
| 11 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 創(chuàng)建時間: |
| 12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
表user_group (用戶組:用于用戶前端身份和鑒權)
| 編號 | 名稱 | 數(shù)據(jù)類型 | 長度 | 小數(shù)位 | 允許空值 | 主鍵 | 默認值 | 說明 |
| 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 | 創(chuàng)建時間: |
| 10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新時間: |
5系統(tǒng)詳細設計
5.1登錄模塊的實現(xiàn)
將首頁的左邊的功能設計為用戶登錄的位置,所以在進行登錄的地方就會顯示首頁。在登錄后就是大眾較為熟悉的位置,也就是讓用戶進行賬號以及密碼輸入的樣式。
當用戶輸入完信息并點擊登錄按鈕時,Struts就會將用戶輸入的信息傳遞進表單并裝入相應的對象之中,然后再轉(zhuǎn)到相應位置進行校驗。若用戶名和密碼框都是空的,那么系統(tǒng)就會不可將賬號密碼均設置為空值。
系統(tǒng)的底層設置要求賬號密碼不可以都是空值,將這些信息傳遞給相關的類中的對象方法并調(diào)用相關的信息,對于用戶輸入的數(shù)據(jù)進行檢驗。若檢驗結(jié)果正確會自動轉(zhuǎn)到系統(tǒng)首頁歡迎頁面,如果不正確系統(tǒng)就會返回用戶登錄界面。
用戶登錄流程圖如下所示。
?
圖5-1 用戶登錄流程
登錄界面如下圖所示。
?
圖5-2登錄界面圖
登錄關鍵代碼如下所示。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}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);
String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數(shù)據(jù)庫
????????????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, "賬號或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}??
?5.2注冊模塊的實現(xiàn)
系統(tǒng)的用戶通過自行注冊生成,在系統(tǒng)首頁點擊用戶注冊菜單,系統(tǒng)跳轉(zhuǎn)到對應的注冊頁面。點擊重置按鈕,清空所填數(shù)據(jù),點擊注冊按鈕完成注冊。
用戶注冊流程圖如下所示。
?
圖5-1 用戶注冊流程圖
用戶注冊界面如下圖所示。
?
圖5-4注冊界面圖
注冊關鍵代碼如下所示。
/**
?????* 注冊
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
5.3資料信息收藏模塊的實現(xiàn)
用戶選擇相應的資料信息收藏,通過id傳參,找到id為此傳參的資料信息,在收藏頁提交收藏記錄表單,生成收藏記錄,用戶在個人中心管理個人的收藏夾。
資料信息收藏界面如下圖所示。
?
圖5-6?資料信息收藏模塊界面圖
5.4評論模塊的實現(xiàn)
用戶點擊某個資料信息進入資料詳細頁,點擊評論按鈕進入評論頁,提交評論信息,成功發(fā)布評論,管理員管理用戶的評論信息。
發(fā)布評論流程圖如下所示。
?
圖5-1 發(fā)布評論流程圖
發(fā)布評論界面如圖所示。
?
圖5-8發(fā)布評論界面
5.5考試留言模塊的實現(xiàn)
用戶執(zhí)行考試留言,并可以操作相關內(nèi)容,例如查看,編輯。考試留言的添加操作是建立在資料類型信息的列表基礎上,單擊查資料類型信息下的考試留言鏈接;然后單擊“考試留言”進行添加,添加成功后的信息會載入到考試留言查詢列表中。
考試留言流程圖如下所示。
?
圖5-9?考試留言流程圖
考試留言界面如圖所示。
圖5-9考試留言界面
考試留言邏輯代碼如下所示。
??@RequestMapping("/get_obj")
????public Map<String, Object> obj(HttpServletRequest request) {
????????List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));
????????if (resultList.size() > 0) {
????????????JSONObject jsonObject = new JSONObject();
????????????jsonObject.put("obj",resultList.get(0));
????????????return success(jsonObject);
????????} else {
????????????return success(null);
????????}
}
5.6密碼修改模塊的實現(xiàn)
用戶使用該網(wǎng)上考試系統(tǒng)注冊完成后,用戶對登錄密碼有修改需求時,系統(tǒng)也可以提供用戶修改密碼權限。系統(tǒng)中所有的操作者能夠變更自己的密碼信息,執(zhí)行該功能首先必須要登入系統(tǒng),然后選擇密碼變更選項以后在給定的文本框中填寫初始密碼和新密碼來完成修改密碼的操作。在填寫的時候,假如兩次密碼填寫存在差異,那么此次密碼變更操作失敗,下面的圖片展示的就是該板塊對應的工作面。
密碼修改流程圖如下所示。
?
圖5-9?密碼修改流程圖
密碼修改界面如圖所示。
?
圖5-10密碼修改界面圖
5.7系統(tǒng)公告模塊的實現(xiàn)
管理員執(zhí)行系統(tǒng)公告管理,并可以操作相關內(nèi)容,例如添加,查看,編輯和刪除。通過單擊“添加系統(tǒng)公告”,可以通過系統(tǒng)公告添加界面添加詳細信息并添加系統(tǒng)公告注釋。單擊查看字段級別鏈接以查看有關所選字段級別的信息。然后單擊“提交”跳轉(zhuǎn)重返到添加頁面。添加成功后的信息會載入到系統(tǒng)公告查詢列表中,管理員可進行編輯以及修改。
系統(tǒng)公告管理流程如下圖所示。
?
圖5-11?系統(tǒng)公告管理流程
系統(tǒng)公告界面如下圖所示。
?
圖5-12?系統(tǒng)公告界面
系統(tǒng)公告模塊的實現(xiàn)如下圖所示。
?
圖5-13系統(tǒng)公告模塊的實現(xiàn)
系統(tǒng)公告管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
5.8用戶管理模塊的實現(xiàn)
用戶通過注冊了方可獲得登錄使用權限,此時選擇注冊用戶選項,系統(tǒng)就會自動轉(zhuǎn)到用戶注冊工作面,在注冊該部分信息時系統(tǒng)會自動調(diào)用add函數(shù),然后在給定的文本框中填寫有關該用戶的基礎信息后選擇確認即可完成注冊。檢索用戶信息,在新增用戶信息以后,在檢索工具欄中填寫對應的用戶信息,系統(tǒng)就會將該用戶有關的所有信息展示出來。
用戶管理流程圖如下所示。
?
圖5-14?用戶管理流程圖
用戶管理界面如下圖所示。
?
圖5-15?用戶管理界面
用戶管理邏輯代碼如下所示。
@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????Map<String,Object> paramMap = service.readBody(request.getReader());
????????this.addMap(paramMap);
????????return success(1);
}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????service.insert(map);
????????return success(1);
}
5.9資料類型管理模塊的實現(xiàn)
管理員執(zhí)行資料類型管理,并可以操作相關內(nèi)容,例如添加,查看,編輯和刪除。通過單擊“添加資料類型”,可以通過資料類型添加界面添加詳細信息。單擊查看字段級別鏈接以查看有關所選字段級別的信息。然后單擊“提交”跳轉(zhuǎn)重返到添加頁面。添加成功后的信息會載入到資料類型查詢列表中,管理員可進行編輯以及修改。
資料類型添加流程圖如下所示。
?
圖5-15?資料類型添加流程圖
資料類型管理如下圖所示。
?
圖5-15?資料類型管理界面
6系統(tǒng)測試
系統(tǒng)開發(fā)的最后一個步驟就是系統(tǒng)測試,系統(tǒng)測試也是整個系統(tǒng)十分重要的一個環(huán)節(jié),測試的好壞關系到產(chǎn)品的發(fā)展。用戶對軟件的質(zhì)量、性能和可靠性等需求就要通過測試來實現(xiàn)。測試過程要必須遵循嚴謹性、完善性、規(guī)范性的原則,測試的主要目的就是看看在系統(tǒng)運行中,是否會出現(xiàn)bug,然后對出現(xiàn)的bug進行調(diào)試,直到程序完美運行。但是軟件的測試只能盡可能的減少bug,理論上來說是無法達到消除bug。但是bug越少,系統(tǒng)出錯的幾率就越低,用戶使用起來也更方便、更安全。
近年來,軟件包含測試從現(xiàn)在的檢驗當中來看,系統(tǒng)接近預期目標可能出現(xiàn)的問題,并對這些錯誤做出相應的修正,假如我們不進行早期的測試錯誤就會延續(xù)下去,最后所做出的成品就會有很大的困難。
我們要在這個測試的過程當中找出錯誤。測試成軟件開發(fā)的主要一部分,自從有了程序的設計那天開始,它就成為了重要的組成部分。經(jīng)過統(tǒng)計來看,軟件測試可以占據(jù)這個系統(tǒng)45%的工作量,而在軟件開發(fā)的成本當中,對于測試成本來說它包含了很多的測試工作。每個程序測試時都會出現(xiàn)和遇到錯誤。在整個程序的開發(fā)過程當中,人為去查找錯誤是非常復雜和困難的,所以我們一般都會找一些測試的工具來進行測試。
6.1系統(tǒng)測試的意義
隨著現(xiàn)代信息的快速發(fā)展,在社會各大領域中已經(jīng)都開始應用網(wǎng)絡信息技術,在應用網(wǎng)絡技術的同時人們也開始把軟件的質(zhì)量問題作為了一個重要焦點來關注,因為一個軟件的好與壞它決定著這個系統(tǒng)在市場上的生存,所以我們必須要把軟件質(zhì)量來做好,這樣才有一定的生存能力。對于用戶來說它們首先選用的都是保證這個系統(tǒng)軟件的質(zhì)量問題,因為一個系統(tǒng)的軟件質(zhì)量決定著用戶在后期上成本經(jīng)濟的問題。
6.2?測試方法
具體測試方法包括:黑盒測試和白盒測試。
黑盒測試又被人們稱作為功能測試,通常是在程序的接口來做一些測試的方法,它一般包括對程序的功能和使用的方法來做出一些數(shù)據(jù)的接受和輸出,同時還可以做出正確的輸出信息,并保證與外部信息的完整性。
白盒測試通常被人們稱作為結(jié)構(gòu)測試,在整個程序的結(jié)構(gòu)和處理當中它是由程序當中的邏輯測試和檢驗程序來完成一些正確的工作。
具體的功能測試它是包括:系統(tǒng)的適用性、準確性、安全性等功能測試。
6.3測試分析
基于網(wǎng)上考試系統(tǒng)滿足相關信息的管理需求,在設計時借鑒了國內(nèi)外優(yōu)秀網(wǎng)站的優(yōu)點,從界面到系統(tǒng)設計都保證了管理員以及用戶能夠方便操作。系統(tǒng)的主要特點和優(yōu)點歸納如下:
(1)本系統(tǒng)用的移置性和針對性都比較高,因為針對性高可以提供更好的服務而移置性可以在多個系統(tǒng)上運行,更給用戶帶來了極大的方便。
(2)該基于網(wǎng)上考試系統(tǒng)內(nèi)容全面,管理方便可以及時的全面的處理各種錯誤,異常,這樣避免了很多因用戶的馬虎操作而出現(xiàn)的失誤,其操作方便,用戶界面友好,能夠上網(wǎng)的人都可以很好的進行操作。
經(jīng)過對上述的測試結(jié)果分析,所有基本功能齊全,操作簡單,系統(tǒng)運行性能良好,系統(tǒng)安全可靠,能促進基于網(wǎng)上考試系統(tǒng)的發(fā)展,發(fā)展前景廣闊。
結(jié) ???論
本系統(tǒng)通過對java和Mysql數(shù)據(jù)庫的簡介,從硬件和軟件兩反面說明了基于網(wǎng)上考試系統(tǒng)的可行性,本文結(jié)論及研究成果如下:實現(xiàn)了java與Mysql相結(jié)合構(gòu)建的基于網(wǎng)上考試系統(tǒng),網(wǎng)站可以響應式展示。通過本次基于網(wǎng)上考試系統(tǒng)的研究與實現(xiàn),我感到學海無涯,學習是沒有終點的,而且實踐出真知,只有多動手才能盡快掌握它,經(jīng)驗對系統(tǒng)的開發(fā)非常重要,經(jīng)驗不足,就難免會有許多考慮不周之處。比如要有美觀的界面,更完善的功能,才能吸引更多的用戶。
由于在此之前對于java知識沒有深入了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規(guī)范、數(shù)據(jù)庫連接有問題已經(jīng)無法實現(xiàn)參數(shù)的傳遞等等,不過通過在網(wǎng)上尋找有關資料以及同學的幫助下最后都得到了解決,在此過程中,我不僅學到了很多知識,也提高了自己解決問題的能力,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數(shù)據(jù)處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業(yè)設計活動中,我不斷的提高了自己,也得到了寶貴的經(jīng)驗,我相信這些對我以后的發(fā)展都會有很大幫助。
通過這次基于網(wǎng)上考試系統(tǒng)的開發(fā),我參考了很多相關系統(tǒng)的例子,取長補短,吸取了其他系統(tǒng)的長處,逐步對該系統(tǒng)進行了完善,但是該系統(tǒng)還是有很多的不足之處,有待以后進一步學習。
實踐證明,基于網(wǎng)上考試系統(tǒng)有著非常好的發(fā)展前景,經(jīng)過測試運行,系統(tǒng)各項功能都十分完善,界面漂亮,使用方便,操作容易,在技術理論上已經(jīng)成熟。
致 ???謝
大學的學習生活在這個季節(jié)將結(jié)束,但是在我的生命這僅僅只是一個逗號,我將面對的旅程的另一個的開始。通過這次畢業(yè)設計的整個開發(fā)過程,從需求分析到具體功能實現(xiàn),再到最終測試和維護的理解有了很大的進步,讓我對系統(tǒng)開發(fā)有了更深刻的認識,對我個人的實踐能力和解決問題的能力,都有了很大的幫助。這是這次畢業(yè)設計最大的收獲。
首先要感謝我的指導老師,他在論文寫作上,給予了我各種無私的幫助,治學嚴謹,嚴格要求,使我獲得了很大的收獲。老師深厚的理論知識和豐富的實踐經(jīng)驗,都深深的影響到我,在這方面,我謹表示衷心的感謝。
其次,我還要對所有的老師和同學表示感謝,他們在我學習的過程中,都積極的提供了很多幫助,無論是專業(yè)知識,還是實踐操作技能,也能夠讓我在論文寫作中,遇到的一些難題迎刃而解。
最后,對閱讀和評審本論文的各位老師表示衷心的感謝!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???參考文獻?
[1]伍德鵬,李佩學.基于SSM框架的高職院校教學辦公用品管理信息系統(tǒng)設計研究[J].輕工科技,2023,39(01):99-101.
[2]李亞君. 基于SSM框架的B2C電子商城系統(tǒng)的設計與實現(xiàn)[D].合肥工業(yè)大學,2022.DOI:10.27101/d.cnki.ghfgu.2022.000313.
[3]Jun Luo1,Pengcheng Cao2,Cheng Chen3. Automatic Test Paper Generation Online Examination System Based on Test Site Knowledge Map[J]. Computer Informatization and Mechanical System,2022,5(4).
[4]梁倩,文建平. 一種基于SSM框架的云筆記系統(tǒng)[P]. 天津市:CN115248676A,2022-10-28.
[5]曹澤翰.基于SSM框架的流體力學課程虛擬仿真實驗平臺設計[J].信息與電腦(理論版),2022,34(20):34-36.
[6]劉洪付,韓坤,王亮,劉棟,秦國民. 一種基于網(wǎng)絡題庫的線上考試和網(wǎng)上閱卷智能化管理系統(tǒng)[P]. 山東省:CN114693091A,2022-07-01.
[7]Li Qiuyan. Research on the Application of English Course Online Examination System Based on Face Recognition Technology[J]. Journal of Physics: Conference Series,2021,1738(1).
[8]李思怡.基于ASP.NET的網(wǎng)上考試系統(tǒng)的開發(fā)與實現(xiàn)[J].黃河科技學院學報,2019,21(05):73-80.DOI:10.19576/j.issn.1008-5424.2019.05.019.
[9]原莉.C語言教學網(wǎng)站及網(wǎng)上考試系統(tǒng)的設計與實現(xiàn)[J].計算機產(chǎn)品與流通,2019(07):235.
[10]喬俊玲.基于Struts+Hibernate+Ajax框架開發(fā)網(wǎng)上考試系統(tǒng)的設計與實現(xiàn)[J].電腦知識與技術,2019,15(08):61-62.DOI:10.14004/j.cnki.ckt.2019.0736.
[11], 人事管理 人事考試考務管理系統(tǒng)和網(wǎng)上報名平臺上線運行. 吳海英 主編,江陰年鑒,方志出版社,2018,123,年鑒.
[12]方春露,楊文琦,陳滔等. 基于Javaweb技術廣東省學生體質(zhì)爭優(yōu)運動處方數(shù)據(jù)庫和視頻庫的構(gòu)建[C]//中國生理學會運動生理學專業(yè)委員會,北京體育大學.2018年中國生理學會運動生理學專業(yè)委員會會議暨“科技創(chuàng)新與運動生理學”學術研討會論文集.2018年中國生理學會運動生理學專業(yè)委員會會議暨“科技創(chuàng)新與運動生理學”學術研討會論文集,2018:161-162.
[13]李曉麗,趙麗輝.基于ASP計算機應用基礎課程網(wǎng)上考試系統(tǒng)設計[J].電子技術與軟件工程,2017(18):185.
[14]馬浩淼.黨校網(wǎng)上考試系統(tǒng)的設計與實現(xiàn)[J].電腦知識與技術,2017,13(06):53-55.DOI:10.14004/j.cnki.ckt.2017.0470.
[15]邱琳.網(wǎng)上考試系統(tǒng)開發(fā)及設計方式研究[J].科技創(chuàng)新導報,2017,14(03):121+123.DOI:10.16660/j.cnki.1674-098X.2017.03.121.
[16]宮大川. 電子商務師網(wǎng)上考試系統(tǒng)[D].吉林大學,2016.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ? ? ? ? ? ? ? 免費領取源碼,請點贊關注私信博主
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的Ssm网上考试系统 计算机专业毕设源码12795的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Rest-framework之drf认证
- 下一篇: Windows8和Windows10系统