(附源码)springboot+mysql+基于Java的学生请销假审批管理系统的设计与实现 毕业设计130939
摘 要
科技進步的飛速發展引起人們日常生活的巨大變化,電子信息技術的飛速發展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流,人類發展的歷史正進入一個新時代。在現實運用中,應用軟件的工作規則和開發步驟,采用java技術建設學生請假審批管理系統。
本設計主要實現集人性化、高效率、便捷等優點于一身的學生請假審批管理系統,完成首頁、用戶管理、公告通知、請假申請、請假審批等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。學生請假審批管理系統使用Java語言,采用基于 MVVM模式的spring boot技術進行開發,使用 Eclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的Mysql數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞 :學生請假審批;java技術;Mysql數據庫;
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, Java technology is used to build the student leave approval management system.
This design mainly realizes the student leave approval management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, user management, announcement notice, leave application, leave approval and so on. 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 student leave approval management system uses Java language, spring boot technology based on MVVM mode and eclipse 2017 CI 10 compiler. In terms of data, Microsoft's MySQL database is mainly used as the data storage medium, and the system development is completed with the foreground HTML + CSS technology.
Key words: Student leave approval; Java technology; Mysql database;
目 錄
1 概述 1
1.1課題背景 1
1.2 研究意義 1
1.3 本課題主要工作 2
2 關鍵技術介紹 3
2.1 開發技術 3
2.2 MVVM模式 3
2.3 MySQL數據庫 4
2.4 B/S結構 4
2.4 spring boot框架介紹 4
2.4 Vue.js主要功能 4
3 系統分析 6
3.1 可行性分析 6
3.1.1 技術可行性 6
3.1.2操作可行性 6
3.1.3 經濟可行性 6
3.1.4 法律可行性 7
3.2系統流程分析 7
3.2.1系統開發流程 7
3.2.2 用戶登錄流程 8
3.2.3 系統操作流程 8
3.2.4 添加信息流程 9
3.2.5 修改信息流程 10
3.2.6 刪除信息流程 10
3.3系統用例分析 11
4 系統設計 15
4.1 系統概述 15
4.2 系統結構設計 15
4.3數據庫設計 16
4.3.1實體ER圖 16
4.3.2數據庫表設計 16
5系統詳細設計 23
5.1數據庫訪問層的實現 23
5.2注冊模塊的實現 24
5.3登錄模塊的實現 24
5.4用戶資料修改模塊的實現 26
5.5公告通知模塊的實現 27
5.6請假申請模塊的實現 28
5.7學生管理模塊的實現 29
5.8請假審批管理模塊 31
6系統測試 33
6.1系統測試的意義 33
6.2 測試方法 33
6.3測試分析 33
結 論 35
致 謝 36
參考文獻 37
1 概述
1.1課題背景
隨看信息需求的增長,傳統的信息交流方式早已不能滿足企業對傳遞和處理大量信息的需要,因此亟需把網絡技術滲透到企業的日常工作。而網絡辦公與管理的應用則滿足了企業對辦公網絡化、自動化的管理需求,不僅可以極大地提高企業內部的管理水平,并加快內部信息流通,確保信息有效利用,增強企業的核心競爭力。
20世紀70年代中期在企業和行政機關中興起使用公自動化系統,而后因其給企業和單位帶來的便利而迅速被用于中小型企業單位中,其是采用一-系列現代化的辦公設備和先進的通信技術,廣泛、全面、迅速地收集、整理、加工、存儲和使用信息,使企業內部人員方便快捷地共享信息,高效地協同工作;改變過去復雜、低效的手工辦公方式,為科學管理和決策服務,從而達到提高行政效率的目的。一個企業實現辦公自動化的程度也是衡量其實現現代化管理的標準。
1.2 研究意義
我國辦公自動化的發展過程中,辦公自動化建設取得了很多成績,同時也暴露了很多問題,如投資大、效果不明顯、水平低、重復建設多、硬件投入多、軟件投入少、模擬手工作業增加管理負擔等。辦公人員大都非計算機專業人員,他們的計算機知識尤其是計算機操作系統及硬件知識的缺乏,導致辦公效率的降低,也造成系統管理員工作量的增大如系統維護及軟件升級。成本計算機技術的發展可謂一-日千里,軟硬件的升級換代將更加的頻繁,這就意味著系統后期成本居高不下。當今政府、企事業對信息的價值有了更深的認識,因而對信息的存儲和保密也就更加重視。而今,病毒的破壞、黑客的入侵等都將對系統信息以致使的打擊。
傳統紙質的審批方式浪費了很多人力、物力、財力,且效率低下,增加工作人員壓力和辦公經費。
1.3本文的組織結構
第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了學生請假審批管理系統的所采用的開發技術和開發工具。
第三章是系統分析部分,包括系統總體需求描述、功能性角度分析系統需求、非功能性等各個方面分析系統是否可以實現。
第四章是系統設計部分,本文章的重要部分,提供了系統架構的詳細設計和一些主要功能模塊的設計說明。
第五章是系統的具體實現,介紹系統的各個模塊的具體實現。
第六章在前幾章的基礎上對系統進行測試和運行。
最后對系統進行了認真的總結,以此對未來有一個新的展望。
2 關鍵技術介紹
2.1開發技術
本系統前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型。后端部分:采用springboot作為開發框架,同時集成MyBatis、Redis等相關技術。
2.2 MVVM模式
MVVM是Model-View-ViewModel的簡寫。它本質上就是MVC 的改進版。MVVM 就是將其中的View 的狀態和行為抽象化,讓我們將視圖 UI 和業務邏輯分開。當然這些事 ViewModel 已經幫我們做了,它可以取出 Model 的數據同時幫忙處理 View 中由于需要展示內容而涉及的業務邏輯。微軟的WPF帶來了新的技術體驗,如Silverlight、音頻、視頻、3D、動畫……,這導致了軟件UI層更加細節化、可定制化。同時,在技術層面,WPF也帶來了 諸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate等新特性。MVVM(Model-View-ViewModel)框架的由來便是MVP(Model-View-Presenter)模式與WPF結合的應用方式時發展演變過來的一種新型架構框架。它立足于原有MVP框架并且把WPF的新特性糅合進去,以應對客戶日益復雜的需求變化。
2.3 MySQL數據庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的計算機硬件售賣系統也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
2.4 B/S結構
B/S(瀏覽器/服務器)結構是目前主流的網絡化的結構模式,它能夠把系統核心功能集中在服務器上面,可以幫助系統開發人員簡化操作,便于維護和使用。只需要用戶在客戶端安裝360瀏覽器、谷歌瀏覽器、QQ瀏覽器等當前大眾瀏覽器,在電腦里面安裝sqlserver、mysql數據庫等數據庫。安裝好的瀏覽器與服務器端的數據庫進行信息數據的交互。很多專門軟件能夠做到的事情,采用B/S結構模式也能實現,它能夠結合Web瀏覽器技術,ActiveX技術以及多種腳本語言等技術。幫助程序開發者節約了不少開發成本。目前B/S結構成為程序開發主流結構,它最好的地方就是沒有地點限制還不用專門安裝軟件,筆記本或者電腦能夠上網就能訪問系統。系統使用B/S進行開發在后期系統維護上面就會很省事,不用什么問題都在服務器上面操作,簡單的客戶端處理就解決部分問題,開發出來的程序跟用戶交互性上面也會增強,還可以實時刷新瀏覽器進行程序局部的數據信息更新。
圖1-1 B/S模式三層結構圖
2.5spring boot框架介紹
Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。
2.6 Vue.js 主要功能
Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue采用自底向上增量開發的設計。Vue 的核心庫只關注視圖層,并且非常容易學習,非常容易與其它庫或已有項目整合。另一方面,Vue 完全有能力驅動采用單文件組件和Vue生態系統支持的庫開發的復雜單頁應用。
Vue.js 的目標是通過盡可能簡單的 API 實現響應的數據綁定和組合的視圖組件。
Vue.js 自身不是一個全能框架——它只聚焦于視圖層。因此它非常容易學習,非常容易與其它庫或已有項目整合。另一方面,在與相關工具和支持庫一起使用時,Vue.js 也能驅動復雜的單頁應用。
3 系統分析
所謂系統分析就是,需求人員通過與客戶的溝通,所獲取的信息,然后把這些信息通過需求說明書的方式展示給用戶和開發人員。在軟件功能發展的歷史長河中,很長時間,特別是最開始的時候,需求分析的重要性并不被人們所認同,例如當時美國IBM公司為英國電信公司開發一套信息管理系統,在需求不明確的情況下開始開發,最初的工期為一年,由于需求獲取不清晰導致工期推遲了半年多,造成巨大損失。我們很多軟件公司也存在這種情況,邊需求,邊開發,甚至與客戶沒有溝通清楚的情況下,直接照搬同類型的項目進行更改,導致到系統驗收的時候,重新更改,造成了人力、物力的極大浪費。而導致這一切后果的原因就是需求獲取不及時、不清楚、不全面。
3.1 可行性分析
學生請假審批管理系統主要目標是實現預約教室相關信息管理服務。在確定了目標后,我們從以下四方面對能否實現本系統目標進行可行性分析。
3.1.1 技術可行性
學生請假審批管理系統主要采用java技術,基于B/S結構,Mysql數據庫,對于應用程序的開發要求具備完整功能,使用簡單的特點,并建立一個數據完整安全穩定的數據庫。學生請假審批管理系統的開發技術具有很高可行性,且開發人員掌握了一定的開發技術,所以系統的開發具有可行性。
3.1.2操作可行性
學生請假審批管理系統的登錄界面簡單易于操作,采用常見的界面窗口來登錄界面,通過電腦進行訪問操作,會員只要平時使用過電腦都能進行訪問操作。此系統的開發采用java語言開發,基于B/S結構,這些開發環境使系統更加完善。本系統具有易操作、易管理、交互性好的特點,在操作上是非常簡單的。因此本系統可以進行開發。
3.1.3 經濟可行性
學生請假審批管理系統是基于B/S模式,采用Mysql數據庫儲存數據,所要求的硬件和軟件環境,市場上都很容易購買,程序開發主要是管理系統的開發和維護。所以程序在開發人力、財力上要求不高,而且此系統不是很復雜,開發周期短,在經濟方面具有較高的可行性。
3.1.4 法律可行性
此學生請假審批管理系統是自己設計的管理系統,具有很大的實際意義。因為無論是軟件還是數據庫,采用的都是開源代碼,因此這個系統的開發和設計,并不存在侵權等問題,在法律上完全具有可行性。
綜上所述,學生請假審批管理系統在技術、經濟、操作和法律上都具有很高的可行性,開發此程序是可行的。
3.2系統流程分析
3.2.1系統開發流程
學生請假審批管理系統開發時,首先進行需求分析,進而對系統進行總體的設計規劃,設計系統功能模塊,數據庫的選擇等,本系統的開發流程如圖3-1所示
圖3-1系統開發流程圖
3.2.2 用戶登錄流程
為了保證系統的安全性,要使用本系統對系統信息進行管理,必須先登陸到系統中。如圖3-2所示。
圖3-2 登錄流程圖
3.2.3 系統操作流程
用戶打開并進入系統后,會先顯示登錄界面,輸入正確的用戶名和密碼,系統自動檢測信息,若信息無誤,則用戶會進入系統功能界面,進行操作,否則會提示錯誤無法登錄,操作流程如圖3-3所示。
圖3-3 系統操作流程圖
3.2.4 添加信息流程
管理員可以對信息等進行信息的添加,用戶也可以對自己權限內的信息進行添加,輸入信息后,系統會自行驗證輸入的信息和數據,若信息正確,會將其添加到數據庫內,若信息有誤,則會提示重新輸入信息,添加信息流程如圖3-4所示。
圖3-4 添加信息流程圖
3.2.5 修改信息流程
管理員可以對信息等進行的修改,用戶也可以對自己權限內的信息進行修改,首先進入修改信息界面,輸入修改信息數據,系統進行數據的判斷驗證,修改信息合法則修改成功,信息更新至數據庫,信息不合法則修改失敗,重新輸入。修改信息流程圖如圖3-5所示。
圖3-5 修改信息流程圖
3.2.6 刪除信息流程
管理員可以對信息等進行信息的刪除,對要刪除的信息進行選中后,點擊刪除按鈕,系統會詢問是否確定,若點擊確定,則系統會刪除掉選中的信息,并在數據庫內對信息進行刪除,刪除信息流程圖如圖3-6所示。
圖3-6 刪除信息流程圖
3.3系統用例分析
管理員用例圖
系統中的核心用戶是系統管理員,管理員登錄后,通過管理員菜單來管理后臺系統。主要功能有:首頁、用戶管理、公告通知、請假申請、請假審批等功能。管理員用例如圖3-7所示。
圖3-7 管理員用例圖
用戶用例圖
用戶進入系統可以進行首頁、通知公告、請假審批、請假申請等功能操作。用戶用例如圖3-8所示。
圖3-8用戶用例圖
4 系統設計
4.1 系統概述
進過系統的分析后,就開始記性系統的設計,系統設計包含總體設計和詳細設計。總體設計只是一個大體的設計,經過了總體設計,我們能夠劃分出系統的一些東西,例如文件、文檔、數據等。而且我們通過總體設計,大致可以劃分出了程序的模塊,以及功能。但是只是一個初步的分類,并沒有真正的實現。
整體設計,只是一個初步設計,而且,對于一個項目,我們可以進行多個整體設計,通過對比,包括性能的對比、成本的對比、效益的對比,來最終確定一個最優的設計方案,選擇優秀的整體設計可以降低開發成本,增加公司效益,從這一點來講,整體設計還是非常重要的。
學生請假審批管理系統工作原理圖如圖4-1所示:
圖4-1 系統工作原理圖
4.2 系統結構設計
系統架構圖屬于系統設計階段,系統架構圖只是這個階段一個產物,系統的總體架構決定了整個系統的模式,是系統的基礎。學生請假審批管理系統的整體結構設計如圖4-2所示。
圖4-2 系統結構圖
4.3數據庫設計
數據庫是信息系統的基礎和核心。數據庫設計的好壞直接影響到信息系統開發的成敗。創建數據庫表首先確定實體的屬性和實體之間的關系。根據關系創建一個數據表。
4.3.1實體ER圖
數據庫是整個軟件編程中最重要的一個步驟,對于數據庫問題主要是判定數據庫的數量和結構公式的創建。展示系統使用的是Mysql進行對數據庫進行管理,進行保證數據的安全性、穩定性等。
概念模型的設計是為了抽象真實世界的信息,并對信息世界進行建模。它是數據庫設計的強大工具。數據庫概念模型設計可以通過E-R圖描述現實世界的概念模型。系統的E-R圖顯示了系統中實體之間的鏈接。而且Mysql數據庫是自我保護能力比較強的數據庫,下圖主要是對數據庫實體的E-R圖:
1.請假時間信息實體圖如圖4-3所示:
圖4-3請假時間信息實體圖
2.請假審批信息實體圖如圖4-4所示:
圖4-4請假審批實體圖
4.3.3 數據庫表設計
數據庫的表信息屬于設計的一部分,下面介紹數據庫中的各個表的詳細信息。
student表:
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
student_id | int | 11 | 是 | 是 | 學生ID |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 255 | 否 | 否 | 身份證 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
user_id | int | 11 | 是 | 否 | 用戶ID |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
leave_approval表:
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
leave_approval_id | int | 11 | 是 | 是 | 請假審批ID |
student_account | int | 11 | 否 | 否 | 學生賬號 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
mobile_phone | varchar | 64 | 否 | 否 | 手機 |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 64 | 否 | 否 | 身份證 |
leave_time | varchar | 64 | 否 | 否 | 請假時間 |
reason_for_leave | varchar | 64 | 否 | 否 | 請假原因 |
length_of_leave | varchar | 64 | 否 | 否 | 請假時長 |
leave_type | varchar | 64 | 否 | 否 | 請假類型 |
headmaster | int | 11 | 否 | 否 | 班主任 |
instructor | int | 11 | 否 | 否 | 輔導員 |
hospital_leaders | int | 11 | 否 | 否 | 院領導 |
head_teacher_approval_opinions | text | 0 | 否 | 否 | 班主任審批意見 |
counselor_approval_comments | text | 0 | 否 | 否 | 輔導員審批意見 |
approval_opinions_of_ leaders_of_the_institute | text | 0 | 否 | 否 | 院領導審批意見 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
household_opinion表
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
household_opinion_id | int | 11 | 是 | 是 | 住戶意見ID |
title | varchar | 64 | 否 | 否 | 標題 |
message_time | date | 0 | 否 | 否 | 留言時間 |
message_person | int | 11 | 否 | 否 | 留言人 |
message_content | text | 0 | 否 | 否 | 留言內容 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
leave_application表:
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
leave_application_id | int | 11 | 是 | 是 | 請假申請ID |
student_account | int | 11 | 否 | 否 | 學生賬號 |
full_name | varchar | 64 | 否 | 否 | 姓名 |
mobile_phone | varchar | 64 | 否 | 否 | 手機 |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 64 | 否 | 否 | 身份證 |
leave_time | datetime | 0 | 否 | 否 | 請假時間 |
length_of_leave | int | 11 | 否 | 否 | 請假時長 |
location | varchar | 64 | 否 | 否 | 所在地點 |
leave_type | varchar | 64 | 否 | 否 | 請假類型 |
headmaster | int | 11 | 否 | 否 | 班主任 |
instructor | int | 11 | 否 | 否 | 輔導員 |
hospital_leaders | int | 11 | 否 | 否 | 院領導 |
reason_for_leave | text | 0 | 否 | 否 | 請假原因 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
instructor表:
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
instructor_id | int | 11 | 是 | 是 | 輔導員ID |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 255 | 否 | 否 | 身份證 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
user_id | int | 11 | 是 | 否 | 用戶ID |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
hospital_leaders表:
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
hospital_leaders_id | int | 11 | 是 | 是 | 院領導ID |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 255 | 否 | 否 | 身份證 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
user_id | int | 11 | 是 | 否 | 用戶ID |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
Headmaster表 :
名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
headmaster_id | int | 11 | 是 | 是 | 班主任ID |
gender | varchar | 64 | 否 | 否 | 性別 |
id | varchar | 255 | 否 | 否 | 身份證 |
examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
recommend | int | 11 | 是 | 否 | 智能推薦 |
user_id | int | 11 | 是 | 否 | 用戶ID |
create_time | datetime | 0 | 是 | 否 | 創建時間 |
update_time | timestamp | 0 | 是 | 否 | 更新時間 |
|
|
|
|
|
|
5系統詳細設計
5.1數據庫訪問層的實現
從B/S架構的原理可知,實驗室預約管理系統的各大模塊的實現均需要對數據庫的數據進行操作,具體包括查詢數據、寫入數據、更新數據和刪除數據,因此,在開發各功能模塊前,連接數據庫文件在Resources 文件夾下的application.yml文件。
第一個參數代表MySQL數據庫的驅動,第二個參數代表要連接的數據庫,第三個和第四個參數代表數據庫連接名和密碼。
5.2注冊模塊的實現
用戶在填寫數據的時候必須與注冊頁面上的驗證相匹配否則會注冊失敗,注冊頁面的表單驗證是通過JavaScript進行驗證的,用戶名的長度必須在6到18之間,郵箱必須帶有@符號,密碼和密碼確認必須相同,你輸入的密碼,系統會根據你輸入密碼的強度給出指定的值,電話號碼和身份證號碼必須要求輸入格式與生活相符合,當你前臺驗證通過的時候你點擊注冊,表單會將你輸入的值通過name值傳遞給后臺并保存到數據庫中。
用戶注冊流程圖如下圖所示。
圖5-1用戶注冊流程圖
用戶注冊界面如下圖所示。
圖5-1用戶注冊界面
用戶注冊的關鍵代碼如下。
/**
* 注冊
* @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);
}
5.3登錄模塊的實現
系統的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進入訪問。通過在登錄提交表單,后臺處理判斷是否為合法用戶,進行頁面跳轉,進入系統中去。
登錄合法性判斷過程:用戶輸入賬號和密碼后,系統首先確定輸入輸入數據合法性,然后在login.jsp頁面發送登錄請求,調用src下的mainctrl類的dopost方法來驗證。
用戶登錄模塊的IPO如下所示:
輸入:用戶名和密碼。
處理:
1)檢測用戶輸入的賬號、密碼是否正確及在數據庫已對應存在。
2)從數據庫中提取記錄,并儲存在本地的session中(timeout默認=30min)。
3)根據用戶名,將其顯示在系統首頁上。
輸出:是否成功的信息。
登錄流程圖如下所示。
圖5-1登錄流程圖
系統登錄界面如下所示。
圖5-1登錄界面圖
登錄關鍵代碼如下所示。
/**
* 登錄
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[執行登錄接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.select(map, new HashMap<>()).getResultList();
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.select(map, new HashMap<>()).getResultList();
}else{
return error(30000, "賬號或密碼不能為空");
}
if (resultList == null || password == null) {
return error(30000, "賬號或密碼不能為空");
}
//判斷是否有這個用戶
if (resultList.size()<=0){
return error(30000,"用戶不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();
if (groupList.size()<1){
return error(30000,"用戶組不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查詢用戶審核狀態
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();
String res = String.valueOf(service.runCountSql(sql).getSingleResult());
if (res==null){
return error(30000,"用戶不存在");
}
if (!res.equals("已通過")){
return error(30000,"該用戶審核未通過");
}
}
//查詢用戶狀態
if (byUsername.getState()!=1){
return error(30000,"用戶非可用狀態,不能登錄");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存儲Token到數據庫
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用戶信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "賬號或密碼不正確");
}
}
5.4用戶資料修改模塊的實現
用戶登錄/注冊成功之后可以修改自己的基本信息。修改頁面的表單中每一個input的name值都要與實體類中的參數相匹配,在用戶點擊修改頁面的時候,如果改后用戶名與數據庫里面重復了,頁面會提示該用戶名已經存在了,否則通過Id來查詢用戶,并將用戶的信息修改為表單提交的數據。
5.5公告通知模塊的實現
公告通知信息過程中,首先通過公告ID得到公告數據,將公告數據賦值給公告信息,調用insert方法將公告數據插入入住表中,最后查看個人歷史公告信息記錄,可以銷毀歷史共公告數據。
公告通知流程圖如下所示。
圖5-1公告通知流程圖
公告通知管理界面如圖所示。
圖5-1通知公告管理界面圖
通知公告關鍵代碼如下所示。
@RequestMapping(value = {"/sum_group", "/sum"})
public Map<String, Object> sum(HttpServletRequest request) {
Query count = service.sum(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
5.6請假申請模塊的實現
添加請假申請信息時,輸入必填字段后,表現層接受傳過來的請假申請信息參數,再調用業務層的addSushe方法,經過業務層到持久層的處理,完成對整個添加請假申請信息的操作。addSushe方法也和用戶管理中的addUser方法類似,同時做添加和修改工作。
修改請假申請信息時,選擇需要修改的請假申請進行修改,調用業務層的editSushe方法,拿到該請假原本的信息并顯示到頁面,管理員再對需要修改的請假信息字段進行修改,完成后調用addSushe方法,調用業務層的updateByKey方法,更新數據庫請假表的數據。
請假申請管理流程圖如下所示。
圖5-1請假申請管理流程圖
請假申請管理界面如下圖所示。
圖5-1請假申請管理界面圖
請假申請關鍵代碼如下所示。
@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());
}
5.7學生管理模塊的實現
管理員對系統學生的管理,包括管理員學生管理,注冊學生管理、昵稱、姓名修改,在yhzhgl.aspx.cs實現管理員學生的管理,包括錄入、刪除、修改,修改密碼通過SESSION獲取學生名,然后輸入新密碼,提交到mod.aspx.cs中,使用sql命令更新密碼添加學生后,學生也可以使用賬號和密碼登錄系統。
學生管理界面如下圖所示。
圖5-1學生管理界面圖
學生管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
@Transactional
public void delete(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
log.info("[{}] - 刪除操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
5.8請假審批管理模塊
添加請假審批信息時,輸入必填字段后,表現層接受傳過來的請假審批信息參數,再調用業務層的addSushe方法,經過業務層到持久層的處理,完成對整個添加請假審批信息的操作。addSushe方法也和用戶管理中的addUser方法類似,同時做添加和修改工作。
修改請假信息時,選擇需要修改的請假審批進行修改,調用業務層的editSushe方法,拿到該請假審批原本的信息并顯示到頁面,管理員再對需要修改的請假信息字段進行修改,完成后調用addSushe方法,調用業務層的updateByKey方法,更新數據庫的請假審批表的數據。
請假審批管理流程圖如下所示。
圖5-1請假審批管理流程圖
請假審批管理界面如下圖所示。
圖5-1請假審批管理界面圖
請假審批管理關鍵代碼如下所示。
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
@Transactional
public void delete(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("DELETE FROM ").append("`").append(table).append("`").append(" ");
sql.append(toWhereSql(query, "0".equals(config.get(FindConfig.GROUP_BY))));
log.info("[{}] - 刪除操作:{}",table,sql);
Query query1 = runCountSql(sql.toString());
query1.executeUpdate();
}
6系統測試
一個系統設計好后,就會進入測試階段,測試的目標是檢驗設計好的網站是否可以正常無誤的運行,盡可能的發現網站的問題,已使后期網站投入使用后網站盡少出錯。
6.1 測試定義
系統測試主要是判斷系統是否可以正常運行,功能模塊是否可以實現操作。程序代碼中是否有錯誤出現。測試程序是開發過程中的一個主要問題。就算系統完成的再好,再進行程序測試時也會發現一個從來沒有被發現的錯誤信息。
測試不僅是系統開發的開始,而且應該貫穿整個系統的整個生命周期。評估系統質量的方法不局限于系統編碼和過程,應該與軟件設計工作和歷史需求分析密切相關。系統錯誤,不一定是代碼錯誤,可能是階段的設計摘要和設計細節存在問題,問題也可能出現在需求分析階段。從實際情況來看,最初的問題很可能是一個小錯誤,根據按鈕的原理,按鈕后的按鈕位錯將是所有位錯。該系統的原因也同樣適用,隨著后續的開發工作,誤差將越來越嚴重。因此就應該對系統進行測試,在一開始就發現系統中存在的問題,就能保證以后系統能夠正常穩定的運行。在測試系統中,開發人員應該站在用戶的角度來處理測試工作,而現在主要的測試方法是黑盒測試。測試的目的可以概括為以下幾點:首先,用戶界面和用戶需求是一致的,設置界面和設計風格統一;第二,創新設計接口規范設計標準,具有獨特的審美特征;最后,人類傳統的接口以滿足審美需求,不能盲目地追求一種獨特的,合理的規劃布局,符合審美標準。
6.2 測試目的
測試的目的在于要對系統的穩定和可操作性能進行對照檢查。對于軟件的開發利用最終的目的在最后的測試和試用,這是一個不可缺少的重要環節。對于軟件開發者而言,在對每一個單獨的功能進行編排時候,都要有單獨的測試,并通過測試階段才可以研發多個功能性軟件,這樣既縮短了研發時間,也可以在的單個的早期測試中發現問題,以免融合后的軟件,在查找問題時就很難快速解決或者急速定位問題。
學生請假審批管理系統開發設計完成后,需要對其進行系統測試,測試的主要目的就是發現并找出系統中存在的問題,并及時的進行解決,確保系統可以正常穩定的運行下去,在進行系統測試的時候,在一定要非常的認真、仔細,切記不能粗心,不能放過一個漏洞,測試時候一定不要著急,要按照之前指定好的測試步驟一步一步進行,并且將測試的結果進行詳細的記錄,我們在進行測試的時候做好選擇自動化的測試,這樣既可以節省時間而且也能確保測試的準確性,如果采用人工測試的方法就不會這么的方便,由于人工測試有很多不確定的因素,在測試過程中很可能會出現一些問題,用機器測試就不會出現任何的問題,而且機器不會疲憊會一直二等工作下去。在測試的時候一定要非常專注,時刻關注著測試的結果,一但發現異常及時進行修改,最后,測試完之后的文檔應該保存下來,方便以后測試時用到。系統測試的方法有很多,對于本學生請假審批管理系統 的測試,我們使用了測試用得最多的黑盒測試方法來對該系統進行測試。
6.3測試方案
對測試計劃的把握是測試方案的重中之重。所有的技術難點應該都被包含在這個測試計劃之中。而且我們要保證能與目標形成一致性,以至于能夠測試出一些主要存在的錯誤和一些錯誤的漏洞。可以完美解決這些問題就只有白盒測試或者黑盒測試[14]。
構造測試是白盒測試的另一個名字,了解與分析程序的結構以及性能功用的,從而我們可以得到最終想要的結果并且觀察出是不是每一條程序都能得到。
性能測試是黑盒測試別稱,程序本身的運作通過程序的進程來觀察,主要是看一下程序是不是能夠像我們預期的目標那樣發展,看一看我們的程序最終能不能完整的得到我們最后想要的功能和儲存想得到的數據,到最后看一下我們的這個程序完整性能不能達到要求。
(1)模塊測試
單元測試就是模塊測試,顧名思義就是測試每個模塊所承擔的功能是否能夠實現,這個測試就是為了找出代碼在實際的設計運轉中某一些小的程序所出現的偏差,很好地改正這些錯誤,就說明我們模塊測試進行很成功過。
(2)集成測試:
集成測試就是對系統的測試以及對他子系統的一些性能測試,他檢查的事系統的包裝程序信息。找出其中的問題。他的優勢主要有以下這幾點:
軟件耗費較少。
可以提前發現端口的錯誤。
更好的地位系統中錯誤的位置。
從底部往上面進行的方案針對于偏下層的結構,而中間的結構就采用折中的方法。
(3)驗收測試:
終于到了結尾性的工作了。就是為了給用戶看一下我們的系統功能是否達到了預期的效果。我采用了性能測試也就是黑盒測試對系統進行測試。
其結果是分別是:
有一定的差異在用戶的需求。
再者就是結果與之差不了多少。
到了最后了,我們發現的問題都是與用戶的需求存在一定的關聯。
1、登錄測試
測試點:登錄
測試的目標:輸入賬號密碼以及驗證碼后系統會自動進行驗證是否正確。
所用的環境:Windows10和IE瀏覽器。
輸入信息:用戶名、密碼。
步驟:
(1)首先我們打來瀏覽器,進入該系統的登錄界面。
(2)在進入頁面登錄部分以后可以進行對用戶名、密碼進行測試,具體測試輸入情況如下表6.1所示。
表6.1 登錄測試
情況 | 用戶名輸入 | 密碼輸入 | 期望結果 |
(1) | 15546219225 | 1244566 | 提示“用戶名或者密碼錯誤,或賬號未經審核” |
(2) | aaaaa | 123456 | 提示“用戶名或密碼錯誤,或者賬號未經審核” |
(3) | 15546219225 | hangguowei | 登陸成功 |
2、教室預約信息測試:
表6.2 教室預約管理測試用例表
用例編號 | UC-TEST-003 | 測試名稱 | 客戶信息 | |
前提條件 | 請假審批管理 | |||
步驟 | 操作描述 | 數據 | 期望結果 | |
1 | 點擊請假審批管理查看詳情按鈕 | 無 | 跳轉到請假審批管理詳情 | |
2 | 點擊添加按鈕 | 無 | 跳轉到添加頁面 | |
3 | 選中添加后按鈕 | 無 | 跳轉到請假審批管理頁面 | |
測試說明 | 用戶未登錄時到步驟3跳轉到登錄頁面 | |||
測試結果 | 成功 | 測試人 |
| |
6.4系統分析
本學生請假審批管理系統設計要求基本都可以達到,此系統具有完整的軟件功能,良好的用戶界面,能夠正確的處理錯誤信息,而且能夠準確的提出錯誤的種類。但是系統測試時也出現了一些系統的不足和缺陷,所以在今后的日子里我會對其視覺上的不足作出修改,其次系統的代碼和數據庫出現了非常多的冗余現象,都是因為對編程技術的應用不夠熟練,在日后我會加強自己的自身學習和能力,減少這樣的冗余現象。
經過對上述的測試結果分析,本學生請假審批管理系統無論是在技術方面,還是操作方面,還是經濟方面都是完全可以實行的,并且經過測試,該系統操作簡單,所有的功能都可以實現,因此該系統可以滿足用戶的使用需求,值得被推廣。
總體說來,軟件通過測試。
結 論
本系統通過對java和Mysql數據庫的簡介,從硬件和軟件兩反面說明了學生請假審批管理系統的可行性,本文結論及研究成果如下:實現了java與Mysql相結合構建的學生請假審批管理系統,網站可以響應式展示。通過本次學生請假審批管理系統的研究與實現,我感到學海無涯,學習是沒有終點的,而且實踐出真知,只有多動手才能盡快掌握它,經驗對系統的開發非常重要,經驗不足,就難免會有許多考慮不周之處。比如要有美觀的界面,更完善的功能,才能吸引更多的用戶。
由于在此之前對于java知識沒有深入了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規范、數據庫連接有問題已經無法實現參數的傳遞等等,不過通過在網上尋找有關資料以及同學的幫助下最后都得到了解決,在此過程中,我不僅學到了很多知識,也提高了自己解決問題的能力,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。
通過這次學生請假審批管理系統的開發,我參考了很多相關系統的例子,取長補短,吸取了其他系統的長處,逐步對該系統進行了完善,但是該系統還是有很多的不足之處,有待以后進一步學習。
實踐證明,學生請假審批管理系統有著非常好的發展前景,經過測試運行,系統各項功能都十分完善,界面漂亮,使用方便,操作容易,在技術理論上已經成熟。
致 謝
大學的學習生活在這個季節將結束,但是在我的生命這僅僅只是一個逗號,我將面對的旅程的另一個的開始。通過這次畢業設計的整個開發過程,從需求分析到具體功能實現,再到最終測試和維護的理解有了很大的進步,讓我對系統開發有了更深刻的認識,對我個人的實踐能力和解決問題的能力,都有了很大的幫助。這是這次畢業設計最大的收獲。
首先要感謝我的指導老師,他在論文寫作上,給予了我各種無私的幫助,治學嚴謹,嚴格要求,使我獲得了很大的收獲。老師深厚的理論知識和豐富的實踐經驗,都深深的影響到我,在這方面,我謹表示衷心的感謝。
其次,我還要對所有的老師和同學表示感謝,他們在我學習的過程中,都積極的提供了很多幫助,無論是專業知識,還是實踐操作技能,也能夠讓我在論文寫作中,遇到的一些難題迎刃而解。
最后,對閱讀和評審本論文的各位老師表示衷心的感謝!
參考文獻
[1]王鑫,馮程,曹江波,張自然. 基于Spring Boot的數據可視化方法、裝置以及存儲介質[P]. 北京市:CN113986205A,2022-01-28.
[2]李艷杰.基于JAVA與MySQL數據庫的移動端題庫練習系統的設計與實現[J].黑龍江科學,2022,13(02):56-57.
[3]王一竹.基于MySQL的圖書館信息管理系統設計[J].電腦編程技巧與維護,2022(01):93-95+116.
[4]楊英櫻,喬運華,班玉榮.基于spring boot微服務架構的RS10系統管理[J].制造業自動化,2021,43(12):193-196.
[5]馮凱.“MySQL數據庫”課程教學中常見問題探析[J].無線互聯科技,2021,18(24):158-159.
[6]劉娟,任光芹,左欣,湛佳軍,崔忠偉.基于Spring Boot的財政一體化管控平臺設計與實現[J].物聯網技術,2021,11(12):78-80.
[7]鄒燕飛,劉淑英,黃旺.基于Spring Boot的扶貧信息管理系統的設計與實現[J].數字技術與應用,2021,39(11):155-157.
[8]焦斌斌.基于Spring Boot研究生考試系統的設計與實現[J].電腦知識與技術,2021,17(32):78-80.
[9]王嘉慶,邢佑耐.物聯網背景下中職學生綜合管理系統的設計[J].辦公自動化,2021,26(15):23-25.
[10]金明俐. 基于Spring Boot與Vue框架的叫號系統的設計與實現[D].中國地質大學(北京),2021.
[11]Bouamrane Karim,Matallah Houcine,Belalem Ghalem. Comparative Study Between the MySQL Relational Database and the MongoDB NoSQL Database[J]. International Journal of Software Science and Computational Intelligence (IJSSCI),2021,13(3):
[12]Xinwen Zhang,Siyuan Wen,Rui Wang. Implementation of Vehicle Management System Based on Spring Boot and VUE[C]//第33屆中國控制與決策會議論文集(9).,2021:519-523.
[13]周清松,付星宇.高校學生請假管理系統的設計與開發[J].電腦知識與技術,2021,17(13):63-66+85.
[14]Mavrich Travis N,Gauthier Christian,Abad Lawrence,Bowman Charles A,Cresawn Steven G,Hatfull Graham F. pdm_utils: a SEA-PHAGES MySQL phage database management toolkit.[J]. Bioinformatics (Oxford, England),2020,37(16):
[15]楊超智. 基于Spring boot框架的預警監測平臺[C]//中國移動5G天線產業技術研討會論文集.,2020:90-92.
[16]羅萬新,唐合丞.基于學生管理系統處理學生事務技巧[J].電子世界,2020(16):25-26.
[17]閆博.混合模式下高校學生請假管理系統設計研究[J].信息通信,2020(08):163-164.
[18]楊華,陳水容,唐天國,王麗,胡振,羅江碧.基于混合模式的學生請假管理系統的研究與開發[J].電腦知識與技術,2020,16(07):69-70+84.
[19]楊曉芳. 保山學院學生管理系統研究與分析[D].云南大學,2017.
免費領取項目源碼,請關注點贊+私聊
總結
以上是生活随笔為你收集整理的(附源码)springboot+mysql+基于Java的学生请销假审批管理系统的设计与实现 毕业设计130939的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C51单片机——温度传感器
- 下一篇: Northwind数据库Pubs数据库文