【河北工程技術學院畢業(yè)設計模板】基于SSM的河工軟院大學生在線考試系統(tǒng)的設計與實現

畢業(yè)設計原創(chuàng)性聲明
?
本人所提交的畢業(yè)設計基于SSM的河工軟院大學生在線考試系統(tǒng)的設計與實現,是在導師的指導下,獨立進行研究工作所取得的原創(chuàng)性成果。除文中已經注明引用的內容外,本設計不包含任何其他個人或集體已經發(fā)表或撰寫過的研究成果。對本文的研究做出重要貢獻的個人和集體,均已在文中標明。
本聲明的法律后果由本人承擔。
畢業(yè)設計版權使用授權書
?
本畢業(yè)設計作者完全了解河北工程技術學院有權保留并向國家有關部門或機構送交畢業(yè)設計的復印件和磁盤,允許論文被查閱和借閱。本人授權河北工程技術學院可以將畢業(yè)設計的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或其它復制手段保存、匯編畢業(yè)設計。
保密的畢業(yè)論文設計在_______年解密后適用本授權書。
摘 要
技術的發(fā)展促進社會各個方面的變革,順應時代發(fā)展,教育活動也要發(fā)生變化。受疫情影響,傳統(tǒng)的線下教育方式已經難以適應現在的教育活動,這就需要找到一種更加方便,且不需要人員流動與聚集的形式來對學生進行考核,自然考試結果也更加公平公正。
基于SSM的河工軟院大學生在線考試系統(tǒng)使得考試流程更加的簡單、方便、不容易出錯,也不用再受到考試地域、地點以及人力資源的限制。降低了教務管理人員在管理考試流程與考試結果整理分析上的難度,切實的減輕了教師的負擔,方便了大學生參與考試。該系統(tǒng)的優(yōu)點是利用遺傳算法優(yōu)化隨機組卷算法,實現了隨機組卷功能,均衡了試卷難度,提高了試卷的質量,使用語義相似度計算實現了主觀題自動判分功能,自動判分、自動進行成績分析,無需教師手動操縱,簡化了傳統(tǒng)的考試流程。
河工軟院大學生在線考試系統(tǒng)是針對河北工程技術學院軟件學院的需求和社會趨勢而開發(fā)的。本文首先依據河北工程技術學院軟件學院的背景和當前國內外市場考試系統(tǒng)的現狀、明確學院的需求。其次,根據用戶的需求,對系統(tǒng)的功能進行了劃分和實現。最后,結合測試結果對系統(tǒng)進行了測試和升級。
關鍵詞:在線考試系統(tǒng);遺傳算法;隨機組卷;自動判分
ABSTRACT
The development of technology promotes the changes in all aspects of society, and in keeping with the development of the times, educational activities will also change. Affected by the epidemic, the traditional offline education has been difficult to adapt to the current educational activities, so it is necessary to find a more convenient way to assess students, which does not require the flow and gathering of people, and the natural examination results are more fair and just.
The SSM-based online examination system for college students in the Soft Institute of River Engineering makes the examination process simpler, more convenient, less prone to errors, and no longer limited by the examination area, location and human resources. It reduces the difficulty of academic administrators in managing the examination process and sorting out and analyzing the examination results, effectively reduces the burden of teachers, and facilitates college students to participate in the examination. The advantages of this system are that genetic algorithm is used to optimize the random test paper generation algorithm, which realizes the function of random test paper generation, balances the difficulty of test paper, improves the quality of test paper, and uses semantic similarity calculation to realize the function of automatic grading of subjective questions, automatic grading and automatic grade analysis, without manual manipulation by teachers, thus simplifying the traditional examination process.
The online examination system for college students in Hebei Institute of Engineering and Technology is developed to meet the needs and social trends of the Software Institute of Hebei Institute of Technology. Firstly, according to the background of Software Union?of Hebei Institute of Engineering and Technology and the current situation of market examination system at home and abroad, this paper defines the needs of the college. Secondly, according to the needs of users, the functions of the system are divided and realized. Finally, combined with the test results, the system is tested and upgraded.
Key words: Online examination system; Genetic algorithm; Random test paper; Automatic grading
目 錄
第1章 緒論 1
1.1 設計背景和意義 1
1.2 國內外研究現狀 1
1.2.1 國外研究現狀分析 1
1.2.2 國內研究現狀分析 2
1.3 開發(fā)工具與技術 2
1.3.1 開發(fā)工具 2
1.3.2 后端開發(fā) 2
1.3.3 前端開發(fā) 3
1.3.4 服務器 3
1.4 本章小結 3
第2章 系統(tǒng)需求分析 4
2.1 需求分析 4
2.2 系統(tǒng)用例分析 5
2.3 性能需求 13
2.3.1 硬件環(huán)境 13
2.3.2 軟件環(huán)境 13
2.3.3 性能需求 14
2.3.4 可靠性需求 14
2.4 本章小結 14
第3章 概要設計 15
3.1 系統(tǒng)模塊劃分 15
3.2 界面設計 16
3.3 本章小結 18
第4章 數據庫設計 19
4.1 數據庫需求分析 19
4.2 概念結構設計 19
4.2.1 E-R模型 19
4.2.2 邏輯結構設計 19
4.3 物理結構設計 21
4.4 本章小結 25
第5章 系統(tǒng)算法設計 26
5.1 遺傳算法實現隨機組卷 26
5.1.1 算法概述 26
5.1.2 實現隨機組卷的過程設計 26
5.2 本章小結 29
第6章 系統(tǒng)開發(fā)與實現 30
6.1 前臺開發(fā)與實現 30
6.1.1 身份認證模塊 30
6.1.2 在線考試模塊 31
6.1.3 題庫管理模塊 34
6.2 后臺開發(fā)與實現 35
6.2.1 身份認證模塊 35
6.2.2 考試管理模塊 36
6.2.3 題庫管理模塊 37
6.3 本章小結 38
結論 39
參考文獻 40
致謝 41
第1章 緒論
教育問題一直是一個不可忽視的問題,考試又是檢測教育成果的重要途徑之一?,F如今的互聯(lián)網為廣大教育者提供了一個途徑——花費更少的時間和精力,完成考試這一常規(guī)性活動,且大大提高了組織考試的效率。
1.1 設計背景和意義
隨著信息化社會的飛速發(fā)展,計算機及網絡應用到社會各個方面,并且逐步深入千家萬戶,技術的變革也對教育活動產生了重大影響。據統(tǒng)計,2021年在校大學生人數為909萬人,面對如此龐大的學生集體進行傳統(tǒng)的線下考試是一項繁雜的任務。工作量大、出錯率高、效率低等問題普遍存在。另外受疫情影響,很多學生需要在家學習,線上教育得到長足發(fā)展利用互聯(lián)網技術開展線上考試是必經之路。
現如今,高校大多采用線下考試的方式組織學生進行線下考試,教師耗費大量的時間及經歷,以人工組卷的方式完成組卷;教務管理部門消耗大量的時間及物力,以人工方式完成印卷、組織考試,再有教師耗費時間及精力以人工方式組織學生進行答卷、判卷。如此過程,一是試卷內容受主觀因素影響頗多,對于試卷的難度、水平、知識點覆蓋、題型及分值分配難以把控;二是考試過程組織耗時耗力,試卷及成績留存容易出現丟失、損毀等現象;三是考試結果難以得到全面分析,不容易指出教學過程中存在的問題。
因此,開發(fā)一款適合我校實際需求的在線考試系統(tǒng)是非常有必要的。河工軟院大學生在線考試系統(tǒng)借助互聯(lián)網的壞境讓考試過程更加的輕松、節(jié)省人力與設備費用、提高處理分析速度、提升工作效率與人員利用率。
1.2 國內外研究現狀
當今計算機行業(yè)發(fā)展迅猛,在線考試系統(tǒng)逐步走入教育業(yè)內人員的視野。到今天為止,在線考試系統(tǒng)的發(fā)展歷程已經很悠久了,智能考試已經成為教育評測的重要途徑。從現狀來看,雖然在線考試系統(tǒng)的名目繁多,各種技術也層出不窮,但最基本的模式仍然是C/S和B/S?;谠诰€考試系統(tǒng)的便利性,許多大型國際考試機構都采用了在線考試系統(tǒng),如著名的思科CCNA證書、CCNP證書和托福。當然,考試系統(tǒng)在中國的一些專業(yè)領域也得到了應用。
1.2.1 國外研究現狀分析
國外之前有不少的在線考試系統(tǒng)也都是使用的Client/Server(客戶機/服務器)模式,但這種的教學模式相對來說在操作上比較簡單,而且能夠使學校完全沒有地理方面的限制問題,使學員即使在家也清楚地知道自身的缺點。由于對這種模式要求較高,所以往往使用于某些國家統(tǒng)一的、相對公開的試題,而采用了Web的在線考試系統(tǒng),通常都是給學生和本國學校練習和教學用的系統(tǒng)。在這方面,就像其他所有高科技產品那樣,美國已經再一次邁向了當今世界的最前端。
1.2.2 國內研究現狀分析
現在國內比較流行的模式是Brower/Server(瀏覽器/服務器)模式,Web不僅僅是在表面實現了原本的客戶端模式,并且還能夠和數據庫和很多的相應應用軟件相結合。Web實現的在線考試系統(tǒng)在維護方面比較簡單。因為以前的客戶端模式一旦出現問題,就需要全面進行更換,包括客戶界面。但是Web的話就只需要更換代碼就可以了。不僅僅如此,如果涉及更新的話,相對來說也更為簡單。
現在市場上的現有的考試系統(tǒng)普遍使用隨機抽取或者手動錄入的方式組卷。這樣的方式一方面不能保證試卷的難易程度是否能達到測試學生真實水平的目的,另一方面加重了教師的工作量,使組卷這一步驟變得繁瑣,使用遺傳算法實現的隨機組卷功能就不會有這方面的顧慮。大多數的考試系統(tǒng)也都擁有自動判卷功能,但都是客觀題的自動判分,無法實現主觀題,如簡答題、編程題的自動判分。本系統(tǒng)不僅可以自動判分,而且還可以自動進行成績分析,教師直接查看想要查看的分析結果即可。
1.3 開發(fā)工具與技術
1.3.1 開發(fā)工具
河工軟院在線考試系統(tǒng)在開發(fā)過程中使用了一些比較主流的開發(fā)工具。Eclipse就是一個開源的,功能強大的開發(fā)平臺,MySQL更是一般中小型網站開發(fā)的首選數據庫,Navicat是專為簡化數據庫的管理及降低系統(tǒng)管理成本而設計的。系統(tǒng)開發(fā)所使用的開發(fā)工具如下表1.1所示。

