(附源码)ssm驾校考试车预约管理系统 毕业设计 271506
SSM駕校考試車預約管理系統
摘 ?要
科技進步的飛速發展引起人們日常生活的巨大變化,電子信息技術的飛速發展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流,人類發展的歷史正進入一個新時代。在現實運用中,應用軟件的工作規則和開發步驟,采用SSM框架建設駕校考試車預約管理系統。
本設計主要實現集人性化、高效率、便捷等優點于一身的駕校考試車預約管理系統,完成首頁、用戶管理、學車檔案管理、預約中心、預約信息管理、取消預約、車輛報修等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。駕校考試車預約管理系統開發是采用基于 MVC模式的SSM框架進行開發,使用 MyEclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的MySQL關系型數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞 :駕校考試車預約;數據庫;SSM?
SSM driving school test vehicle reservation 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 SSM framework is used to build the driving school test vehicle reservation management system.
This design mainly realizes the driving school test car reservation management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules such as home page, user management, learning car file management, reservation center, reservation information management, cancellation of reservation, vehicle repair application 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 development of driving test car reservation management system is based on the SSM framework based on MVC mode and written with 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:Driving test car reservation; database SSM
目 ???錄
1 概述
1.1課題目的及意義
1.2 主要工作內容
1.3 本文的組織結構
2 系統開發工具介紹
2.1 J2EE技術
2.2 MVC模式
2.3 MySQL數據庫
2.4 B/S結構
2.5 SSM框架
2.6 MyEclipse開發工具
2.7?B/S體系工作原理
3 系統分析 6
3.1 可行性分析 6
3.1.1 技術可行性 6
3.1.2操作可行性 6
3.1.3 經濟可行性 7
3.1.4 法律可行性 7
3.2系統流程分析 7
3.2.1系統開發流程 7
3.2.2 用戶登錄流程
3.2.3 系統操作流程
3.2.4 添加信息流程
3.2.5 修改信息流程
3.2.6 刪除信息流程
3.3系統用例分析
3.3.1管理員用例圖
3.3.2用戶前臺用例圖
4 系統設計
4.1 系統概述
4.2 系統結構設計
4.3數據庫設計 14
4.3.1 數據庫設計原則
4.3.2 數據庫實體
4.3.3 數據庫表設計
5系統統詳細設計 25
5.1用戶前臺功能模塊 25
5.2管理員功能模塊 28
6系統測試 33
6.1系統測試的意義
6.2 測試方法 34
6.3測試分析
結????論 35
致????謝 36
參考文獻 37
1 概述
1.1課題目的及意義
伴隨國民經濟的飛速發展和人民生活水平的不斷提高,家用汽車在我國逐漸普及。面對不斷增長的龐大的用戶群,隨之產生的駕駛培訓行業,規模不斷擴大。同時互連網已經成為人們日常生活,學習辦公中不可缺少的組成部分,而隨著互連網的不斷普及,網絡技術也得到了快速的發展。人們不再滿足于傳統的低效的辦公方式,迫切需要一種高效的方式代替傳統的方式,以適應社會的發展。而網絡是解決由于物理距離造成的信息交流不暢、協商溝通不便的管理瓶頸問題的最佳方式。于是各種各樣的駕校管理系統應運而生,它一比傳統的辦公方式更方便、快速、安全、經濟的優勢被駕駛培訓行業所青睞。
隨著工作與學習社會壓力的不斷增加,駕校學員對時間支配自由度的需求也越來越強烈,越來越迫切,駕校往往是能夠滿足這種需求的,這其中就出現了一個很大的矛盾,而隨著社會的不斷發展,這種矛盾越來越顯得突出。解決之道,是將傳統駕校考試車預約管理的業務處理服務延伸到網絡,并做好信息共享和支配,以更合理地使用現有資源進行政務執行。駕校考試車預約管理系統研究的目的,就是用最小的代價在盡可能短的時間內確定問題能得解決。
1.2?主要工作內容
駕校考試車預約管理系統的開發及實現,所需要的工作內容:
(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。
(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,駕校考試車預約管理系統的開發使用SSM框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。
(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對駕校考試車預約管理系統的設計主要劃分別為管理員和用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行在線預約,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作,管理員獲取到所有用戶的詳細數據信息,并根據需求進行第一時間處理解決。
(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。
1.3本文的組織結構
第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了駕校考試車預約管理系統的所采用的開發技術和開發工具。
第三章是系統分析部分,包括系統總體需求描述、功能性角度分析系統需求、非功能性等各個方面分析系統是否可以實現。
第四章是系統設計部分,本文章的重要部分,提供了系統架構的詳細設計和一些主要功能模塊的設計說明。
第五章是系統的具體實現,介紹系統的各個模塊的具體實現。
第六章在前幾章的基礎上對系統進行測試和運行。
最后對系統進行了認真的總結,以此對未來有一個新的展望。
2 系統開發環境??
2.1 J2EE技術
人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發出的“中間件”不夠規范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統的搭建穩定可用、開發高效、維護方便[1][2]。
2.2MVC模式
MVC模式是常用的開發模式,主要是在代碼實現上將其分為M層、V層和C層。
視圖(View)代表用戶交互界面,一個 Web 應用就可能有很多的界面,在 MVC 模式中,視圖僅僅處理的只有數據采集、處理,還有用戶的請求, 并不包括業務流程的處理,業務流程由模型(Model)來處理[3]。
模型(Model)就是業務流程/狀態的處理及業務規則的制定。模型處理業務流程的過程其它層是無法看見了的,它就像黑箱子,在接受視圖請求的數據之后,然后返回最終的處理結果。MVC 最主要的核心就是業務模型的設計,一個典型的應用例子就是目前流行的 EJB 模型,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但是它不能作為應用設計模型的框架[4]。
控制器(Controller)可以理解為接收用戶的請求,然后視圖和模型匹配在一起,一起再完成用戶請求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個分發器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請求。控制層不做所有的數據處理,比如說:用戶點擊一個連接,控制層接受到請求之后,并不處理業務信息,它只是向模型傳遞用戶的信息,同時告訴模型做什么,然后選擇符合需求的視圖返回給用戶[5][6]。
2.3MySQL數據庫
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的物流信息管理系統也需要這項技術的支持[7]。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象[8]。
2.4B/S結構
B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題[9]。
2.5SSM框架
SSM即SpringMVC+Spring+Mybatis,這三個框架有各自最獨有的優勢,那么將它們組合在一起能夠碰撞出很強的火花。設計者在不需消耗大量功夫,能做出Web應用程序,而且這個程序還具有層次清晰、升級更新操作不影響正常使用的、允許多次使用的特點。這個復合框架形成一個有著結構完整、功能強大和結構良好的體系:SpringMVC使各板塊分離,Spring使開發更靈活方便,使用Mybatis讓開發者直接對對象進行操縱,各層次分工明細,并實現各個層次間的解耦,讓代碼更加的靈活精簡。這個框架使程序員能夠規避在開發時期避免個別錯誤導致整體被破壞,也能在后期應對客戶對產品提出的新需求[10] [11]。
2.6MyEclipse開發工具
MyEclipse是由Genuitec公司開發的,一款功能非常強大的JavaEE的集成開發環境,其中包括有:完備的編碼、調試、測試和發布功能[10],完整支持JSP、Spring、CSS、JavaScript、SpringMVC、HTML、JSF、Mybatis、SQL等技術。在體系結構上,MyEclipse的特征可以被分為7類:JavaEE模型;Web開發工具、EJB開發工具、JavaEE項目部署服務、應用程序服務器的而連接器、數據庫服務、MyEclipse整合幫助[11]。
對于以上每一種功能的類別,在MyEclipse中都有相應的功能部件,并通過一系列的插件來實現它們。MyEclipse在結構上的這種模塊化,可以讓它在不影響其他模塊的情況下,對其中任意的一個模塊進行單獨的擴展和升級。強大的MyEclipse應用開發平臺也不僅僅只是Eclipse的插件而已,同時更是一款功能強大的,用于JavaEE的集成開發環境[12]。
2、7B/S體系工作原理:
B/S架構采取瀏覽器請求,服務器響應的工作模式。
用戶可以通過瀏覽器去訪問Internet上由Web服務器產生的文本、數據、圖片、動畫、視頻點播和聲音等信息;
而每一個Web服務器又可以通過各種方式與數據庫服務器連接,大量的數據實際存放在數據庫服務器中;
從Web服務器上下載程序到本地來執行,在下載過程中若遇到與數據庫有關的指令,由Web服務器交給數據庫服務器來解釋執行,并返回給Web服務器,Web服務器又返回給用戶。在這種結構中,將許許多多的網連接到一塊,形成一個巨大的網,即全球網。而各個企業可以在此結構的基礎上建立自己的Internet。
在 B/S 模式中,用戶是通過瀏覽器針對許多分布于網絡上的服務器進行請求訪問的,瀏覽器的請求通過服務器進行處理,并將處理結果以及相應的信息返回給瀏覽器,其他的數據加工、請求全部都是由Web Server完成的。通過該框架結構以及植入于操作系統內部的瀏覽器,該結構已經成為了當今軟件應用的主流結構模式。
3 系統分析
所謂系統分析就是,需求人員通過與用戶的溝通,所獲取的信息,然后把這些信息通過需求說明書的方式展示給用戶和開發人員。在軟件功能發展的歷史長河中,很長時間,特別是最開始的時候,需求分析的重要性并不被人們所認同,例如當時美國IBM公司為英國電信公司開發一套信息管理系統,在需求不明確的情況下開始開發,最初的工期為一年,由于需求獲取不清晰導致工期推遲了半年多,造成巨大損失。我們很多軟件公司也存在這種情況,邊需求,邊開發,甚至與用戶沒有溝通清楚的情況下,直接照搬同類型的項目進行更改,導致到系統驗收的時候,重新更改,造成了人力、物力的極大浪費。而導致這一切后果的原因就是需求獲取不及時、不清楚、不全面。
3.1 可行性分析
駕校考試車預約管理系統主要目標是實現首頁、站點管理、(輪播圖、公告欄、)用戶管理(管理員)更多管理(學車檔案管理、預約中心、取消預約、車輛報修)系統管理的相關信息管理服務。在確定了目標后,我們從以下四方面對能否實現本系統目標進行可行性分析。
3.1.1 技術可行性
駕校考試車預約管理系統主要采用SSM框架,基于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.3.1管理員用例圖
系統中的核心用戶是系統管理員,管理員登錄后,通過管理員菜單來管理后臺系統。主要功能有:首頁、用戶管理、學車檔案管理、預約信息管理、預約中心管理、取消預約管理、車輛報修管理等功能。管理員用例如圖3-7所示。
?
圖3-7 管理員用例圖
3.3.2用戶(學員、教練)用例圖
用戶進入系統可以進行首頁、駕考資訊、預約中心、預約取消、學車檔案功能等。學員用例如圖3-8所示。
?
圖3-8 學員用例圖
?圖3-9?教練員用例圖
4 系統設計
4.1 系統概述
進過系統的分析后,就開始記性系統的設計,系統設計包含總體設計和詳細設計。總體設計只是一個大體的設計,經過了總體設計,我們能夠劃分出系統的一些東西,例如文件、文檔、數據等。而且我們通過總體設計,大致可以劃分出了程序的模塊,以及功能。但是只是一個初步的分類,并沒有真正的實現。
整體設計,只是一個初步設計,而且,對于一個項目,我們可以進行多個整體設計,通過對比,包括性能的對比、成本的對比、效益的對比,來最終確定一個最優的設計方案,選擇優秀的整體設計可以降低開發成本,增加公司效益,從這一點來講,整體設計還是非常重要的。
駕校考試車預約管理系統工作原理圖如圖4-1所示:
?
圖4-1 系統工作原理圖
4.2 系統結構設計
系統架構圖屬于系統設計階段,系統架構圖只是這個階段一個產物,系統的總體架構決定了整個系統的模式,是系統的基礎。駕校考試車預約管理系統的整體結構設計如圖4-2所示。
?
圖4-2 系統結構圖
4.3數據庫設計
數據庫是計算機信息系統的基礎。目前,電腦系統的關鍵與核心部分就是數據庫。數據庫開發的優劣對整個系統的質量和速度有著直接影響。
4.3.1 數據庫設計原則
數據庫的概念結構設計采用實體—聯系(E-R)模型設計方法。E-R模型法的組成元素有:實體、屬性、聯系,E-R模型用E-R圖表示,是提示用戶工作環境中所涉及的事物,屬性則是對實體特性的描述。在系統設計當中數據庫起著決定性的因素。下面設計出這幾個關鍵實體的實體—關系圖。
4.3.2 數據庫實體
數據模型中的實體(Entity),也稱為實例,對應現實世界中可區別于其他對象的“事件”或“事物”。
本系統的E-R圖如下圖所示:
1、學車檔案實體圖如圖4-3所示:
?
圖4-3學車檔案實體圖
2、用戶信息實體圖如圖4-4所示:
?
圖4-4用戶信息實體圖
3、預約信息實體圖如圖4-5所示:
?
圖4-5預約信息實體圖
4.3.3 數據庫表設計
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| student_user_id | int | 11 | 是 | 是 | 學員用戶ID |
| student_number | varchar | 64 | 是 | 否 | 學員編號 |
| student_name | varchar | 64 | 否 | 否 | 學員姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學員性別 |
| student_age | varchar | 64 | 否 | 否 | 學員年齡 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| coach_id | int | 11 | 是 | 是 | 教練ID |
| coach_number | varchar | 64 | 是 | 否 | 教練編號 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| vehicle_repair_id | int | 11 | 是 | 是 | 車輛報修ID |
| vehicle_number | varchar | 64 | 否 | 否 | 車輛編號 |
| repair_coach | int | 11 | 否 | 否 | 報修教練 |
| repair_time | datetime | 0 | 否 | 否 | 報修時間 |
| repair_vehicle | varchar | 255 | 否 | 否 | 報修車輛 |
| repair_details | text | 0 | 否 | 否 | 報修詳情 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| reservation_information_id | int | 11 | 是 | 是 | 預約信息ID |
| coach_number | int | 11 | 否 | 否 | 教練編號 |
| coach_name | varchar | 64 | 否 | 否 | 教練姓名 |
| contact_information | varchar | 64 | 否 | 否 | 聯系方式 |
| teaching_time | varchar | 64 | 否 | 否 | 教學時間 |
| teaching_location | varchar | 64 | 否 | 否 | 教學地點 |
| student_number | int | 11 | 否 | 否 | 學員編號 |
| student_name | varchar | 64 | 否 | 否 | 學員姓名 |
| time_of_appointment | datetime | 0 | 否 | 否 | 預約時間 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| reservation_center_id | int | 11 | 是 | 是 | 預約中心ID |
| coach_number | int | 11 | 否 | 否 | 教練編號 |
| coach_name | varchar | 64 | 否 | 否 | 教練姓名 |
| contact_information | varchar | 64 | 否 | 否 | 聯系方式 |
| teaching_time | varchar | 64 | 否 | 否 | 教學時間 |
| teaching_location | varchar | 64 | 否 | 否 | 教學地點 |
| coach_photos | varchar | 255 | 否 | 否 | 教練照片 |
| coach_profile | text | 0 | 否 | 否 | 教練簡介 |
| praise_len | int | 11 | 是 | 否 | 點贊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| coach_user_id | int | 11 | 是 | 是 | 教練用戶ID |
| coach_number | varchar | 64 | 是 | 否 | 教練編號 |
| coach_name | varchar | 64 | 否 | 否 | 教練姓名 |
| coach_gender | varchar | 64 | 否 | 否 | 教練性別 |
| coach_age | varchar | 64 | 否 | 否 | 教練年齡 |
| driving_age | varchar | 64 | 否 | 否 | 駕車年齡 |
| relevant_certificates | varchar | 255 | 否 | 否 | 相關證件 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| car_learning_archives_id | int | 11 | 是 | 是 | 學車檔案ID |
| coach_number | int | 11 | 否 | 否 | 教練編號 |
| coach_name | varchar | 64 | 否 | 否 | 教練姓名 |
| student_number | int | 11 | 否 | 否 | 學員編號 |
| student_name | varchar | 64 | 否 | 否 | 學員姓名 |
| student_gender | varchar | 64 | 否 | 否 | 學員性別 |
| student_age | varchar | 64 | 否 | 否 | 學員年齡 |
| car_learning_course | varchar | 64 | 否 | 否 | 學車科目 |
| learning_date | datetime | 0 | 否 | 否 | 學車日期 |
| class_hours_used | int | 11 | 否 | 否 | 所用學時 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| appointment_cancellation_id | int | 11 | 是 | 是 | 預約取消ID |
| coach_number | int | 11 | 否 | 否 | 教練編號 |
| coach_name | varchar | 64 | 否 | 否 | 教練姓名 |
| contact_information | varchar | 64 | 否 | 否 | 聯系方式 |
| teaching_time | varchar | 64 | 否 | 否 | 教學時間 |
| teaching_location | varchar | 64 | 否 | 否 | 教學地點 |
| student_number | int | 11 | 否 | 否 | 學員編號 |
| student_name | varchar | 64 | 否 | 否 | 學員姓名 |
| time_of_appointment | datetime | 0 | 否 | 否 | 預約時間 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
5系統詳細設計
5.1用戶前臺功能模塊
駕校考試車預約管理系統,在系統首頁可以查看首頁、駕考資訊、預約中心、取消預約等內容,如圖5-1所示。
圖5-1用戶前臺功能界面圖
???
????用戶注冊,在用戶注冊頁面可以填寫賬號、密碼、昵稱、郵箱、手機號碼、身份、性別、身份證號碼等詳細內容進行注冊,如圖5-2所示。
?
圖5-2用戶注冊界面圖
用戶注冊關鍵代碼如下所示。
/**
??* 登錄
?????* @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-3所示。駕考資訊頁面可以瀏覽駕考資訊熱門列表信息等內容,如圖5-4所示。
?
圖5-3登錄界面圖
用戶登錄的關鍵代碼如下。
?/**
?????* 登錄
?????* @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;
????????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);
????????Map<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);
????????//查詢用戶審核狀態
????????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,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態
????????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, "賬號或密碼不正確");
????????}
}
????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-4駕考資訊界面圖
教練信息展示,在教練信息列表頁面可以查看教練員信息、從業資歷信息資料等,如圖5-5所示。預約中心頁面可以進行教練預約,提交相對應的預約信息,如圖5-6所示。
?
圖5-5教練信息界面圖
?
圖5-6預約信息界面圖
預約信息的邏輯代碼如下:
@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);
}
5.2管理員功能模塊
管理員登錄,通過填寫注冊時輸入的用戶名、密碼、進行登錄,如圖5-7所示。
圖5-7管理員登錄界面圖
管理員登錄進入駕校考試車預約管理系統后的主要功能是:首頁、用戶管理、預約中心管理、學車檔案管理、預約信息管理、取消預約管理、車輛報修管理等。如圖5-8所示。駕考資訊管理主要是對駕考資訊進行編輯發布。入圖5-9所示。
?
?
圖5-8管理員功能界面圖
?
圖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-10所示。
?
圖5-10預約中心管理界面圖
學車檔案管理,在學車檔案頁面中可以發布教練姓名、學員編號、性別、學員年齡等信息,并可根據需要對信息修改或刪除等詳細操作,如圖5-11所示。
?
圖5-11學車檔案管理界面圖
學車檔案管理界面邏輯代碼如下:
@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-12所示。
?
圖5-12預約信息管理界面圖
輪播圖;該頁面為輪播圖管理界面。管理員可以在此頁面進行首頁輪播圖的管理,通過新建操作可在輪播圖中加入新的圖片,還可以對以上傳的圖片進行修改操作,以及圖片的刪除操作,如圖5-13所示。
?
圖5-13輪播圖添加界面圖
取消預約,在取消預約頁面中可以對用戶的去預約取消信息進行審核管理,如圖5-14所示。
?
圖5-14取消預約界面圖
取消預約界面關鍵代碼如下:
@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系統測試
系統開發的最后一個步驟就是系統測試,系統測試也是整個系統十分重要的一個環節,測試的好壞關系到產品的發展。用戶對軟件的質量、性能和可靠性等需求就要通過測試來實現。測試過程要必須遵循嚴謹性、完善性、規范性的原則,測試的主要目的就是看看在系統運行中,是否會出現bug,然后對出現的bug進行調試,直到程序完美運行。但是軟件的測試只能盡可能的減少bug,理論上來說是無法達到消除bug。但是bug越少,系統出錯的幾率就越低,用戶使用起來也更方便、更安全。
近年來,軟件包含測試從現在的檢驗當中來看,系統接近預期目標可能出現的問題,并對這些錯誤做出相應的修正,假如我們不進行早期的測試錯誤就會延續下去,最后所做出的成品就會有很大的困難。
我們要在這個測試的過程當中找出錯誤。測試成軟件開發的主要一部分,自從有了程序的設計那天開始,它就成為了重要的組成部分。經過統計來看,軟件測試可以占據這個系統45%的工作量,而在軟件開發的成本當中,對于測試成本來說它包含了很多的測試工作。每個程序測試時都會出現和遇到錯誤。在整個程序的開發過程當中,人為去查找錯誤是非常復雜和困難的,所以我們一般都會找一些測試的工具來進行測試。
6.1系統測試的意義
隨著現代信息的快速發展,在社會各大領域中已經都開始應用網絡信息技術,在應用網絡技術的同時人們也開始把軟件的質量問題作為了一個重要焦點來關注,因為一個軟件的好與壞它決定著這個系統在市場上的生存,所以我們必須要把軟件質量來做好,這樣才有一定的生存能力。對于用戶來說它們首先選用的都是保證這個系統軟件的質量問題,因為一個系統的軟件質量決定著用戶在后期上成本經濟的問題。
6.2?測試方法
具體測試方法包括:黑盒測試和白盒測試。
黑盒測試又被人們稱作為功能測試,通常是在程序的接口來做一些測試的方法,它一般包括對程序的功能和使用的方法來做出一些數據的接受和輸出,同時還可以做出正確的輸出信息,并保證與外部信息的完整性。
白盒測試通常被人們稱作為結構測試,在整個程序的結構和處理當中它是由程序當中的邏輯測試和檢驗程序來完成一些正確的工作。
具體的功能測試它是包括:系統的適用性、準確性、安全性等功能測試。
6.3測試分析
駕校考試車預約管理系統滿足相關信息的管理需求,在設計時借鑒了國內外優秀網站的優點,從界面到系統設計都保證了管理員以及用戶能夠方便操作。系統的主要特點和優點歸納如下:
(1)本系統用的移置性和針對性都比較高,因為針對性高可以提供更好的服務而移置性可以在多個系統上運行,更給用戶帶來了極大的方便。
(2)該駕校考試車預約管理系統內容全面,管理方便可以及時的全面的處理各種錯誤,異常,這樣避免了很多因用戶的馬虎操作而出現的失誤,其操作方便,用戶界面友好,能夠上網的人都可以很好的進行操作。
經過對上述的測試結果分析,所有基本功能齊全,操作簡單,系統運行性能良好,系統安全可靠,能促進駕校考試車預約管理系統的發展,發展前景廣闊。
結 ???論
本系統通過對java和Mysql數據庫的簡介,從硬件和軟件兩反面說明了駕校考試車預約管理系統的可行性,本文結論及研究成果如下:實現了java與Mysql相結合構建的駕校考試車預約管理系統,網站可以響應式展示。通過本次駕校考試車預約管理系統的研究與實現,我感到學海無涯,學習是沒有終點的,而且實踐出真知,只有多動手才能盡快掌握它,經驗對系統的開發非常重要,經驗不足,就難免會有許多考慮不周之處。比如要有美觀的界面,更完善的功能,才能吸引更多的用戶。
由于在此之前對于java知識沒有深入了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規范、數據庫連接有問題已經無法實現參數的傳遞等等,不過通過在網上尋找有關資料以及同學的幫助下最后都得到了解決,在此過程中,我不僅學到了很多知識,也提高了自己解決問題的能力,尤其是學會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實際上每個人編程的思路和對數據處理的方法、思想都是不同的,這就要求我們一定要通過實踐才能找到解決問題的方案。在此次畢業設計活動中,我不斷的提高了自己,也得到了寶貴的經驗,我相信這些對我以后的發展都會有很大幫助。
通過這次駕校考試車預約管理系統的開發,我參考了很多相關系統的例子,取長補短,吸取了其他系統的長處,逐步對該系統進行了完善,但是該系統還是有很多的不足之處,有待以后進一步學習。
實踐證明,駕校考試車預約管理系統有著非常好的發展前景,經過測試運行,系統各項功能都十分完善,界面漂亮,使用方便,操作容易,在技術理論上已經成熟。
致 ???謝
大學的學習生活在這個季節將結束,但是在我的生命這僅僅只是一個逗號,我將面對的旅程的另一個的開始。通過這次畢業設計的整個開發過程,從需求分析到具體功能實現,再到最終測試和維護的理解有了很大的進步,讓我對系統開發有了更深刻的認識,對我個人的實踐能力和解決問題的能力,都有了很大的幫助。這是這次畢業設計最大的收獲。
首先要感謝我的指導老師,他在論文寫作上,給予了我各種無私的幫助,治學嚴謹,嚴格要求,使我獲得了很大的收獲。老師深厚的理論知識和豐富的實踐經驗,都深深的影響到我,在這方面,我謹表示衷心的感謝。
其次,我還要對所有的老師和同學表示感謝,他們在我學習的過程中,都積極的提供了很多幫助,無論是專業知識,還是實踐操作技能,也能夠讓我在論文寫作中,遇到的一些難題迎刃而解。
最后,對閱讀和評審本論文的各位老師表示衷心的感謝!
參考文獻?
[1]劉源.宜賓駕培監管平臺與公安駕考系統成功實現聯網對接[J].汽車維護與修理,2021(21):78-79.
[2]劉京偉.湖北省實現交通駕培監管服務平臺與公安互聯網交通安全綜合服務平臺聯網對接[J].汽車維護與修理,2021(17):76-77.
[3]王斌.基于駕考業務高密度場景網絡保障方案的探究[J].長江信息通信,2021,34(08):101-104.
[4]陳立龍,宋建文,王穎,曹學海,于敏.采用Unreal Engine的多人在線虛擬駕考系統[J].三明學院學報,2021,38(03):78-85.
[5]錢明珠,汪小寶.駕考計時預約系統開發與設計[J].電腦知識與技術,2021,17(04):71-73.
[6]周慧,劉玲靈,買楊洋.基于微信小程序的“互聯網+駕考”私域流量建設[J].河北企業,2020(10):107-108.
[7]姜楷.差分定位應用下的駕考系統設計與應用[J].科學技術創新,2019(35):86-87.
[8]董強,張毓天.一種基于北斗高精度定位技術的智能駕考系統[J].信息通信,2019(12):197-198.
[9]高偉(JAMAAL ADDEEN ABDULFATAH SAIF QASEM). E-Commerce Adoption in Traditional Travel Agencies(TTAs)in the Age of Online Travel in Yemen[D].東北財經大學,2020.
[10]許哲鈴.“互聯網+”背景下汽車駕考發展策略研究[J].現代職業教育,2019(26):272-273.
[11]唐雪,張燕,袁敏智,吳歡,周翌昕.基于VR技術的駕考系統[J].電腦知識與技術,2019,15(11):264-265+276.
[12]鄭濤. 基于差分定位的駕考系統設計與實現[D].電子科技大學,2018.
[13]許可. 新形勢下深化新駕駛人培訓考試管理的思考[D].蘇州大學,2018.
[14]黃傲成. 智能駕考系統及其關鍵算法的設計與實現[D].武漢工程大學,2018.
[15]Nicholas M Kelly,John Moorehead,Tony Tham.Is the ‘driving test’ a robust quality indicator of colonoscopy performance?[J].World Journal of Gastrointestinal Endoscopy,2018,2(04):112-120.
免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的(附源码)ssm驾校考试车预约管理系统 毕业设计 271506的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: quad spi 和qpi的区别
- 下一篇: 计算机专业用苹果哪款笔记本,电脑太多,哪