(附源码)springboot学生宿舍管理系统 毕业设计453155
Springboot學(xué)生宿舍管理系統(tǒng)
摘 ?要
科技進(jìn)步的飛速發(fā)展引起人們?nèi)粘I畹木薮笞兓?#xff0c;電子信息技術(shù)的飛速發(fā)展使得電子信息技術(shù)的各個(gè)領(lǐng)域的應(yīng)用水平得到普及和應(yīng)用。信息時(shí)代的到來(lái)已成為不可阻擋的時(shí)尚潮流,人類發(fā)展的歷史正進(jìn)入一個(gè)新時(shí)代。在現(xiàn)實(shí)運(yùn)用中,應(yīng)用軟件的工作規(guī)則和開發(fā)步驟,采用Springboot框架建設(shè)學(xué)生宿舍管理系統(tǒng)。
本設(shè)計(jì)主要實(shí)現(xiàn)集人性化、高效率、便捷等優(yōu)點(diǎn)于一身的學(xué)生宿舍管理系統(tǒng),完成首頁(yè)、用戶管理(管理員)更多管理(學(xué)生、宿舍信息、更換寢室、體溫上報(bào)、維修申請(qǐng)管理、物品借用、宿舍繳費(fèi)管理)等功能模塊。系統(tǒng)通過瀏覽器與服務(wù)器進(jìn)行通信,實(shí)現(xiàn)數(shù)據(jù)的交互與變更。本系統(tǒng)通過科學(xué)的管理方式、便捷的服務(wù)提高了工作效率,減少了數(shù)據(jù)存儲(chǔ)上的錯(cuò)誤和遺漏。學(xué)生宿舍管理系統(tǒng)開發(fā)是采用java語(yǔ)言,基于MVVM模式進(jìn)行開發(fā),采取MySQL作為后臺(tái)數(shù)據(jù)的主要存儲(chǔ)單元,采用Springboot框架實(shí)現(xiàn)了本系統(tǒng)的全部功能。
關(guān)鍵詞 :宿舍管理;數(shù)據(jù)庫(kù);Springboot技術(shù)?
Springboot student dormitory management system
Abstract
??The rapid development of scientific and technological progress has caused great changes in people's daily life. The rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The advent of the information age has become an irresistible fashion trend, and the history of human development is entering a new era. In practical application, according to the working rules and development steps of the application software, the springboot framework is used to build the student dormitory management system.
This design mainly realizes the student dormitory management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, user management (administrator) and more management (students, dormitory information, dormitory replacement, body temperature reporting, maintenance application management, article borrowing, dormitory payment management). The system communicates with the server through the browser to realize the interaction and change of data. Through scientific management and convenient service, the system improves work efficiency and reduces errors and omissions in data storage. The development of student dormitory management system adopts Java language and MVVM mode. MySQL is used as the main storage unit of background data, and the springboot framework is used to realize all the functions of the system.
Key words:Dormitory management; database Springboot Technology
目 ???錄
1 概述
1.1課題背景及意義
1.2 研究現(xiàn)狀
1.3 主要工作內(nèi)容
2 系統(tǒng)開發(fā)環(huán)境
2.1 java簡(jiǎn)介
2.2 Mysql數(shù)據(jù)庫(kù)
2.3 B/S結(jié)構(gòu)
2.4?Spring boot框架
3 系統(tǒng)分析 6
3.1 可行性分析 6
3.1.1 技術(shù)可行性 6
3.1.2操作可行性 6
3.1.3 經(jīng)濟(jì)可行性 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管理員用例圖
3.3.2用戶前臺(tái)用例圖
4 系統(tǒng)設(shè)計(jì)
4.1 系統(tǒng)概述
4.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
4.3數(shù)據(jù)庫(kù)設(shè)計(jì) 14
4.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)原則
4.3.2 數(shù)據(jù)庫(kù)實(shí)體
4.3.3 數(shù)據(jù)庫(kù)表設(shè)計(jì)
5系統(tǒng)統(tǒng)詳細(xì)設(shè)計(jì) 25
5.1用戶前臺(tái)功能模塊 25
5.2管理員功能模塊 28
6系統(tǒng)測(cè)試 33
6.1系統(tǒng)測(cè)試的意義
6.2 測(cè)試方法 34
6.3測(cè)試分析
結(jié)????論 35
致????謝 36
參考文獻(xiàn) 37
1 概述
1.1課題背景及意義
對(duì)于學(xué)校宿舍處而言,最主要的是管理宿舍的信息。如果使用一般的方法來(lái)管理,會(huì)比較繁瑣,管理起來(lái)也很有可能出錯(cuò)。為了方便宿舍人員的管理工作,提高工作效率,同時(shí)為了更好地為學(xué)生提供服務(wù),有必要開發(fā)學(xué)生宿舍管理系統(tǒng),使學(xué)校的宿舍管理走上信息化之路,克服人為的種種弊端。
學(xué)生宿舍管理系統(tǒng)的開發(fā)不僅可以減少人力、物力和財(cái)力資源的浪費(fèi),更重要的是有助于提高宿舍管理的效率。宿舍管理人員管理學(xué)生信息、管理宿舍信息時(shí)是一項(xiàng)復(fù)雜的組織工作,這種復(fù)雜性不僅僅指學(xué)生學(xué)籍變更快,變更人數(shù)眾多,更突出地表現(xiàn)在宿舍管理主要對(duì)象(即學(xué)生)的數(shù)據(jù)量大,管理起來(lái)帶來(lái)不便,所以開發(fā)一個(gè)實(shí)用、高效的宿舍管理信息系統(tǒng)是很有必要的。
1.2 研究現(xiàn)狀
目前我國(guó)各行各業(yè)的信息化建設(shè)開展得如火如荼,這種信息化的發(fā)展已經(jīng)影響到了各學(xué)校。學(xué)校在對(duì)學(xué)生宿舍進(jìn)行管理時(shí),學(xué)生宿舍的管理一直都是很麻煩的事情,不僅僅管理起來(lái)不易修改和更新,而且學(xué)生需要了解本宿舍的信息時(shí),也需要去學(xué)校宿舍處找專門人員。由于這些操作的繁瑣性,學(xué)生宿舍管理系統(tǒng)的開發(fā)成為各學(xué)校必須的事情,特別是各個(gè)高校。
然而目前許多學(xué)生宿舍管理系統(tǒng)在使用時(shí),效率低下容易出錯(cuò),學(xué)生、教師資料不易整理,大量丟失,這些無(wú)疑都已成為管理學(xué)生宿舍的障礙。這就要求學(xué)校能夠建立高效的學(xué)生宿舍管理系統(tǒng),對(duì)學(xué)生的宿舍、管理等操作及流程進(jìn)行規(guī)范化管理,簡(jiǎn)化業(yè)務(wù)流程,提高工作效率并防止中間的漏洞;迅速、準(zhǔn)確地捕捉用戶要求,并加以高效回應(yīng)。同時(shí)需要不斷完善系統(tǒng),增加模塊,更好的滿足用戶需求,簡(jiǎn)化宿舍人員的管理工作,盡量做到一切信息化。
1.3 主要工作內(nèi)容
學(xué)生宿舍管理系統(tǒng)的開發(fā)及實(shí)現(xiàn),所需要的工作內(nèi)容:
(1)首先是確定選題,確定好所要做的系統(tǒng),并對(duì)系統(tǒng)的背景及現(xiàn)在面臨的一些問題等進(jìn)行系統(tǒng)的初步確認(rèn)。
(2)系統(tǒng)確認(rèn)完成后,結(jié)合系統(tǒng)開發(fā)的需求進(jìn)行確認(rèn)系統(tǒng)開發(fā)所使用的技術(shù),學(xué)生宿舍管理系統(tǒng)的開發(fā)使用Springboot框架,數(shù)據(jù)庫(kù)進(jìn)行平臺(tái)的搭建開發(fā),確認(rèn)好使用的技術(shù)進(jìn)行技術(shù)分析,所使用的技術(shù)是否可以完成系統(tǒng)的實(shí)現(xiàn)。
(3)確定好系統(tǒng)使用的技術(shù),進(jìn)行在線確認(rèn)系統(tǒng)所劃分的用戶角色,并且根據(jù)用戶角色劃分確定所要設(shè)計(jì)的功能模塊,對(duì)學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)主要?jiǎng)澐謩e為管理員和用戶角色,并所使用的功能模塊也相應(yīng)不同,但是系統(tǒng)的數(shù)據(jù)庫(kù)實(shí)現(xiàn)的內(nèi)容是交互的,用戶可以隨時(shí)根據(jù)自己的需求進(jìn)行課程信息,對(duì)于系統(tǒng)工作人員可以根據(jù)自己的分管內(nèi)容進(jìn)行在線信息的處理及操作,管理員獲取到所有用戶的詳細(xì)數(shù)據(jù)信息,并根據(jù)需求進(jìn)行第一時(shí)間處理解決。
(4)系統(tǒng)的功能模塊確認(rèn)完成后進(jìn)行程序及界面的設(shè)計(jì),設(shè)計(jì)完成后,并且通過測(cè)試來(lái)判斷程序是否完善,對(duì)于系統(tǒng)測(cè)試,需要不同的用戶進(jìn)行不同的內(nèi)容編輯及提交,及使用不同的測(cè)試方式找出程序中存在的漏洞,并對(duì)程序出現(xiàn)的漏洞問題進(jìn)行在線解決處理,如果測(cè)試系統(tǒng)沒有任何問題時(shí),可以將系統(tǒng)上傳進(jìn)行正式操作使用。
2 系統(tǒng)開發(fā)環(huán)境??
2.1 java簡(jiǎn)介
Java語(yǔ)言是在二十世紀(jì)末由Sun公司發(fā)布的,而且公開源代碼,這一優(yōu)點(diǎn)吸引了許多世界各地優(yōu)秀的編程愛好者,也使得他們開發(fā)出當(dāng)時(shí)一款又一款經(jīng)典好玩的小游戲。Java語(yǔ)言是純面向?qū)ο笳Z(yǔ)言之一,從發(fā)布初期到現(xiàn)今,可以說(shuō)有將近20多年的歷史,已發(fā)展成為人類計(jì)算機(jī)編程語(yǔ)言發(fā)展史上的一個(gè)深遠(yuǎn)影響。
Java語(yǔ)言具有非常多種的特性:(1)跨平臺(tái)的無(wú)關(guān)性;(2)面向?qū)ο?#xff1b; (3)安全性得以保障;(4)支持多個(gè)任務(wù);(5)多種編寫方式,代碼編寫簡(jiǎn)單。對(duì)比其他的低級(jí)語(yǔ)言、高級(jí)語(yǔ)言,Java語(yǔ)言具有明顯的顯著優(yōu)勢(shì)以及未來(lái)開闊的前景,可以廣泛的應(yīng)用在個(gè)人筆記本電腦、大數(shù)據(jù)、大型游戲等等。
首先,Java語(yǔ)言具有面向?qū)ο蟮奶匦?#xff0c;并且易于理解。關(guān)于對(duì)象,其實(shí)可以理解成每一種事物都是一種對(duì)象,包括我們?nèi)祟愖陨矶际且环N對(duì)象。利用面向?qū)ο笳Z(yǔ)言的基本特征來(lái)解決軟件開發(fā)中的實(shí)際問題,為有效軟件開發(fā)提供了技術(shù)支持。
其次,Java 語(yǔ)言具有很好的跨平臺(tái)無(wú)關(guān)性。所編寫出來(lái)的應(yīng)用程序是Java語(yǔ)言編寫的,那么就無(wú)需再使用編譯器來(lái)修改程序代碼,可以直接在任何計(jì)算機(jī)系統(tǒng)中運(yùn)行,Windows系統(tǒng)可以運(yùn)行,在Linux系統(tǒng)中也可以,也就是經(jīng)過一次編譯,可以到處運(yùn)行,所以Java語(yǔ)言具有卓越的可移植性,可以很好的跨平臺(tái)實(shí)現(xiàn)。
2.2 Mysql數(shù)據(jù)庫(kù)
Mysql是一個(gè)多用戶、多線程的服務(wù)器,采用SQL的數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)管理系統(tǒng)是基于SQL的用戶以及服務(wù)器模式的關(guān)系,它的優(yōu)點(diǎn)有強(qiáng)大的功能、操作簡(jiǎn)單、管理方便、可靠安全、運(yùn)行較快、多線程、跨平臺(tái)性、完全網(wǎng)絡(luò)化、穩(wěn)定性等,非常適合Web站點(diǎn)或者其他應(yīng)用軟件,在數(shù)據(jù)庫(kù)后端的開發(fā)。此外,利用許多語(yǔ)言,會(huì)員可以編寫和訪問Mysql數(shù)據(jù)庫(kù)的程序。Mysql數(shù)據(jù)庫(kù)也是開放源代碼的,開發(fā)者越來(lái)越喜歡使用Mysql關(guān)系數(shù)據(jù)庫(kù),應(yīng)用范圍也被推而廣之。這是由于速度快和易用性, Web站點(diǎn)或應(yīng)用軟件的數(shù)據(jù)庫(kù)后端的開發(fā)也都在使用它。
mysql 數(shù)據(jù)庫(kù)它有很多的優(yōu)點(diǎn),例如它在操作上能夠讓人通俗易懂、功能強(qiáng)大、信息儲(chǔ)存量高等優(yōu)點(diǎn)。所以被人們廣泛應(yīng)用,對(duì)于mysql數(shù)據(jù)庫(kù)來(lái)說(shuō)它一般主要是對(duì)數(shù)據(jù)進(jìn)行編碼和查詢,而且在很多的設(shè)計(jì)當(dāng)中都應(yīng)用到了該數(shù)據(jù)庫(kù),在此過程當(dāng)中我們可以對(duì)常規(guī)的數(shù)據(jù)進(jìn)行查詢和組合,所以我們?cè)谶M(jìn)行使用mysql數(shù)據(jù)庫(kù)的時(shí)候只要對(duì)編寫一小段的數(shù)據(jù)就能實(shí)現(xiàn)相應(yīng)的功能。數(shù)據(jù)庫(kù),就是數(shù)據(jù)存儲(chǔ)的儲(chǔ)藏室,只不過數(shù)據(jù)是存儲(chǔ)在計(jì)算機(jī)上的,而不是現(xiàn)實(shí)中的儲(chǔ)藏室,數(shù)據(jù)的存放是按固定格式,而不是無(wú)序的,則定義就是 :長(zhǎng)期有固定格式,可以共享的存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器上。數(shù)據(jù)庫(kù)管理主要包括數(shù)據(jù)表的建立,數(shù)據(jù)存儲(chǔ)、修改和增加數(shù)據(jù),為了使數(shù)據(jù)庫(kù)系統(tǒng)能夠正常運(yùn)行,相關(guān)人員進(jìn)行的管理工作。數(shù)據(jù)表的建立,可以對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行調(diào)整,數(shù)據(jù)的重新組合及重新構(gòu)造,保證數(shù)據(jù)的安全性。
2.3 B/S結(jié)構(gòu)
BROWSER/SERVER程序架構(gòu)方式是使用電腦中安裝的各種瀏覽器來(lái)進(jìn)行訪問和使用的,相比C/S的程序結(jié)構(gòu)不需要進(jìn)行程序的安裝就可以直接使用。BROWSER/SERVER架構(gòu)的運(yùn)行方式是在遠(yuǎn)程的服務(wù)器上進(jìn)行安裝一個(gè),然后在任何接入互聯(lián)網(wǎng)的電腦上訪問和使用。BROWSER/SERVER架構(gòu)的開發(fā)方式給用戶帶來(lái)了極大的便利,在任何時(shí)間和地點(diǎn)都可以使用開發(fā)的程序系統(tǒng)。
在B/S的結(jié)構(gòu)中,用戶可以在任何可以上網(wǎng)的地方訪問和使用系統(tǒng)網(wǎng)站的功能,沒有地域和時(shí)間等方面的限制,B/S結(jié)構(gòu)是把程序完整放置到計(jì)算機(jī)網(wǎng)絡(luò)的服務(wù)器上,通過計(jì)算機(jī)互聯(lián)網(wǎng)給用戶提供遠(yuǎn)程的網(wǎng)絡(luò)服務(wù)。在三層體系結(jié)構(gòu)的B/S系統(tǒng)中,通過瀏覽器,會(huì)員可以對(duì)很多服務(wù)器發(fā)出請(qǐng)求, B/S系統(tǒng)會(huì)很大程度的降低工作量,用戶只需要安裝運(yùn)行較少的用戶端即可,大量的工作將由服務(wù)器承擔(dān),另外,服務(wù)器也完成包括訪問數(shù)據(jù)庫(kù),執(zhí)行應(yīng)用程序的工作等等。
B/S結(jié)構(gòu)主要有三層,分別為數(shù)據(jù)層、控制邏輯層和視圖層。用戶通過視圖層,讓控制層調(diào)用數(shù)據(jù)層的數(shù)據(jù),從而達(dá)到整個(gè)訪問過程。三層相互獨(dú)立,維護(hù)方便,使用安全,三層有互相調(diào)用,提高效率。
2.4 Spring boot框架
Spring框架是Java平臺(tái)上的一種開源應(yīng)用框架,提供具有控制反轉(zhuǎn)特性的容器。盡管Spring框架自身對(duì)編程模型沒有限制,但其在Java應(yīng)用中的頻繁使用讓它備受青睞,以至于后來(lái)讓它作為EJB(EnterpriseJavaBeans)模型的補(bǔ)充,甚至是替補(bǔ)。Spring框架為開發(fā)提供了一系列的解決方案,比如利用控制反轉(zhuǎn)的核心特性,并通過依賴注入實(shí)現(xiàn)控制反轉(zhuǎn)來(lái)實(shí)現(xiàn)管理對(duì)象生命周期容器化,利用面向切面編程進(jìn)行聲明式的事務(wù)管理,整合多種持久化技術(shù)管理數(shù)據(jù)訪問,提供大量?jī)?yōu)秀的Web框架方便開發(fā)等等。Spring框架具有控制反轉(zhuǎn)(IOC)特性,IOC旨在方便項(xiàng)目維護(hù)和測(cè)試,它提供了一種通過Java的反射機(jī)制對(duì)Java對(duì)象進(jìn)行統(tǒng)一的配置和管理的方法。Spring框架利用容器管理對(duì)象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來(lái)配置對(duì)象,開發(fā)者可以通過依賴查找或依賴注入來(lái)獲得對(duì)象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時(shí)運(yùn)行時(shí)可配置;AOP框架主要針對(duì)模塊之間的交叉關(guān)注點(diǎn)進(jìn)行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無(wú)法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務(wù)管理、遠(yuǎn)程訪問等功能均可以通過使用SpringAOP技術(shù)實(shí)現(xiàn)。Spring的事務(wù)管理框架為Java平臺(tái)帶來(lái)了一種抽象機(jī)制,使本地和全局事務(wù)以及嵌套事務(wù)能夠與保存點(diǎn)一起工作,并且?guī)缀蹩梢栽贘ava平臺(tái)的任何環(huán)境中工作。Spring集成多種事務(wù)模板,系統(tǒng)可以通過事務(wù)模板、XML或Java注解進(jìn)行事務(wù)配置,并且事務(wù)框架集成了消息傳遞和緩存等功能。Spring的數(shù)據(jù)訪問框架解決了開發(fā)人員在應(yīng)用程序中使用數(shù)據(jù)庫(kù)時(shí)遇到的常見困難。它不僅對(duì)Java:JDBC、iBATS/MyBATIs、Hibernate、Java數(shù)據(jù)對(duì)象(JDO)、ApacheOJB和ApacheCayne等所有流行的數(shù)據(jù)訪問框架中提供支持,同時(shí)還可以與Spring的事務(wù)管理一起使用,為數(shù)據(jù)訪問提供了靈活的抽象。Spring框架最初是沒有打算構(gòu)建一個(gè)自己的WebMVC框架,其開發(fā)人員在開發(fā)過程中認(rèn)為現(xiàn)有的StrutsWeb框架的呈現(xiàn)層和請(qǐng)求處理層之間以及請(qǐng)求處理層和模型之間的分離不夠,于是創(chuàng)建了SpringMVC。
3 系統(tǒng)分析
所謂系統(tǒng)分析就是,需求人員通過與用戶的溝通,所獲取的信息,然后把這些信息通過需求說(shuō)明書的方式展示給用戶和開發(fā)人員。在軟件功能發(fā)展的歷史長(zhǎng)河中,很長(zhǎng)時(shí)間,特別是最開始的時(shí)候,需求分析的重要性并不被人們所認(rèn)同,例如當(dāng)時(shí)美國(guó)IBM公司為英國(guó)電信公司開發(fā)一套信息管理系統(tǒng),在需求不明確的情況下開始開發(fā),最初的工期為一年,由于需求獲取不清晰導(dǎo)致工期推遲了半年多,造成巨大損失。我們很多軟件公司也存在這種情況,邊需求,邊開發(fā),甚至與用戶沒有溝通清楚的情況下,直接照搬同類型的項(xiàng)目進(jìn)行更改,導(dǎo)致到系統(tǒng)驗(yàn)收的時(shí)候,重新更改,造成了人力、物力的極大浪費(fèi)。而導(dǎo)致這一切后果的原因就是需求獲取不及時(shí)、不清楚、不全面。
3.1 可行性分析
學(xué)生宿舍管理系統(tǒng)主要目標(biāo)是實(shí)現(xiàn)首頁(yè)、站點(diǎn)管理、(輪播圖、公告欄、)用戶管理(管理員)更多管理(更換寢室管理、體溫上報(bào)、維修申請(qǐng)、缺勤信息、物品借用、宿舍繳費(fèi))系統(tǒng)管理的相關(guān)信息管理服務(wù)。在確定了目標(biāo)后,我們從以下四方面對(duì)能否實(shí)現(xiàn)本系統(tǒng)目標(biāo)進(jìn)行可行性分析。
3.1.1 技術(shù)可行性
學(xué)生宿舍管理系統(tǒng)主要采用Springboot框架,基于B/S結(jié)構(gòu),Mysql數(shù)據(jù)庫(kù),對(duì)于應(yīng)用程序的開發(fā)要求具備完整功能,使用簡(jiǎn)單的特點(diǎn),并建立一個(gè)數(shù)據(jù)完整安全穩(wěn)定的數(shù)據(jù)庫(kù)。學(xué)生宿舍管理系統(tǒng)的開發(fā)技術(shù)具有很高可行性,且開發(fā)人員掌握了一定的開發(fā)技術(shù),所以系統(tǒng)的開發(fā)具有可行性。
3.1.2操作可行性
學(xué)生宿舍管理系統(tǒng)的登錄界面簡(jiǎn)單易于操作,采用常見的界面窗口來(lái)登錄界面,通過電腦進(jìn)行訪問操作,會(huì)員只要平時(shí)使用過電腦都能進(jìn)行訪問操作。此系統(tǒng)的開發(fā)采用java語(yǔ)言開發(fā),基于B/S結(jié)構(gòu),這些開發(fā)環(huán)境使系統(tǒng)更加完善。本系統(tǒng)具有易操作、易管理、交互性好的特點(diǎn),在操作上是非常簡(jiǎn)單的。因此本系統(tǒng)可以進(jìn)行開發(fā)。
3.1.3 經(jīng)濟(jì)可行性
學(xué)生宿舍管理系統(tǒng)是基于B/S模式,采用Mysql數(shù)據(jù)庫(kù)儲(chǔ)存數(shù)據(jù),所要求的硬件和軟件環(huán)境,市場(chǎng)上都很容易購(gòu)買,程序開發(fā)主要是管理系統(tǒng)的開發(fā)和維護(hù)。所以程序在開發(fā)人力、財(cái)力上要求不高,而且此系統(tǒng)不是很復(fù)雜,開發(fā)周期短,在經(jīng)濟(jì)方面具有較高的可行性。
3.1.4 法律可行性
此學(xué)生宿舍管理系統(tǒng)是自己設(shè)計(jì)的管理系統(tǒng),具有很大的實(shí)際意義。因?yàn)闊o(wú)論是軟件還是數(shù)據(jù)庫(kù),采用的都是開源代碼,因此這個(gè)系統(tǒng)的開發(fā)和設(shè)計(jì),并不存在侵權(quán)等問題,在法律上完全具有可行性。
綜上所述,學(xué)生宿舍管理系統(tǒng)在技術(shù)、經(jīng)濟(jì)、操作和法律上都具有很高的可行性,開發(fā)此程序是可行的。
3.2系統(tǒng)流程分析
3.2.1系統(tǒng)開發(fā)流程
學(xué)生宿舍管理系統(tǒng)開發(fā)時(shí),首先進(jìn)行需求分析,進(jìn)而對(duì)系統(tǒng)進(jìn)行總體的設(shè)計(jì)規(guī)劃,設(shè)計(jì)系統(tǒng)功能模塊,數(shù)據(jù)庫(kù)的選擇等,本系統(tǒng)的開發(fā)流程如圖3-1所示
?
圖3-1系統(tǒng)開發(fā)流程圖
3.2.2 用戶登錄流程
為了保證系統(tǒng)的安全性,要使用本系統(tǒng)對(duì)系統(tǒng)信息進(jìn)行管理,必須先登陸到系統(tǒng)中。如圖3-2所示。
?
圖3-2 登錄流程圖
3.2.3 系統(tǒng)操作流程
用戶打開并進(jìn)入系統(tǒng)后,會(huì)先顯示登錄界面,輸入正確的用戶名和密碼,系統(tǒng)自動(dòng)檢測(cè)信息,若信息無(wú)誤,則用戶會(huì)進(jìn)入系統(tǒng)功能界面,進(jìn)行操作,否則會(huì)提示錯(cuò)誤無(wú)法登錄,操作流程如圖3-3所示。
?
圖3-3 系統(tǒng)操作流程圖
3.2.4 添加信息流程
管理員可以對(duì)書籍類型管理進(jìn)行信息的添加,用戶可以對(duì)自己權(quán)限內(nèi)的信息進(jìn)行添加,輸入信息后,系統(tǒng)會(huì)自行驗(yàn)證輸入的信息和數(shù)據(jù),若信息正確,會(huì)將其添加到數(shù)據(jù)庫(kù)內(nèi),若信息有誤,則會(huì)提示重新輸入信息,添加信息流程如圖3-4所示。
?
圖3-4 添加信息流程圖
3.2.5 修改信息流程
管理員可以對(duì)書籍信息管理進(jìn)行的修改,用戶可以對(duì)自己權(quán)限內(nèi)的信息進(jìn)行修改,首先進(jìn)入修改信息界面,輸入修改信息數(shù)據(jù),系統(tǒng)進(jìn)行數(shù)據(jù)的判斷驗(yàn)證,修改信息合法則修改成功,信息更新至數(shù)據(jù)庫(kù),信息不合法則修改失敗,重新輸入。修改信息流程圖如圖3-5所示。
?
圖3-5 修改信息流程圖
3.2.6 刪除信息流程
管理員可以對(duì)留言板管理進(jìn)行信息的刪除,對(duì)要?jiǎng)h除的信息進(jìn)行選中后,點(diǎn)擊刪除按鈕,系統(tǒng)會(huì)詢問是否確定,若點(diǎn)擊確定,則系統(tǒng)會(huì)刪除掉選中的信息,并在數(shù)據(jù)庫(kù)內(nèi)對(duì)信息進(jìn)行刪除,刪除信息流程圖如圖3-6所示。
?
圖3-6 刪除信息流程圖
3.3系統(tǒng)用例分析
3.3.1管理員用例圖
系統(tǒng)中的核心用戶是系統(tǒng)管理員,管理員登錄后,通過管理員菜單來(lái)管理后臺(tái)系統(tǒng)。主要功能有:首頁(yè)、用戶管理、宿舍信息管理、換寢申請(qǐng)管理、物品借用管理、晚歸信息管理、體溫上報(bào)管理、維修申請(qǐng)管理等功能。管理員用例如圖3-7所示。
?
圖3-7 管理員用例圖
3.3.2學(xué)生前臺(tái)用例圖
學(xué)生前臺(tái)進(jìn)入系統(tǒng)可以進(jìn)行首頁(yè)、宿更換寢室。缺勤信息、維修申請(qǐng)、體溫上報(bào)、宿舍繳費(fèi)、物品借用等。用戶前臺(tái)用例如圖3-8所示。
?
圖3-8 學(xué)生前臺(tái)用例圖
4 系統(tǒng)設(shè)計(jì)
4.1 系統(tǒng)概述
進(jìn)過系統(tǒng)的分析后,就開始記性系統(tǒng)的設(shè)計(jì),系統(tǒng)設(shè)計(jì)包含總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。總體設(shè)計(jì)只是一個(gè)大體的設(shè)計(jì),經(jīng)過了總體設(shè)計(jì),我們能夠劃分出系統(tǒng)的一些東西,例如文件、文檔、數(shù)據(jù)等。而且我們通過總體設(shè)計(jì),大致可以劃分出了程序的模塊,以及功能。但是只是一個(gè)初步的分類,并沒有真正的實(shí)現(xiàn)。
整體設(shè)計(jì),只是一個(gè)初步設(shè)計(jì),而且,對(duì)于一個(gè)項(xiàng)目,我們可以進(jìn)行多個(gè)整體設(shè)計(jì),通過對(duì)比,包括性能的對(duì)比、成本的對(duì)比、效益的對(duì)比,來(lái)最終確定一個(gè)最優(yōu)的設(shè)計(jì)方案,選擇優(yōu)秀的整體設(shè)計(jì)可以降低開發(fā)成本,增加公司效益,從這一點(diǎn)來(lái)講,整體設(shè)計(jì)還是非常重要的。
學(xué)生宿舍管理系統(tǒng)工作原理圖如圖4-1所示:
?
圖4-1 系統(tǒng)工作原理圖
4.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)架構(gòu)圖屬于系統(tǒng)設(shè)計(jì)階段,系統(tǒng)架構(gòu)圖只是這個(gè)階段一個(gè)產(chǎn)物,系統(tǒng)的總體架構(gòu)決定了整個(gè)系統(tǒng)的模式,是系統(tǒng)的基礎(chǔ)。學(xué)生宿舍管理系統(tǒng)的整體結(jié)構(gòu)設(shè)計(jì)如圖4-2所示。
?
圖4-2 系統(tǒng)結(jié)構(gòu)圖
4.3數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是計(jì)算機(jī)信息系統(tǒng)的基礎(chǔ)。目前,電腦系統(tǒng)的關(guān)鍵與核心部分就是數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)開發(fā)的優(yōu)劣對(duì)整個(gè)系統(tǒng)的質(zhì)量和速度有著直接影響。
4.3.1 數(shù)據(jù)庫(kù)設(shè)計(jì)原則
數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)采用實(shí)體—聯(lián)系(E-R)模型設(shè)計(jì)方法。E-R模型法的組成元素有:實(shí)體、屬性、聯(lián)系,E-R模型用E-R圖表示,是提示用戶工作環(huán)境中所涉及的事物,屬性則是對(duì)實(shí)體特性的描述。在系統(tǒng)設(shè)計(jì)當(dāng)中數(shù)據(jù)庫(kù)起著決定性的因素。下面設(shè)計(jì)出這幾個(gè)關(guān)鍵實(shí)體的實(shí)體—關(guān)系圖。
4.3.2 數(shù)據(jù)庫(kù)實(shí)體
數(shù)據(jù)模型中的實(shí)體(Entity),也稱為實(shí)例,對(duì)應(yīng)現(xiàn)實(shí)世界中可區(qū)別于其他對(duì)象的“事件”或“事物”。
本系統(tǒng)的E-R圖如下圖所示:
1、缺勤信息實(shí)體圖如圖4-3所示:
?
圖4-3缺勤信息實(shí)體圖
2、用戶信息實(shí)體圖如圖4-4所示:
?
圖4-4用戶信息實(shí)體圖
3、維修申請(qǐng)實(shí)體圖如圖4-5所示:
?
圖4-5維修申請(qǐng)實(shí)體圖
4.3.3 數(shù)據(jù)庫(kù)表設(shè)計(jì)
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| student_user_id | int | 11 | 是 | 是 | 學(xué)生用戶ID |
| student_name | varchar | 64 | 否 | 否 | 學(xué)生姓名 |
| student_number | varchar | 64 | 是 | 否 | 學(xué)生學(xué)號(hào) |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| college | varchar | 64 | 否 | 否 | 所在學(xué)院 |
| enrollment_year_ | varchar | 64 | 否 | 否 | 入學(xué)年份 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| temperature_reporting_id | int | 11 | 是 | 是 | 體溫上報(bào)ID |
| student_number | varchar | 64 | 否 | 否 | 學(xué)生學(xué)號(hào) |
| student_name | int | 11 | 否 | 否 | 學(xué)生姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| college | varchar | 64 | 否 | 否 | 所在學(xué)院 |
| class_information | varchar | 64 | 否 | 否 | 班級(jí)信息 |
| student_telephone | varchar | 64 | 否 | 否 | 學(xué)生電話 |
| abnormal_date | date | 0 | 否 | 否 | 異常日期 |
| temperature_at_that_time | varchar | 64 | 否 | 否 | 當(dāng)時(shí)體溫 |
| physical_condition | varchar | 64 | 否 | 否 | 身體狀況 |
| processing_status | varchar | 64 | 否 | 否 | 處理狀態(tài) |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| student_information_id | int | 11 | 是 | 是 | 學(xué)生信息ID |
| student_number | varchar | 64 | 否 | 否 | 學(xué)生學(xué)號(hào) |
| student_name | int | 11 | 否 | 否 | 學(xué)生姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| college | varchar | 64 | 否 | 否 | 所在學(xué)院 |
| class_information | varchar | 64 | 否 | 否 | 班級(jí)信息 |
| province_of_origin | varchar | 64 | 否 | 否 | 生源地省份 |
| student_telephone | varchar | 64 | 否 | 否 | 學(xué)生電話 |
| dormitory_building_id | varchar | 64 | 否 | 否 | 宿舍樓ID |
| dormitory_no | varchar | 64 | 否 | 否 | 宿舍編號(hào) |
| dormitory_electricity_balance | varchar | 64 | 否 | 否 | 宿舍電費(fèi)余額 |
| enrollment_year_ | varchar | 64 | 否 | 否 | 入學(xué)年份 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| maintenance_application_id | int | 11 | 是 | 是 | 維修申請(qǐng)ID |
| student_number | varchar | 64 | 否 | 否 | 學(xué)生學(xué)號(hào) |
| student_name | int | 11 | 否 | 否 | 學(xué)生姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| college | varchar | 64 | 否 | 否 | 所在學(xué)院 |
| class_information | varchar | 64 | 否 | 否 | 班級(jí)信息 |
| student_telephone | varchar | 64 | 否 | 否 | 學(xué)生電話 |
| dormitory_building_id | varchar | 64 | 否 | 否 | 宿舍樓ID |
| dormitory_no | varchar | 64 | 否 | 否 | 宿舍編號(hào) |
| application_date | date | 0 | 否 | 否 | 申請(qǐng)日期 |
| fault_location | varchar | 64 | 否 | 否 | 故障地點(diǎn) |
| fault_photos | varchar | 255 | 否 | 否 | 故障照片 |
| processing_status | varchar | 64 | 否 | 否 | 處理狀態(tài) |
| cause_of_failure | longtext | 0 | 否 | 否 | 故障原因 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| late_return_id | int | 11 | 是 | 是 | 晚歸信息ID |
| student_number | varchar | 64 | 否 | 否 | 學(xué)生學(xué)號(hào) |
| student_name | int | 11 | 否 | 否 | 學(xué)生姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| dormitory_building_id | varchar | 64 | 否 | 否 | 宿舍樓ID |
| dormitory_no | varchar | 64 | 否 | 否 | 宿舍編號(hào) |
| late_return_date | date | 0 | 否 | 否 | 晚歸日期 |
| reasons_for_late_return | longtext | 0 | 否 | 否 | 晚歸原因 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
| 名稱 | 類型 | 長(zhǎng)度 | 不是null | 主鍵 | 注釋 |
| change_dormitory_id | int | 11 | 是 | 是 | 更換寢室ID |
| student_number | varchar | 64 | 否 | 否 | 學(xué)生學(xué)號(hào) |
| student_name | int | 11 | 否 | 否 | 學(xué)生姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學(xué)生性別 |
| college | varchar | 64 | 否 | 否 | 所在學(xué)院 |
| class_information | varchar | 64 | 否 | 否 | 班級(jí)信息 |
| student_telephone | varchar | 64 | 否 | 否 | 學(xué)生電話 |
| dormitory_building_id | varchar | 64 | 否 | 否 | 宿舍樓ID |
| dormitory_no | varchar | 64 | 否 | 否 | 宿舍編號(hào) |
| application_date | date | 0 | 否 | 否 | 申請(qǐng)日期 |
| processing_status | varchar | 64 | 否 | 否 | 處理狀態(tài) |
| reason_for_changing_sleep | longtext | 0 | 否 | 否 | 換寢原因 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創(chuàng)建時(shí)間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時(shí)間 |
5系統(tǒng)詳細(xì)設(shè)計(jì)
5.1用戶前臺(tái)功能模塊
學(xué)生宿舍管理系統(tǒng),在系統(tǒng)首頁(yè)可以查看首頁(yè)、更換寢室、體溫上報(bào)、維修申請(qǐng)、晚歸信息、宿舍繳費(fèi)等內(nèi)容,如圖5-1所示。
?
圖5-1用戶前臺(tái)功能界面圖
???
????用戶注冊(cè),在用戶注冊(cè)頁(yè)面可以填寫賬號(hào)、密碼、昵稱、郵箱、手機(jī)號(hào)碼、身份、性別、身份證號(hào)碼等詳細(xì)內(nèi)容進(jìn)行注冊(cè),如圖5-2所示。
?
圖5-2用戶注冊(cè)界面圖
用戶注冊(cè)關(guān)鍵代碼如下所示。
/**
?????* 注冊(cè)
?????* @param user
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(@RequestBody User user) {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????query.put("username",user.getUsername());
????????List list = service.select(query, new HashMap<>()).getResultList();
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????user.setUserId(null);
????????user.setPassword(service.encryption(user.getPassword()));
????????service.save(user);
????????return success(1);
}
/**
?????* 用戶ID:[0,8388607]用戶獲取其他與用戶相關(guān)的數(shù)據(jù)
?????*/
????@Id
????@GeneratedValue(strategy = GenerationType.IDENTITY)
????@Column(name = "user_id")
????private Integer userId;
????/**
?????* 賬戶狀態(tài):[0,10](1可用|2異常|3已凍結(jié)|4已注銷)
?????*/
????@Basic
????@Column(name = "state")
????private Integer state;
????/**
?????* 所在用戶組:[0,32767]決定用戶身份和權(quán)限
?????*/
????@Basic
????@Column(name = "user_group")
????private String userGroup;
????/**
?????* 上次登錄時(shí)間:
?????*/
????@Basic
????@Column(name = "login_time")
????private Timestamp loginTime;
????/**
?????* 手機(jī)號(hào)碼:[0,11]用戶的手機(jī)號(hào)碼,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "phone")
????private String phone;
????/**
?????* 手機(jī)認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "phone_state")
????private Integer phoneState;
????/**
?????* 用戶名:[0,16]用戶登錄時(shí)所用的賬戶名稱
?????*/
????@Basic
????@Column(name = "username")
????private String username;
????/**
?????* 昵稱:[0,16]
?????*/
????@Basic
????@Column(name = "nickname")
????private String nickname;
????/**
?????* 密碼:[0,32]用戶登錄所需的密碼,由6-16位數(shù)字或英文組成
?????*/
????@Basic
????@Column(name = "password")
????private String password;
????/**
?????* 郵箱:[0,64]用戶的郵箱,用于找回密碼時(shí)或登錄時(shí)
?????*/
????@Basic
????@Column(name = "email")
????private String email;
????/**
?????* 郵箱認(rèn)證:[0,1](0未認(rèn)證|1審核中|2已認(rèn)證)
?????*/
????@Basic
????@Column(name = "email_state")
????private Integer emailState;
????/**
?????* 頭像地址:[0,255]
?????*/
????@Basic
????@Column(name = "avatar")
????private String avatar;
????/**
?????* 創(chuàng)建時(shí)間:
?????*/
????@Basic
????@Column(name = "create_time")
????@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
????private Timestamp createTime;
????@Basic
????@Transient
????private String code;
}
登錄,在登錄頁(yè)面通過填寫賬號(hào)、密碼等信息完成登錄,如圖5-3所示。更換寢室頁(yè)面通過填寫學(xué)生信息、宿舍樓、宿舍編號(hào)、申請(qǐng)日期、換寢原因、處理狀態(tài)等信息進(jìn)行提交操作,如圖5-4所示。
?
圖5-3登錄界面圖
用戶登錄的關(guān)鍵代碼如下。
?/**
?????* 登錄
?????* @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;
????????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, "賬號(hào)或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號(hào)或密碼不能為空");
????????}
????????//判斷是否有這個(gè)用戶
????????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);
????????//查詢用戶審核狀態(tài)
????????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,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}
????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲(chǔ)Token到數(shù)據(jù)庫(kù)
????????????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, "賬號(hào)或密碼不正確");
????????}
}
?
圖5-4更換寢室界面圖
維修申請(qǐng),在申請(qǐng)頁(yè)面通過填寫學(xué)生信息、宿舍樓、宿舍編號(hào)、處理狀態(tài)、故障原因等信息進(jìn)行立即提交申請(qǐng),如圖5-5所示。體溫上報(bào)頁(yè)面填寫具體學(xué)生信息、身體狀況、體溫、處理狀態(tài)進(jìn)行提交,如圖5-6所示。
?
圖5-5維修申請(qǐng)界面圖
?
圖5-6體溫上報(bào)界面圖
體溫上報(bào)的邏輯代碼如下:
??@PostMapping("/add")
????@Transactional
????public Map<String, Object> add(HttpServletRequest request) throws IOException {
????????service.insert(service.readBody(request.getReader()));
????????return success(1);
????}
????@Transactional
????public Map<String, Object> addMap(Map<String,Object> map){
????????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){
????????StringBuffer sql = new StringBuffer("INSERT INTO ");
????????sql.append("`").append(table).append("`").append(" (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");
????????}
????????sql.deleteCharAt(sql.length()-1);
????????sql.append(") VALUES (");
????????for (Map.Entry<String,Object> entry:body.entrySet()){
????????????Object value = entry.getValue();
????????????if (value instanceof String){
????????????????sql.append("'").append(entry.getValue()).append("'").append(",");
????????????}else {
????????????????sql.append(entry.getValue()).append(",");
????????????}
????????}
????????sql.deleteCharAt(sql.length() - 1);
????????sql.append(")");
????????log.info("[{}] - 插入操作:{}",table,sql);
????????Query query = runCountSql(sql.toString());
????????query.executeUpdate();
????}
5.2管理員功能模塊
管理員登錄,通過填寫注冊(cè)時(shí)輸入的用戶名、密碼、進(jìn)行登錄,如圖5-7所示。
?
圖5-7管理員登錄界面圖
管理員登錄進(jìn)入學(xué)生宿舍管理系統(tǒng)后的主要功能是:首頁(yè)、用戶管理、更換寢室管理、體溫上報(bào)管理、維修申請(qǐng)管理、晚歸信息、宿舍繳費(fèi)管理等信息。5-8所示。還可以對(duì)更換寢室信息等進(jìn)行管理操作,如圖5-9所示。
?
圖5-8首頁(yè)展示界面圖
?
圖5-9更換寢室管理界面圖
更換寢室管理界面邏輯代碼如下:
@RequestMapping(value = {"/avg_group", "/avg"})
public Map<String, Object> avg(HttpServletRequest request) {
????????Query count = service.avg(service.readQuery(request), service.readConfig(request));
????????return success(count.getResultList());
}
體溫上報(bào)管理,在體溫上報(bào)管理頁(yè)面中可以對(duì)學(xué)生信息、上報(bào)體溫、異常情況等信息進(jìn)行管理,并可以對(duì)報(bào)修申請(qǐng)進(jìn)行提交等操作,如圖5-10所示。
?
圖5-10體溫上報(bào)管理界面圖
缺勤信息管理,在缺勤信息頁(yè)面中可以對(duì):學(xué)生信息、宿舍樓、所在學(xué)院、所在學(xué)校、缺勤信息等維護(hù)管理,并可以對(duì)需要修改的信息進(jìn)行修改或刪除等詳細(xì)操作,如圖5-11所示。
?
圖5-11缺勤信息管理界面圖
缺勤信息管理界面邏輯代碼如下:
@RestController
@RequestMapping("auth")
public class AuthController extends BaseController<Auth, AuthService> {
????/**
?????* 服務(wù)對(duì)象
?????*/
????@Autowired
????public AuthController(AuthService service) {
????????setService(service);
????}
}
宿舍公告管理,在宿舍公告頁(yè)面中可以查看標(biāo)題、內(nèi)容等內(nèi)容,并且可以對(duì)新的宿舍公告進(jìn)行發(fā)布,修改或刪除等詳細(xì)操作,如圖5-12所示。
?
圖5-12宿舍公告管理界面圖
物品借用頁(yè)面中主要包括:學(xué)生信息、所在學(xué)校、班級(jí)信息、借用日期等信息,如圖5-13所示。
?
圖5-13物品借用管理界面圖
學(xué)生管理,在學(xué)生管理頁(yè)面中可以查看學(xué)生姓名、密碼、姓名、性別、頭像等內(nèi)容,并且根據(jù)需要對(duì)已有學(xué)生管理進(jìn)行詳情,修改或刪除等詳細(xì)操作,如圖5-14所示。
?
圖5-14學(xué)生管理界面圖
學(xué)生管理界面關(guān)鍵代碼如下:
@RequestMapping("/get_list")
????public Map<String, Object> getList(HttpServletRequest request) {
????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
????????return success(map);
}
6系統(tǒng)測(cè)試
系統(tǒng)開發(fā)的最后一個(gè)步驟就是系統(tǒng)測(cè)試,系統(tǒng)測(cè)試也是整個(gè)系統(tǒng)十分重要的一個(gè)環(huán)節(jié),測(cè)試的好壞關(guān)系到產(chǎn)品的發(fā)展。用戶對(duì)軟件的質(zhì)量、性能和可靠性等需求就要通過測(cè)試來(lái)實(shí)現(xiàn)。測(cè)試過程要必須遵循嚴(yán)謹(jǐn)性、完善性、規(guī)范性的原則,測(cè)試的主要目的就是看看在系統(tǒng)運(yùn)行中,是否會(huì)出現(xiàn)bug,然后對(duì)出現(xiàn)的bug進(jìn)行調(diào)試,直到程序完美運(yùn)行。但是軟件的測(cè)試只能盡可能的減少bug,理論上來(lái)說(shuō)是無(wú)法達(dá)到消除bug。但是bug越少,系統(tǒng)出錯(cuò)的幾率就越低,用戶使用起來(lái)也更方便、更安全。
近年來(lái),軟件包含測(cè)試從現(xiàn)在的檢驗(yàn)當(dāng)中來(lái)看,系統(tǒng)接近預(yù)期目標(biāo)可能出現(xiàn)的問題,并對(duì)這些錯(cuò)誤做出相應(yīng)的修正,假如我們不進(jìn)行早期的測(cè)試錯(cuò)誤就會(huì)延續(xù)下去,最后所做出的成品就會(huì)有很大的困難。
我們要在這個(gè)測(cè)試的過程當(dāng)中找出錯(cuò)誤。測(cè)試成軟件開發(fā)的主要一部分,自從有了程序的設(shè)計(jì)那天開始,它就成為了重要的組成部分。經(jīng)過統(tǒng)計(jì)來(lái)看,軟件測(cè)試可以占據(jù)這個(gè)系統(tǒng)45%的工作量,而在軟件開發(fā)的成本當(dāng)中,對(duì)于測(cè)試成本來(lái)說(shuō)它包含了很多的測(cè)試工作。每個(gè)程序測(cè)試時(shí)都會(huì)出現(xiàn)和遇到錯(cuò)誤。在整個(gè)程序的開發(fā)過程當(dāng)中,人為去查找錯(cuò)誤是非常復(fù)雜和困難的,所以我們一般都會(huì)找一些測(cè)試的工具來(lái)進(jìn)行測(cè)試。
6.1系統(tǒng)測(cè)試的意義
隨著現(xiàn)代信息的快速發(fā)展,在社會(huì)各大領(lǐng)域中已經(jīng)都開始應(yīng)用網(wǎng)絡(luò)信息技術(shù),在應(yīng)用網(wǎng)絡(luò)技術(shù)的同時(shí)人們也開始把軟件的質(zhì)量問題作為了一個(gè)重要焦點(diǎn)來(lái)關(guān)注,因?yàn)橐粋€(gè)軟件的好與壞它決定著這個(gè)系統(tǒng)在市場(chǎng)上的生存,所以我們必須要把軟件質(zhì)量來(lái)做好,這樣才有一定的生存能力。對(duì)于用戶來(lái)說(shuō)它們首先選用的都是保證這個(gè)系統(tǒng)軟件的質(zhì)量問題,因?yàn)橐粋€(gè)系統(tǒng)的軟件質(zhì)量決定著用戶在后期上成本經(jīng)濟(jì)的問題。
6.2?測(cè)試方法
具體測(cè)試方法包括:黑盒測(cè)試和白盒測(cè)試。
黑盒測(cè)試又被人們稱作為功能測(cè)試,通常是在程序的接口來(lái)做一些測(cè)試的方法,它一般包括對(duì)程序的功能和使用的方法來(lái)做出一些數(shù)據(jù)的接受和輸出,同時(shí)還可以做出正確的輸出信息,并保證與外部信息的完整性。
白盒測(cè)試通常被人們稱作為結(jié)構(gòu)測(cè)試,在整個(gè)程序的結(jié)構(gòu)和處理當(dāng)中它是由程序當(dāng)中的邏輯測(cè)試和檢驗(yàn)程序來(lái)完成一些正確的工作。
具體的功能測(cè)試它是包括:系統(tǒng)的適用性、準(zhǔn)確性、安全性等功能測(cè)試。
6.3測(cè)試分析
學(xué)生宿舍管理系統(tǒng)滿足相關(guān)信息的管理需求,在設(shè)計(jì)時(shí)借鑒了國(guó)內(nèi)外優(yōu)秀網(wǎng)站的優(yōu)點(diǎn),從界面到系統(tǒng)設(shè)計(jì)都保證了管理員以及用戶能夠方便操作。系統(tǒng)的主要特點(diǎn)和優(yōu)點(diǎn)歸納如下:
(1)本系統(tǒng)用的移置性和針對(duì)性都比較高,因?yàn)獒槍?duì)性高可以提供更好的服務(wù)而移置性可以在多個(gè)系統(tǒng)上運(yùn)行,更給用戶帶來(lái)了極大的方便。
(2)該學(xué)生宿舍管理系統(tǒng)內(nèi)容全面,管理方便可以及時(shí)的全面的處理各種錯(cuò)誤,異常,這樣避免了很多因用戶的馬虎操作而出現(xiàn)的失誤,其操作方便,用戶界面友好,能夠上網(wǎng)的人都可以很好的進(jìn)行操作。
經(jīng)過對(duì)上述的測(cè)試結(jié)果分析,所有基本功能齊全,操作簡(jiǎn)單,系統(tǒng)運(yùn)行性能良好,系統(tǒng)安全可靠,能促進(jìn)學(xué)生宿舍管理系統(tǒng)的發(fā)展,發(fā)展前景廣闊。
結(jié) ???論
本系統(tǒng)通過對(duì)java和Mysql數(shù)據(jù)庫(kù)的簡(jiǎn)介,從硬件和軟件兩反面說(shuō)明了學(xué)生宿舍管理系統(tǒng)的可行性,本文結(jié)論及研究成果如下:實(shí)現(xiàn)了java與Mysql相結(jié)合構(gòu)建的學(xué)生宿舍管理系統(tǒng),網(wǎng)站可以響應(yīng)式展示。通過本次學(xué)生宿舍管理系統(tǒng)的研究與實(shí)現(xiàn),我感到學(xué)海無(wú)涯,學(xué)習(xí)是沒有終點(diǎn)的,而且實(shí)踐出真知,只有多動(dòng)手才能盡快掌握它,經(jīng)驗(yàn)對(duì)系統(tǒng)的開發(fā)非常重要,經(jīng)驗(yàn)不足,就難免會(huì)有許多考慮不周之處。比如要有美觀的界面,更完善的功能,才能吸引更多的用戶。
由于在此之前對(duì)于java知識(shí)沒有深入了解,所以從一開始就碰到許多困難,例如一開始的頁(yè)面顯示不規(guī)范、數(shù)據(jù)庫(kù)連接有問題已經(jīng)無(wú)法實(shí)現(xiàn)參數(shù)的傳遞等等,不過通過在網(wǎng)上尋找有關(guān)資料以及同學(xué)的幫助下最后都得到了解決,在此過程中,我不僅學(xué)到了很多知識(shí),也提高了自己解決問題的能力,尤其是學(xué)會(huì)如何從大量的信息中篩選出所需有用的信息,同時(shí)我更加深刻的體會(huì)到了,雖然書本上的大部分知識(shí)都是有價(jià)值,正確的,但實(shí)際上每個(gè)人編程的思路和對(duì)數(shù)據(jù)處理的方法、思想都是不同的,這就要求我們一定要通過實(shí)踐才能找到解決問題的方案。在此次畢業(yè)設(shè)計(jì)活動(dòng)中,我不斷的提高了自己,也得到了寶貴的經(jīng)驗(yàn),我相信這些對(duì)我以后的發(fā)展都會(huì)有很大幫助。
通過這次學(xué)生宿舍管理系統(tǒng)的開發(fā),我參考了很多相關(guān)系統(tǒng)的例子,取長(zhǎng)補(bǔ)短,吸取了其他系統(tǒng)的長(zhǎng)處,逐步對(duì)該系統(tǒng)進(jìn)行了完善,但是該系統(tǒng)還是有很多的不足之處,有待以后進(jìn)一步學(xué)習(xí)。
實(shí)踐證明,學(xué)生宿舍管理系統(tǒng)有著非常好的發(fā)展前景,經(jīng)過測(cè)試運(yùn)行,系統(tǒng)各項(xiàng)功能都十分完善,界面漂亮,使用方便,操作容易,在技術(shù)理論上已經(jīng)成熟。
致 ???謝
大學(xué)的學(xué)習(xí)生活在這個(gè)季節(jié)將結(jié)束,但是在我的生命這僅僅只是一個(gè)逗號(hào),我將面對(duì)的旅程的另一個(gè)的開始。通過這次畢業(yè)設(shè)計(jì)的整個(gè)開發(fā)過程,從需求分析到具體功能實(shí)現(xiàn),再到最終測(cè)試和維護(hù)的理解有了很大的進(jìn)步,讓我對(duì)系統(tǒng)開發(fā)有了更深刻的認(rèn)識(shí),對(duì)我個(gè)人的實(shí)踐能力和解決問題的能力,都有了很大的幫助。這是這次畢業(yè)設(shè)計(jì)最大的收獲。
首先要感謝我的指導(dǎo)老師,他在論文寫作上,給予了我各種無(wú)私的幫助,治學(xué)嚴(yán)謹(jǐn),嚴(yán)格要求,使我獲得了很大的收獲。老師深厚的理論知識(shí)和豐富的實(shí)踐經(jīng)驗(yàn),都深深的影響到我,在這方面,我謹(jǐn)表示衷心的感謝。
其次,我還要對(duì)所有的老師和同學(xué)表示感謝,他們?cè)谖覍W(xué)習(xí)的過程中,都積極的提供了很多幫助,無(wú)論是專業(yè)知識(shí),還是實(shí)踐操作技能,也能夠讓我在論文寫作中,遇到的一些難題迎刃而解。
最后,對(duì)閱讀和評(píng)審本論文的各位老師表示衷心的感謝!
參考文獻(xiàn)?
[1]孫妃,李可心,劉楠,王曉蘭,孔榮榮,王慧.學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].江蘇科技信息,2021,38(29):40-42+75.
[2]朱宏斌.智能控電管理系統(tǒng)在高校學(xué)生公寓中的應(yīng)用——以宿遷學(xué)院為例[J].數(shù)字通信世界,2021(10):194-195.
[3]黃煒鋼.基于移動(dòng)端的中職學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息與電腦(理論版),2021,33(02):141-144.
[4]馮曉春,陳艷.基于web開發(fā)的學(xué)生公寓管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2020(31):77-78.
[5]王鋒,金晶.高校學(xué)生宿舍水電表管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].智能計(jì)算機(jī)與應(yīng)用,2020,10(06):191-194.
[6]辛閱,黃浪塵,李家兒.學(xué)生宿舍遠(yuǎn)程智能管理系統(tǒng)設(shè)計(jì)[J].軟件,2020,41(03):79-83.
[7]Xiaochen Geng,Sha Liu. Application of Modular Interface Design in Student Dormitory Management System[C]//Proceedings of 4th International Conference on Culture,Education and Economic Development of Modern Society(ICCESE 2020)(Advances in Social Science,Education and Humanities Research,VOL.416).Proceedings of 4th International Conference on Culture,2020:173-180.
[8]歐暢.宿舍管理系統(tǒng)的前端設(shè)計(jì)與實(shí)現(xiàn)[J].湖北農(nóng)機(jī)化,2020(02):186-187.
[9]賈樹剛.學(xué)生宿舍管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].遼寧師專學(xué)報(bào)(自然科學(xué)版),2019,21(04):44-46+100.
[10]初慶東,張敏霞,崔衛(wèi)韜.一種新型高校學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].信息技術(shù),2019,43(06):69-71+76.
[11]王青.高校宿舍智能管理系統(tǒng)設(shè)計(jì)[J].微型電腦應(yīng)用,2019,35(06):135-137.
[12]俞玲.基于數(shù)據(jù)挖掘的高校學(xué)生宿舍管理系統(tǒng)研究與設(shè)計(jì)[J].信息與電腦(理論版),2019(04):121-122.
[13]徐洋.關(guān)于“互聯(lián)網(wǎng)+高校學(xué)生宿舍”的研究[J].長(zhǎng)江叢刊,2019(04):147-148.
[14]黃敏.基于B/S架構(gòu)的學(xué)生宿舍管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)踐[J].電腦知識(shí)與技術(shù),2018,14(35):83-84+92.
[15]Wang Xi,Wang De. Research of Student Management Mechanism under the Background of Credit System Based on Student Dormitory[C]//Proceedings of the 14th International Conference on Innovation and Management.,2017:1676-1680.
免費(fèi)領(lǐng)取本源碼,請(qǐng)關(guān)注點(diǎn)贊+私聊
總結(jié)
以上是生活随笔為你收集整理的(附源码)springboot学生宿舍管理系统 毕业设计453155的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KubeFATE: 用云原生技术赋能联邦
- 下一篇: 复杂场景下的权限系统该怎么玩?ABAC权