1.3.2 后端開發(fā)
Java語言具有功能強大和簡單易用兩個特征,具有簡單性、面向對象、分布式等特點,不僅可以編寫Web應用程序,還可以編寫桌面應用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應用程序。系統(tǒng)后端開發(fā)所使用的架構/語言如下表1.2所示。

1.3.3 前端開發(fā)
在客戶端瀏覽器向服務器提出服務請求時,客戶端瀏覽器通常要檢查用戶輸入的合法性、完整性、安全性等問題。在客戶端中這種檢查不經過服務器,是由客戶端瀏覽器中執(zhí)行,而執(zhí)行這種檢查的客戶端的網頁腳本程序,使用客戶端網頁腳本語言進行編寫,也就是JavaScript,它是系統(tǒng)開發(fā)所使用的前端語言之一。
Layui是一個輕量級的前端框架,十分簡單容易上手,并且UI簡潔美觀,在服務端頁面上有非常好的效果。系統(tǒng)開發(fā)所使用的前端框架/語言如下表1.3所示。

1.3.4 服務器
河工軟院開發(fā)所使用的服務器是Tomcat服務器的8.5版本,Tomcat在運行時占用的系統(tǒng)資源小,擴展性好,支持負載均衡與郵件服務等開發(fā)應用系統(tǒng)常用的功能。它是一個開源的Web服務器,在中小型系統(tǒng)和并發(fā)訪問用戶不是很多的場合下被普遍使用,是開發(fā)和調試JSP程序的首選。
1.4 本章小結
本章主要是對河工軟院大學生在線考試系統(tǒng)的背景、意義、國內外在線考試系統(tǒng)現狀和所使用技術的闡述。
第2章 系統(tǒng)需求分析
需求分析不僅是軟件規(guī)劃階段的一項重要活動,也是軟件生命周期中的一個重要環(huán)節(jié)。確定系統(tǒng)可行之后,就要結合用戶的需求確定河工軟院大學生在線考試系統(tǒng)的主要業(yè)務流程、功能模塊、性能需求、界面需求等。
2.1 需求分析
考試,是嚴格鑒定知識水平的方法,檢驗學生學習成績的一種途徑,是一種體現學校教學能力的方式。經過與學院教師的交流、學生的親身經歷與相關資料的分析,可以確定河工軟院大學生在線考試系統(tǒng)的主要業(yè)務流程如圖2.1所示。

教務管理人員根據學校相關規(guī)定安排下發(fā)考試相關通知,通知內容大致為考試時間、考試范圍、考試形式、注意事項,接到通知的本校教師為自己所教授的課程組卷,自動組卷完成后交由教師審核試卷是否達標,教師需在考試時間之前一周左右下發(fā)考試通知,通知學生準時參加考試,收到通知的學生在規(guī)定時間內參與該教師組織的考試,考生作答結束交卷之后,系統(tǒng)統(tǒng)計考生分數,考試結束后,將統(tǒng)計后的成績分類發(fā)送給教師、教務管理人員留底,教師決定何時將成績下發(fā)給考生查看,考生成功查詢到自己的成績,至此考試結束。
2.2 系統(tǒng)用例分析
依據上述主要業(yè)務流程可以擴展出以下操作:
學生進入河工軟院大學生在線考試系統(tǒng)必定需要參與考試,學生在考試中心參與考試??荚嚱Y束后,教師審核系統(tǒng)自動生成的成績分析,無誤后發(fā)布成績,學生可以在考試記錄內查看自己所有的試卷成績結果,如果學生想要知道自己有哪些錯題,可以在錯題本里查看錯題與解析。平常學生可以在平時練習模塊內按分類抽取題庫試題,進行練習,錯題也會總結在錯題本內。學生擁有個人中心模塊用來查看、更改個人信息;學生可以在消息中心接受教師發(fā)布的通知如圖2.2所示。

教師進入到在線考試系統(tǒng)內,應當可以實現對學生信息的管理與對班級信息的管理。教師可以在在線考試系統(tǒng)內進行卷題管理(包括卷庫管理、題庫管理),卷庫管理應當包含手動/隨機生成試卷。教師可以在答卷管理模塊中查看系統(tǒng)自動生成的成績分析,確認無誤后可以在此模塊發(fā)布成績,讓學生查看成績。教師可以在成績分析模塊查看自己管轄的班級平均分、各分段人數信息的圖表展示如圖2.3所示。

進入系統(tǒng)后,教務管理人員可以管理用戶信息。也可以對卷題信息進行管理(試卷信息、題庫信息)。教務管理人員可以對不同年級的學科信息進行管理。用消息中心給教師通知,用個人中心對個人信息修改。
教務管理人員用例展示如圖2.4所示。

以上三個角色的用例圖對應的部分用例描述如表2.1-2.11所示。











2.3 性能需求
2.3.1 硬件環(huán)境
計算機及其外圍設備組成的計算機物理系統(tǒng),即硬件設施,系統(tǒng)的開發(fā)運行離不開硬件設施。運行本系統(tǒng)所需的硬件設施最低配置如下表2.12所示。

2.3.2 軟件環(huán)境
系統(tǒng)的運行環(huán)境,也就是程序的運行平臺,我們通常所說的系統(tǒng)是指應用程序,就是在運行平臺上進行二次開發(fā)出來的應用軟件。本系統(tǒng)對運行平臺的最低配置要求如下表2.13所示。

2.3.3 性能需求
系統(tǒng)的需求分析有兩類,一類是功能性需求,一類是非功能性需求,也就是性能需求。本系統(tǒng)的性能需求如下表2.14所示。

2.3.4 可靠性需求
可靠性需求是指系統(tǒng)在規(guī)定條件下和規(guī)定時間內,完成規(guī)定功能的能力。本系統(tǒng)的可靠性需求如下表2.15所示。

2.4 本章小結
本章主要闡述了系統(tǒng)的業(yè)務流程、功能模塊和性能要求。
第3章 概要設計
概要設計是依據功能將繁雜系統(tǒng)劃分,建立層次結構與調用關系,并根據用戶交互過程和用戶需求形成交互框架和可視化框架。概要設計建立了目標系統(tǒng)的邏輯模型。
3.1 系統(tǒng)模塊劃分
本系統(tǒng)的功能模塊如下所示:
身份認證模塊:用戶選擇身份,進行身份認證;
考試管理模塊:大學生在此進行平時在線練習和考試,考試完畢系統(tǒng)自動判分并進行成績分析,將不同的圖形分析結果和成績報告分發(fā)給不同的用戶;
試卷管理模塊:對試卷信息的數據操作,教師在此安排系統(tǒng)進行隨機組卷操作;
題庫管理模塊:教務管理人員在此模塊進行題庫信息的數據操作,教務管理人員可以定時開放題庫的導入試題功能,教師可在此時導入試題;
班級管理模塊:可以批量導入當前教師帶來的大學生信息,操作大學生信息、班級信息,導出打??;
課程管理模塊:對課程信息的數據操作;
用戶管理模塊:對系統(tǒng)用戶的數據操作,教務管理人員可以批量導入教師、大學生的登錄賬號并設置默認密碼;
通知管理模塊:教務管理人員發(fā)送通知給教師,教師發(fā)送通知給大學生,大學生與教師可以查看自己接收到的通知。
經過分析,系統(tǒng)功能結構如圖3.1所示。

3.2 界面設計
經過與河工軟院的教師、學生,交流討論,對于河工軟院大學生在線考試系統(tǒng),用戶希望界面能滿足以下要求:
1.?系統(tǒng)登入之后界面左上角放置“河工華軟”的LOGO;
2.?導航欄放置在左側,用戶信息放置在右上角,顯示頭像和賬號名;
3.?配色設置為可切換版本,以白色為主;
4.?界面要簡潔、美觀、大氣且符合行業(yè)特點;
5.?相關操作提示要一目了然,方便無基礎人員上手操作,減少錯誤選擇的可能性;
6.?界面所有文字使用簡中文字。
部分界面界面設計結果如圖3.2-3.6所示。





3.3 本章小結
本章主要是根據需求分析結果對河工軟院大學生在線考試系統(tǒng)的功能模塊進行劃分,系統(tǒng)部分界面設計圖的展示。
第4章 數據庫設計
計算機中長期存儲的大批數據的整體是數據庫。對于任何系統(tǒng)來說,數據庫的設計和使用都是非常重要的。在河工軟院大學生在線考試系統(tǒng)中,需要存儲大量的試題、試卷及成績結果分析。所以,應該設計一個既符合范式要求又易于擴展的數據庫。河工軟院大學生在線考試系統(tǒng)使用MySQL數據庫。
4.1 數據庫需求分析
根據系統(tǒng)需求分析可以得出,河工軟院大學生在線考試系統(tǒng)有三個角色,分別是教務管理人員、教師、學生,它們分別對應三個實體。
進行考試活動需要對考試信息、試卷信息進行存儲調用,涉及了考試、試卷兩個實體。
系統(tǒng)要為教師提供試卷的手動組卷/隨機組卷,就需要在系統(tǒng)內存儲調用題庫與試題信息,可以確定題庫、試題兩個實體。
成績單的生成需要考生答卷信息與其對應的考試信息,可以確定成績單實體與考生答卷兩個實體。
成績分析的結果需要調用課程信息、班級信息、成績單信息、學生答卷信息、考試信息,可以確定成績分析結果、課程、班級三個實體。
學生通過系統(tǒng)進行在線練習與考試除上述信息以外,還會產出錯題信息,由此可以確定在線聯(lián)系、錯題兩個實體。
三個用戶通過系統(tǒng)發(fā)送/接受通知消息,也就需要系統(tǒng)具有存儲調用通知信息的功能,由此可以確定通知實體。
經過分析可以得出,河工軟院大學生在線考試系統(tǒng)共有15個實體。
4.2 概念結構設計
4.2.1 E-R模型
E-R模型是實體的聯(lián)系圖,有實體、關系、屬性三個基本結構,用于描述靜態(tài)數據結構。
河工軟院大學生在線考試系統(tǒng)的E-R模型(未加屬性)如圖4.1所示。
4.2.2 邏輯結構設計
轉換之后的結果也要滿足規(guī)范。因此,數據庫實體聯(lián)系轉換為關系模式的結果如下。

教務管理人員信息表(admin):(id,教務管理人員編號,account,password,email,gender)
教師信息表(teacher):(id,教職工號,account,password,email,gender)
學生信息表(student):(id,學號,account,password,email,gender)
班級信息表(classes):(id,班級編號,className,classDescription,belongTeacher)
學生班級對應信息表(student_class):(id,student_id,class_id)
考試信息表(exam):(id,試卷編號,考試名稱,開始時間,停止時間,oneSelectGrade,moreSelectGrade,judgeGrade,fullGrade,shortGrade,總分,難度,題目列表)
試卷課程對應信息表(exam_course):(id,course_id,exam_id)
題庫信息表(question):(id,題庫編號,題型,選項1,選項2,選項3,選項4,選項5,答案,難度,解析,所屬課程)
學生答卷信息表(record):(id,exam_id,student_id,學生答案,錯誤題號,正確題號,總分)
課程信息表(course):(id,課程編號,課程名,總學時,學分,課程性質)
錯題信息表(wrong_question):(id,student_id,exercise_id,question_id,錯題編號)
通知信息表(notice):(通知編號,通知標題,通知內容,發(fā)布人)
在線練習信息表(exercise):(id,student_id,question_id,練習編號,抽取題數,題目列表,總分,開始時間,停止時間)
成績單信息表(grade):(id,record_id,exam_id,成績單編號,學年學期、打印日期、開課單位、考試班級)
成績分析信息表(analysis):(id,teacher_id,admin_id,成績分析編號,classRank,examNum,excellentNum,goodNum,passedNum,nopassedNum,absenteesNum,avgScore)
成績分析對應表(grade_analysis):(id,grade_id,analysis_id)
4.3 物理結構設計
數據庫的設計工作包含兩方面的內容,分別是邏輯結構設計與物理結構設計。
邏輯設計是設計邏輯機構,與具體的DBMS無關,主要反映業(yè)務邏輯,而物理設計是根據邏輯結構設計得來的,根據數據庫的邏輯結構來選定RDBMS并設計和實施數據庫的存儲結構、存取方式等。存儲結構設計結果如表4.1-4.12所示。












4.4 本章小結
本章主要闡述了數據庫的邏輯結構設計和物理結構設計,為系統(tǒng)的數據安全存儲和后臺開發(fā)奠定了基礎。
第5章 系統(tǒng)算法設計
技術的發(fā)展與疫情的影響導致在線考試正逐漸取代線下考試。對于一個在線考試系統(tǒng)來說,試卷的質量可以說代表了系統(tǒng)的質量。如果說只是單純的從題庫中抽取一定數量的試題,簡單排列組合一下,就稱之為一套試卷,這樣得到的試卷基本達不到在線測評的要求。遺傳算法的自進化與并行執(zhí)行,非常適合解決隨機組卷的問題。
5.1 遺傳算法實現隨機組卷
遺傳算法講究優(yōu)勝劣汰,適者生存,適用于在多約束條件下,尋求種族群體的最優(yōu)解。通過選擇、交叉與變異等操作,使得種群中的個體適應度不斷提高,最終獲得一個滿足適應度要求的相對來說最優(yōu)秀的個體。將遺傳算法應用于隨機組卷當中,就可以獲取一個相對最優(yōu)解,節(jié)省了教師的時間還可以出一張符合要求的試卷。
5.1.1 算法概述
自然界中具有復雜結構的生物基本都要經過長時間的進化,遺傳算法最主要的操作就是選擇、交叉、變異,該算法通過這三個操作來模擬生物進化的過程,雖然對于生物進化的研究還沒有完全清楚,但上述部分特征已經被人所掌握。自然界中的人類通過繁衍將基因遺傳給下一代,通過父母雙親的基因交叉重組,繁衍出具有父母某些特征與基因的孩子,這些孩子可能遺傳了父母的優(yōu)良基因,也可能會遺傳不好的基因,還有一定概率會發(fā)生變異,通過評測適應度來判斷這些孩子對環(huán)境的適應能力,留下適應能力強的孩子,淘汰適應能力差的孩子,經過N次循環(huán)之后,就可以通過這個過程獲得適應性較強的個體。遺傳算法程序流程圖,如圖5.1所示。
5.1.2 實現隨機組卷的過程設計
第一件事是把染色體串編碼成一個抽象代碼。遺傳算法選擇一套最優(yōu)的試卷,試卷的試題題號作為這個染色體的基因值。如果有3個選擇題、3個判斷題和2個簡短回答題,其染色體代碼為:
{12,43,64|325,23,231|63,74}
選擇問題 ??判斷問題 ???簡答問題
最初的種群不是隨機的,根據被編對象的科目、題型、總分、時間、難度與章節(jié)權重分布隨機生成,使最初種群在一開始就能滿足一些要求,這樣可以減少迭代循壞的次數,更快的找到最優(yōu)的試卷。

1.?編碼實現初始化種群
根據要考試的科目、考試題型與章節(jié)權重分布,從題庫中抽取相應數量的試題(比如某課程第五章比較重要,要占試卷選擇題考核內容的百分之30%,選擇題總共有100個,就從題庫中抽取30個第五章的選擇題),由簡單的隨機抽取函數,隨機排列組合成n個初始化種群試卷,一套完整的試卷就是一個染色體。定義一個計算適應度的公式(也就是判斷試卷難度是否達到標準的公式或標準),判斷初始化種群中適應度,適應度越高,被選擇的幾率就越高。
2.?選擇
選出其中幾套適應度最高的試卷(例如系統(tǒng)隨機生成了8套試卷,我們淘汰掉其余4套適應度低的試卷,選擇適應度最高4套試卷作為新的初始種群)。一次繁衍之后如果沒達到適應度要求,則新的種群要接著執(zhí)行選擇操作。4套試卷繁衍之后初始種群由4變?yōu)榱?,選擇其中適應度最高的4套試卷保留為新的初始種群,進行交叉、變異操作。
3.?交叉
從選出的幾套適應度最高的試卷中抽取其中兩套作為“父母”試卷,這兩套卷子暫時依舊保留在種群內,但不會再繼續(xù)被抽取,將它們兩個進行交叉得出兩個“孩子”(比如第一個孩子的選擇題前一部分用第一套試卷的,選擇題后一部分用第二套試卷的,其它題型操作相同;第二個孩子的選擇題前一部分用第二套試卷的,后一部分用第一套試卷的,其它題型操作相同),將這兩個“孩子”加入初始種群內,重復第一步抽取兩套“父母”試卷,直到所有“父母”試卷都擁有兩個“孩子”,此時,所有的“孩子”也都被添加入了初始種群之中。
根據分析進行系統(tǒng)優(yōu)化,遺傳算法實現隨機組卷步驟流程如圖5.2所示。

1.?變異
設定一個隨機概率,有概率兩個“父母”在生育兩個“孩子”時,“孩子”會帶有其它“父母”的基因。比如A、B、C、D四套“父母”試卷,A、B在孕育“孩子”時,“孩子”有可能會一定的概率出現某幾個試題是C或D的試題。
2.?評估種群中個體適應度
將現在包含所有“父母”與“孩子”的初始化種群按照適應度從高到低排序,判斷適應度最高的試卷是否已經達到要求,如果達到要求,直接導出這套試卷作為考試試卷,如果未能達到要求,則繼續(xù)進行選擇、交叉、變異操作,生成新的后代。
5.2 本章小結
本章主要闡述了為什么系統(tǒng)要使用遺傳算法,算法的一些簡介、實現過程的設計,為系統(tǒng)的開發(fā)與實現奠定了基礎。
第6章 系統(tǒng)開發(fā)與實現
本章內容是根據所選編程語言完成系統(tǒng)源代碼編碼的過程。將軟件設計結果轉換成計算機可以運行的代碼。源碼應符合標準和規(guī)范,加上適當的中文注釋,以保證程序的可讀性、易維護性。
6.1 前臺開發(fā)與實現
前端開發(fā)是向用戶展示系統(tǒng)界面或移動界面,實現用戶交互的過程。以前的網站內容是靜態(tài)的,主瀏覽。隨著科技的發(fā)展,今天的網頁更加美觀和強大。系統(tǒng)在開發(fā)時采用了Layui前端UI解決方案來實現前端界面的交互。
6.1.1 身份認證模塊
用戶進入河工軟院大學生在線考試系統(tǒng)網址,根據界面指導進行登錄操作。輸入用戶名,密碼,選擇角色,單擊“登入”,進入系統(tǒng),調用各個功能模塊。用戶登入系統(tǒng)的順序圖如圖6.1所示。

當用戶在操作前端界面進行登錄操作時,后臺將用戶所填寫在界面上的登入信息數據傳遞給服務層拉取數據庫數據進行處理、比對,比對結束服務層再將驗證結果反饋到界面上供用戶查看。
登錄模塊系統(tǒng)運行展示如圖6.2所示。

登錄模塊前端部分實現代碼設計如下:
$.ajax({
url: "${pageContext.request.contextPath}/logindo",
data: {
username: $("input[name=username]").val(),
password: $("input[name=password]").val(),
type:$("input[name=type]:checked").val(),
},
type: "POST",
success: function (result) {
if(result=="student"){
layer.msg("登錄成功");
window.location.href="student";
}
6.1.2 在線考試模塊
考生進入系統(tǒng)之后進入學生首界面,參加考試需要在左側菜單欄中選擇我的考試進入“我的考試”界面,“我的考試”界面默認不顯示正在進行的考試信息,需要學生選擇自己的班級信息。這是考慮到學生因重修課、選修課原因不僅僅加入了一個班級??荚嚨男畔⑴c班級掛鉤,所以先選擇班級之后,系統(tǒng)根據選擇的班級調用顯示考試信息,學生選擇其一,單擊“點擊考試”進行考試。
查看班級當前考試信息順序圖如圖6.3所示。

查看班級當前考試信息系統(tǒng)運行展示如圖6.4所示。

查看班級當前考試信息前端部分實現代碼設計如下:
// 監(jiān)聽班級選擇事件
form.on("select(selectClassId)", function (data) {
// 將班級id保存到會話中
sessionStorage.setItem("examClassId", data.value);
});
選擇班級之后單擊搜索按鈕,系統(tǒng)會查詢該班級下的所有考試信息,找到要參加的考試,單擊標題后的“點擊考試”按鈕,確認參加考試后,即可開始考試。未開始的開始無法進入。正在進行中的考試會有倒計時,需在倒計時內參與并完成考試。已完成的考試可以查看正確答案與解析,但不可再答題。
學生在線考試順序圖如圖6.5所示。

學生在線考試前端答題點擊事件部分實現代碼設計如下:
$('li.option').click(function () {
var exam = $(this).closest('.test_content_nr_main').closest('li'); // 得到題目ID
var examId = exam.attr('id')
var cardLi = $('a[href="#' + examId + '"]'); // 根據題目ID找到對應答題卡
if (!cardLi.hasClass('hasBeenAnswer')) {
cardLi.addClass('hasBeenAnswer');
}});
學生在線考試系統(tǒng)運行展示如圖6.6所示。

6.1.3 題庫管理模塊
在教務管理人員登入系統(tǒng)成功之后,就可以利用試題管理功能,管理題庫中的試題。試題設有難度分級,老師組卷時系統(tǒng)會根據試題的難易程度進行抽取,使試卷整體難度符合老師的要求。
題庫管理的順序圖如圖6.7所示。

題庫管理前端部分實現代碼設計如下:
table.on('toolbar(currentTableFilter)', function (obj) {
if (obj.event === 'add') { ?// 監(jiān)聽添加操作
var index = layer.open({
title: '添加題目',
type: 2,
? ? shade: 0.2,
??? ?maxmin:false,
shadeClose: true,
area: ['100%', '100%'],
content: '/OLES/teacher/tikuAdd?modify=false',
});
題庫管理添加試題系統(tǒng)運行展示如圖6.8所示。

6.2 后臺開發(fā)與實現
系統(tǒng)的后臺主要是對前端的信息管理,使得前端能夠得到及時更新和調整。本章內容主要對河工軟院大學生在線考試系統(tǒng)的其中幾個模塊的后臺實現過程。
6.2.1 身份認證模塊
當用戶進入系統(tǒng)的時候,首先要在登錄界面驗證身份,只有匹配數據庫身份信息的用戶才可登入系統(tǒng)。后臺對登錄表單與數據庫信息進行比對,比對成功時,使用session保存其身份,返回其身份信息,跳轉到角色相應的首頁。
身份認證的控制層實現代碼如下:
@RequestMapping(value = "/logindo", method = RequestMethod.POST)
@ResponseBody
public String logindo(HttpSession session, @RequestParam("username") String username,
??????????????????????????@RequestParam("password") String password,
??????????????????????????@RequestParam("type") String type) {
if (type.equals("1")) {
Student student = loginService.findStudent(username, password);
if (student != null) {
session.setAttribute("student", student);
return "student";
}
return "fail";
}
6.2.2 考試管理模塊
考試管理模塊有很多的內容,簡述一下通過班級id查詢當前班級的考試信息的實現過程。首先根據當前頁及當前頁限制的數據條數進行分頁處理。之后通過Mapper文件去數據庫調用傳入班級id對應的考試信息,以列表形式返回存儲。通過PageInfo對返回的結果進行包裝,統(tǒng)計返回信息數,配置返回的結果,最后return返回考試信息結果。
通過班級id查詢當前班級的考試信息的接口實現層實現代碼如下:
public MultipleDataResult<Exam> findExamInfoByClassId(Integer classId, Integer page, Integer limit) {
MultipleDataResult<Exam> result = new MultipleDataResult<>();
PageHelper.startPage(page, limit);
List<Exam> exams = examMapper.findExamInfoByClassId(classId);
PageInfo<Exam> pageInfo = new PageInfo<>(exams);
result.setTotal((int) pageInfo.getTotal());
result.setData(pageInfo.getList());
if (pageInfo.getList().size() > 0) {
result.setCode(0);
result.setMessage("查詢成功");
} else {
result.setCode(1);
result.setMessage("無結果");
}
return result;}
第二個部分簡述添加一個新考試信息的部分實現過程。首先創(chuàng)建一個考試和已存在班級的關聯(lián)實體,加入班級id和考試信息之后判斷是否插入成功。成功的話就查詢最近添加的考試id信息與班級信息。判斷班級是否存在,存在的話就設置考試id為剛剛添加的考試信息id,添加考試信息,否則就刪除當前考試信息,提醒用戶添加失敗,原因是班級不存在。若一開始加入班級id和考試信息時就未插入成功,則提醒用戶考試信息添加失敗。
新增考試信息的接口實現層實現代碼如下:
public BaseResult addExam(Exam exam, Integer classId) {
BaseResult result = new BaseResult();
ExamClass examClass = new ExamClass();
examClass.setClassid(classId);
int examRes = examMapper.insert(exam);
if (examRes > 0) {
Integer examId = examMapper.findExamRecent();
// 查詢當前班級信息
Classes classes = classesMapper.selectById(classId);
// 判斷班級是否存在
if (classes != null) {
// 設置考試id
examClass.setExamid(examId);
int insert = examClassMapper.insert(examClass);
if (insert > 0) {
? ? ?result.setCode(0);
result.setMessage("考試信息添加成功,可以開始選題了");
}
6.2.3 題庫管理模塊
對于考試系統(tǒng)來說,題庫的管理也是至關重要的,題庫的管理過程如下所述:
根據前端傳入的數據,判斷要對試題進行的操作。當要添加一個試題時,直接使用BaseMapper.insert()方法將新增的試題實體question加入試題列表中,使用這種方法就不用再寫復雜的Mapper文件,可以直接在接口實現類中實現增查刪改操作,特別的方便。
該方法參數為實體,返回值為操作的記錄條數,根據返回的記錄條數判斷是或否插入成功,再返回題目添加成功與否的message,修改與刪除同理。
題庫管理中添加試題的接口實現類代碼如下:
public BaseResult addQuestion(Question question) {
BaseResult result = new BaseResult();
int insert = questionMapper.insert(question);
if(insert > 0) {
result.setCode(0);
result.setMessage("題目添加成功");
} else {
result.setCode(1);
result.setMessage("題目添加失敗");
}
return result;}
題庫管理中修改試題的接口實現類代碼如下:
public BaseResult modifyQuestion(Question question) {
BaseResult result = new BaseResult();
int insert = questionMapper.updateById(question);
if(insert > 0) {
result.setCode(0);
result.setMessage("題目修改成功");
} else {
result.setCode(1);
result.setMessage("題目修改失敗,該題目不存在");
}
return result;
}
6.3 本章小結
本章主要介紹了系統(tǒng)的前端、后端開發(fā)的重點部分。主要是身份認證、在線考試、題庫管理三大模塊實現過程的闡述,其中在線考試模塊的實現難度較大。
結論
寶貴的大學生活即將結束。筆者介紹了大學的最后一門重要課程——畢業(yè)設計。經過幾個月的奮斗和努力,筆者的畢業(yè)設計終于完成了!回想起設計實現項目的整個過程,有驕傲也有艱辛,不過畢業(yè)設計的樂趣也正是這些驕傲與艱辛。
在剛剛拿到課題《基于SSM的河工軟院大學生在線考試系統(tǒng)設計與實現》的時候,筆者還有些小開心,覺得考試系統(tǒng)多么的簡單啊,應該很容易就可以完成。在經過一段時間的學習與了解之后,筆者才明白,它并沒有筆者想象的那么簡單。確定課題之后便是對資料的收集與學習,這也是畢業(yè)設計的準備工作,資料的全面性與可靠性是整個畢業(yè)設計的地基,筆者搜集資料的方法便是在網上電子圖書館內查閱往年論文與期刊資料。收集好資料之后就是對資料的整理、學習和分析,有了這些知識的支撐,再加上老師的指導,如何做畢業(yè)設計的思路就相當的清晰了,也鑒定了筆者一定要做好畢業(yè)設計的決心。前期的準備工作完成之后,就是對項目的設計實現了,有了資料的支撐,加上老師的細心指導,項目最終設計實現完成。
通過這次畢業(yè)設計,筆者明白了學習的重要性,人一定要活到老,學到老。人們需要在未來的工作和生活中不斷學習,以提高自己的知識水平。筆者從畢業(yè)設計中也學到了很多知識,提高了筆者的獨立思考能力和實際應用能力。雖然這個項目并不完美,但在設計過程中所學到的知識是筆者的財富,這對筆者一生都是有益的。
參考文獻
[1]張巧霞.高校在線考試系統(tǒng)的設計與實現[D].西安:西安電子科技大學,2018.
[2]周紅益.基于ThinkPHP框架的在線考試系統(tǒng)設計與實現[D].鄭州:廣東工業(yè)大學,2019.
[3]張彩萍.基于J2EE的遠程教育在線考試系統(tǒng)的設計與實現[D].大連:大連理工大學,2015.
[4]郝麗麗.基于改進的遺傳算法的在線考試系統(tǒng)的設計與實現[D].石家莊:河北科技大學,2017.
[5]張寶仁.基于試題難度分級的在線考試系統(tǒng)設計與實現[D].蘭州:蘭州大學,2019.
[6]許光林.在線考試系統(tǒng)的設計與實現[D].青島:青島大學,2018.
[7]陸喆.某高校在線考試系統(tǒng)的設計與實現[D].廈門:廈門大學,2016.
[8]丁蔓.在線考試系統(tǒng)的設計與實現[D].廈門:廈門大學,2015.
[9]房振偉.基于Web的在線考試系統(tǒng)的設計與實現[D].南京:東南大學,2016.
[10]葉春榮.江西通工校在線考試系統(tǒng)的設計與實現 [D].大連:大連理工大學,2016.
[11]陽冉.在線考試系統(tǒng)的設計與實現[D].綿陽:西南科技大學,2018.
[12]劉思婷.在線考試系統(tǒng)中若干技術研究與優(yōu)化[D].合肥:中國科學技術大學,2016.
[13]文慧.基于智能組卷的地稅干部在線考試系統(tǒng)的設計與實現[D].上海:上海交通大學,2015.
[14]劉思婷,顧乃杰,林傳文.在線考試系統(tǒng)中試題上傳方法的優(yōu)化[J].計算機工程與應用.2016(21):241-246.
[15]Cheng Qian,Wang Ziying,Wang Xiaodan.Design of Digital Circuit Online Examination System[J].Interna-
tional Journal of Engineering and Technology.2019(11):15-22.
[16]Thandar Htwe.Online Examination System for English Grammar[J].International Journal of Trend in Scientific Research and Development.2019(15):3-7.
[17]V. Nandini.Automatic assessment of descriptive answers in online examination system using semantic relational features[J].The Journal of Supercomputing.2018(76):1-19.
[18]Paleti Tarun.On-line examination system of security application[J].International Journal of Engineering & Technology.2018(22):166-167.
致謝
“相見太匆忙了,學校里的花兒都紅了好幾次了。友誼生活在靈魂的夢里,沉重的恩情永遠在我心中。”
在這次畢業(yè)設計的整個過程中,我首先要感謝的是我的導師。感謝老師耐心地指出我的不足,并在我設計和實現畢業(yè)設計的整個過程中提出了有價值的改進建議。讓我明確了項目設計的總方向與論文寫作的思路,
其次要感謝的就是我的同學與舍友,她們是我的大學生活中最不可或缺的一部分。在這匆匆四年的大學生活之中,她們?yōu)槲业膶W習和生活提供了很多的幫助和支持。謝謝你們,祝你們能像“莫愁前路無知己,天下誰人不識君。”這句詩一樣,前程似錦。
最后要感謝的是我的父母,父母的關心和包容,是我一直不斷進行的動力,也是他們的支持與付出,才讓我一直堅定不移的在當前的道路上前行。
?