ssm基于Java web的校园滴滴代驾管理系统毕业设计源码260839
基于ssm校園滴滴代駕管理系統
摘?要
科技進步的飛速發展引起人們日常生活的巨大變化,電子信息技術的飛速發展使得電子信息技術的各個領域的應用水平得到普及和應用。信息時代的到來已成為不可阻擋的時尚潮流,人類發展的歷史正進入一個新時代。在現實運用中,應用軟件的工作規則和開發步驟,采用Java技術建設校園滴滴代駕管理系統。
本設計主要實現集人性化、高效率、便捷等優點于一身的校園滴滴代駕管理系統,完成管理員:用戶管理、代駕中心、接單信息、留言回復、直達車、車輛預約等功能模塊。系統通過瀏覽器與服務器進行通信,實現數據的交互與變更。本系統通過科學的管理方式、便捷的服務提高了工作效率,減少了數據存儲上的錯誤和遺漏。校園滴滴代駕管理系統使用Java語言,采用基于 MVVM模式的SSM技術進行開發,使用 Eclipse 2017 CI 10 編譯器編寫,數據方面主要采用的是微軟的MySQL關系型數據庫來作為數據存儲媒介,配合前臺HTML+CSS 技術完成系統的開發。
關鍵詞:校園滴滴代駕管理系統;Java語言;關系型數據庫;SSM技術
Campus didi driving management system based on SSMAbstract
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 campus didi driving management system.
This design mainly realizes the campus didi driving management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules of administrator: user management, driving center, order receiving information, message reply, direct train, vehicle reservation 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 campus didi driving management system uses Java language, adopts SSM technology based on MVVM mode for development, and is written with eclipse 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:?Campus didi driving management system; Java language; Relational database; SSM Technology
目 ?錄
第1章 緒論
1.1?研究背景
1.2?研究意義
1.3?本文的組織結構
第2章 相關技術介紹
2.1 Java技術
2.2 MVVM模式
2.3 MySQL數據庫
2.4 B/S結構
2.5 SSM框架
第3章 系統分析 6
3.1?可行性分析 6
3.1.1?技術可行性分析 6
3.1.2?經濟可行性分析 6
3.1.3?操作可行性分析 6
3.2?功能需求分析 6
3.3?非功能需求分析 10
第4章 系統設計
4.1?系統架構設計
4.2?系統功能結構
4.3?數據庫設計
4.3.1?概念模型
4.3.2?數據表
第5章 系統實現 16
5.1?登錄模塊的實現 16
5.2?學生管理功能模塊的實現 19
5.3 管理員管理功能模塊的實現 21
第6章 系統測試 25
6.1?測試系統的目的 25
6.2?測試策略 25
6.3?測試特性及分析 25
6.4 功能測試 26
6.5 測試結果 26
第7章 總結與展望 27
參考文獻 28
致謝 30
校園滴滴代駕管理系統,收集眾多大規模滴滴代駕企業信息化建設需求,系統涵蓋了用戶管理、代駕中心、接單信息、留言回復、直達車、車輛預約等功能。利用電子地圖地理位置信息,解決業務過程中任務調度的困難,通過GPS快速定位呼叫用戶的位置,并即時調度距離最近可使用狀態的司機資源。系統結合智能手機客戶端,直接將任務下發到代駕司機手機上,實現調度過程的動態化和高效率。中心監控平臺進行集中管理,全程監控,方便公司實時監控業務狀態,客戶資源,代駕員狀態等信息。系統實現了代駕業務的信息化過程管理,方便、即時、高效的進行運營訂單的處理,并使管理過程可視化,智能分析利用歷史數據,為代駕公司的日常運維提供一個全方位解決方案。
隨著社會經濟的不斷發展,社會在各行各業也都在不斷的增多,可謂多彩萬千。每個行業在剛剛興起的時候都是非常困難的,校園滴滴代駕行業更是如此。代駕這個新興的字眼,在很多人的腦海里留下了大大的問號。所謂代駕就是當車主不能自行開車到達目的地,此時車主通過熱線電話、手機短信或者手機軟件等方式聯系到代駕公司,代駕公司派出專業司機駕駛車主的車送至指定地點并收取一定的費用的行為。
不論對于任何國家和地區,安全和諧發展都是最基本的保障。我們應該明白社會的發展就是我們不斷進步的表現。校園滴滴代駕公司就是一個順應社會發展應運而生的機構。對于安定的生活特別需要做好安全的防范,代駕公司就是專門負責因為喝酒造成酒駕的工作,從而減少交通事故,這是代駕公司的責任和義務。因為現在私家車數量的增多,和人們對于交通事故的輕視導致交通事故頻繁發生,校園滴滴代駕行業悄然興起。尤其是今年以來交通法的修訂,醉酒駕車被查將面臨最高半年拘役的處罰,吊銷駕照并在5年內不能重新取得,攝于法律的嚴峻,酒后駕車已是驟減,于是校園滴滴代駕管理系統悄然勃興。它的出現就是在推動社會的健康發展,代駕服務可以有效控制酒駕行為,不僅能夠保護車主的生命財產安全,也避免了因交通肇事而危害他人的生命財產安全。這對人們的日常生活有著很重要的意義。
如今,代駕已經成為一種趨勢。一些大城市代駕公司的出現和火爆,正是由于強大的市場需求。但是據相關資料了解,目前代駕市場仍存在種種問題,恰恰源于其尷尬的身份和地位,而如果相關管理部門]提供行業規范,對其日常服務進行監督和獎賞,就能夠推動企業、行業的健康發展,使得校園滴滴代駕管理系統公司真正走進人們的生活并服務于人們。
第一章是緒論,本文章的開頭部分,對本題目的研究背景和研究意義等一些做文字性的描述。
第二章研究了校園滴滴代駕管理系統的所采用的開發技術和開發工具。
第三章是系統分析部分,包括系統總體需求描述、功能性角度分析系統需求、非功能性等各個方面分析系統是否可以實現。
第四章是系統設計部分,本文章的重要部分,提供了系統架構的詳細設計和一些主要功能模塊的設計說明。
第五章是系統的具體實現,介紹系統的各個模塊的具體實現。
第六章在前幾章的基礎上對系統進行測試和運行。
最后對系統進行了認真的總結,以此對未來有一個新的展望。
JAVA語言是目前軟件市場上應用最廣泛的語言開發程序。可以在多種平臺上運用的,兼容性比較強,適應市面上大多數操作系統,不會出現亂碼的現像,其擴展性和維護性都更好,具有分析問題和解決問題的能力,是面向過程的程序設計方便我們編寫的代碼更強壯。
JAVA相對其它語言來說,比較簡單,編譯起來更方便一些,安全可靠性高。不完全統計,現在全世界大約有2000多萬人在使用它,JAVA既可以鑲嵌使用又可以獨力的使用。JAVA大致可以分成兩個部分,一種部分是JAVA負責的編譯,另一種是JAVA負責的運行。JAVA和C++語言很相像,但JAVA在編程時是一種以對象為導向的方式來進行編譯的,使得編出來的軟件可以單機使用,也可以在互聯網上使用,檢查出錯更為方便。JAVA分布式、體系結構中立的特點也使得其存儲更快,編議更簡單。面向對象包括四個特點,一是封裝,就是說在定義類的時候可以實現一定的功能和屬性。二是抽象,屬于類的一種,可以把一個具有共同屬性的類封裝在一個抽象里,便于簡單編議。三是繼承,顧名思義就是帶有前者的特性。還有一個就是多態的特點,可以多種一起運用,表現了它可擴展性好。
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的新特性糅合進去,以應對客戶日益復雜的需求變化。
科技的進步,給日常帶來許多便利:教室的投影器用到了虛擬成像技術,數碼相機用到了光電檢測技術,比如超市貨物進出庫的記錄需要一個信息倉庫。這個信息倉庫就是數據庫,而這次的校園滴滴代駕管理系統也需要這項技術的支持。
用MySQL這個軟件,是因為它能接受多個使用者訪問,而且里面存在Archive等。它會先把數據進行分類,然后分別保存在表里,這樣的特別操作就會提高數據管理系統自身的速度,讓數據庫能被靈活運用。MySQL的代碼是公開的,而且允許別人二次編譯升級。這個特點能夠降低使用者的成本,再搭配合適的軟件后形成一個良好的網站系統。雖然它有缺點,但是綜合各方面來說,它是使用者的主流運用的對象。
B/S(瀏覽器/服務器)結構是目前主流的網絡化的結構模式,它能夠把系統核心功能集中在服務器上面,可以幫助系統開發人員簡化操作,便于維護和使用。只需要用戶在客戶端安裝360瀏覽器、谷歌瀏覽器、QQ瀏覽器等當前大眾瀏覽器,在電腦里面安裝sqlserver、mysql數據庫等數據庫。安裝好的瀏覽器與服務器端的數據庫進行信息數據的交互。很多專門軟件能夠做到的事情,采用B/S結構模式也能實現,它能夠結合Web瀏覽器技術,ActiveX技術以及多種腳本語言等技術。幫助程序開發者節約了不少開發成本。目前B/S結構成為程序開發主流結構,它最好的地方就是沒有地點限制還不用專門安裝軟件,筆記本或者電腦能夠上網就能訪問系統。系統使用B/S進行開發在后期系統維護上面就會很省事,不用什么問題都在服務器上面操作,簡單的客戶端處理就解決部分問題,開發出來的程序跟用戶交互性上面也會增強,還可以實時刷新瀏覽器進行程序局部的數據信息更新。
?
圖1-1 B/S模式三層結構圖
SSM即SpringMVC+Spring+Mybatis,這三個框架有各自最獨有的優勢,那么將它們組合在一起能夠碰撞出很強的火花。設計者在不需消耗大量功夫,能做出Web應用程序,而且這個程序還具有層次清晰、升級更新操作不影響正常使用的、允許多次使用的特點。這個復合框架形成一個有著結構完整、功能強大和結構良好的體系:SpringMVC使各板塊分離,Spring使開發更靈活方便,使用Mybatis讓開發者直接對對象進行操縱,各層次分工明細,并實現各個層次間的解耦,讓代碼更加的靈活精簡。這個框架使程序員能夠規避在開發時期避免個別錯誤導致整體被破壞,也能在后期應對客戶對產品提出的新需求。
系統分析
本次設計基于B/S 模式下,運用Java技術采用的是MySQL數據庫和Eclipse實現,總體的可行性共分為以下三個方面。
所謂的技術可行性就是在限定時間,前期擬定的功能能否被滿足。在開發設計上是否會遇上解決不了的問題。做完的項目能否被很好地應用,如果存在缺點在后期的維護上是否存在很大的難度。在對這個系統評估后,認定已存在的技術能達成目標。用JSP技術來實現動態的頁面,嵌入低依賴性的設計模式,靈活的數據庫,配合穩定的服務器,整個系統的運行效率大大提升。由此可見,在技術層面達成目標不是非非之想。
在項目上使用的工具大部分都是是當下流行開源免費的,所以在開發前期,開發時用于項目的經費將會大大降低,不會讓開發該軟件在項目啟動期受到經費的影響,所以經濟上還是可行的。盡量用最少的花費去滿足用戶的需求。省下經費用于人工費,以及設備費用。將在無紙化,高效率的道路上越走越遠。
本系統實現功能的操作很簡單,普通電腦的常見配置就可以運行本軟件,并且只要粗通電腦使用的基本常識就可以流暢的使用本軟件。電腦具備連接互聯網的能力,并且可以正常訪問系統,并不需要操作者有什么高超的能力,只需了解業務流程,并且按照專業知識進行正確操作即可,所以校園滴滴代駕管理系統具備操作可行性。
在系統開發設計前,應該對功能做初步設想,清楚這個管理系統有什么板塊,每個板塊有什么功能,整體的設計是否滿足使用者的需求,接著對所開發的系統功能進行的詳細分析總結,從而設計出完整的系統并將其實現。用戶和開發人員的交流分析,使其達到最佳理解程度,使系統功能達到最佳。
學生用戶用例圖如下所示。
?
圖3-1 學生用例圖
管理員用例圖如下所示。
?
圖3-2 管理員用例圖
代駕用戶用例圖如下所示。
?
圖3-3 代駕用戶用例圖
系統非功能需求有非常多,比如性能需求、可承載最大用戶數、穩定性、易用性需求等。本系統分析時考慮到易用性需求,因為系統是給人使用的,所以必須充分從用戶的角度出發,考慮用戶體驗,使系統易理解易上手易操作。
目前B/S體系的系統主要的數據訪問方式是:通過瀏覽器頁面用戶可以進入系統,系統可以自動對用戶向服務器發送的請求進行處理,處理請求是在系統后臺中進行的,用戶在瀏覽器頁面上進行相應操作,就能夠看到服務端傳遞的處理結果。校園滴滴代駕管理系統主要分為視圖-模型-控制三層架構設計。在視圖層中,主要是操作在服務器端向客戶端反饋并顯示的數據,在模型層中,主要處理相關的業務邏輯、數據整合等,最后的控制層它介于視圖和模型之間,主要是調整兩層之間的關系,最終落實數據的傳遞。
系統架構圖如下圖所示。
?
圖4-1系統架構圖
系統設計的目的是分析系統包括的所有功能結構,為開發人員設計開發和實現系統做好準備工作。經過前期的需求調查、分析和整理之后,確定的總體需求主要包括多個模塊,分別是:用戶管理、代駕中心、接單信息、留言回復、直達車、車輛預約。系統整體角色分為三個部分,一是學生、二是代駕用戶、三是管理員。權限分布也是很明顯,學生是在除去瀏覽信息之外還具有查詢和管理自己賬戶信息、用戶管理、代駕中心、接單信息、留言回復、直達車、車輛預等權限;管理員是最高權限擁有者。
系統功能結構圖如下圖所示。
?
圖4-2系統功能結構圖
對于一個要開發的系統來說,E-R圖可以讓別人能更快更輕松的了解此系統的事務及它們之間的關系。根據系統分析階段所得出的結論確定了在校園滴滴代駕管理系統中存在著多個實體分別是首頁、用戶管理、代駕中心、接單信息、留言回復、直達車、車輛預約。
系統總體ER圖如下圖所示。
?
圖4-4系統總體ER圖
?
數據庫邏輯結構就是將E-R圖在數據庫中用具體的字段進行描述。用字段和數據類型描述來使對象特征實體化,最后形成具有一定邏輯關系的數據庫表結構。校園滴滴代駕管理系統所需要的部分數據結構表如下表所示。
vehicle_reservation表:
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| vehicle_reservation_id | int | 11 | 是 | 是 | 車輛預約ID |
| driver | int | 11 | 否 | 否 | 駕車司機 |
| contact_information | varchar | 64 | 否 | 否 | 聯系方式 |
| vehicle_type | varchar | 64 | 否 | 否 | 車輛類型 |
| seat_unit_price | varchar | 64 | 否 | 否 | 座位單價 |
| departure_starting_point | varchar | 64 | 否 | 否 | 發車起點 |
| departure_destination | varchar | 64 | 否 | 否 | 發車終點 |
| reservation_user | int | 11 | 否 | 否 | 預約用戶 |
| number_of_appointments | int | 11 | 否 | 否 | 預約數量 |
| total_payment | varchar | 64 | 否 | 否 | 支付總價 |
| pay_state | varchar | 16 | 是 | 否 | 支付狀態 |
| pay_type | varchar | 16 | 否 | 否 | 支付類型 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| valet_driving_center表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| valet_driving_center_id | int | 11 | 是 | 是 | 代駕中心ID |
| student_user | int | 11 | 否 | 否 | 學生用戶 |
| user_age | varchar | 64 | 否 | 否 | 用戶年齡 |
| valet_model | varchar | 64 | 否 | 否 | 代駕車型 |
| starting_point | varchar | 64 | 否 | 否 | 出發起點 |
| departure_and_destination | varchar | 64 | 否 | 否 | 出發終點 |
| departure_time | varchar | 64 | 否 | 否 | 出發時間 |
| order_receiving_status | varchar | 64 | 否 | 否 | 接單狀態 |
| model_picture | varchar | 255 | 否 | 否 | 車型圖片 |
| substitute_driving_requirements | text | 0 | 否 | 否 | 代駕要求 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| praise_len | int | 11 | 是 | 否 | 點贊數 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| valet_driver表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| valet_driver_id | int | 11 | 是 | 是 | 代駕用戶ID |
| user_name | varchar | 64 | 是 | 否 | 用戶姓名 |
| user_gender | varchar | 64 | 否 | 否 | 用戶性別 |
| user_age | varchar | 64 | 否 | 否 | 用戶年齡 |
| driving_age | varchar | 64 | 否 | 否 | 駕車年齡 |
| driving_license | varchar | 255 | 否 | 否 | 行駛證 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| user_id | int | 11 | 是 | 否 | 用戶ID |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| Group表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| group_id | mediumint | 8 | 是 | 是 | 用戶組ID |
| display | smallint | 4 | 是 | 否 | 顯示順序 |
| name | varchar | 16 | 是 | 否 | 名稱 |
| description | varchar | 255 | 否 | 否 | 描述 |
| source_table | varchar | 255 | 否 | 否 | 來源表 |
| source_field | varchar | 255 | 否 | 否 | 來源字段 |
| source_id | int | 10 | 是 | 否 | 來源ID |
| register | smallint | 1 | 否 | 否 | 注冊位置 |
| create_time | timestamp | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| through_train表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| through_train_id | int | 11 | 是 | 是 | 直達車ID |
| driver | int | 11 | 否 | 否 | 駕車司機 |
| contact_information | varchar | 16 | 否 | 否 | 聯系方式 |
| vehicle_type | varchar | 64 | 否 | 否 | 車輛類型 |
| number_of_seats | int | 11 | 否 | 否 | 座位數量 |
| seat_status | varchar | 64 | 否 | 否 | 座位狀態 |
| seat_unit_price | int | 11 | 否 | 否 | 座位單價 |
| departure_starting_point | varchar | 64 | 否 | 否 | 發車起點 |
| departure_destination | varchar | 64 | 否 | 否 | 發車終點 |
| departure_time | time | 0 | 否 | 否 | 發車時間 |
| vehicle_picture | varchar | 255 | 否 | 否 | 車輛圖片 |
| hits | int | 11 | 是 | 否 | 點擊數 |
| praise_len | int | 11 | 是 | 否 | 點贊數 |
| examine_state | varchar | 16 | 是 | 否 | 審核狀態 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
| message_reply表: | |||||
| 名稱 | 類型 | 長度 | 不是null | 主鍵 | 注釋 |
| message_reply_id | int | 11 | 是 | 是 | 留言回復ID |
| user_name | int | 11 | 否 | 否 | 用戶姓名 |
| user_age | varchar | 64 | 否 | 否 | 用戶年齡 |
| valet_model | varchar | 64 | 否 | 否 | 代駕車型 |
| order_receiving_user | int | 11 | 否 | 否 | 接單用戶 |
| message_type | varchar | 64 | 否 | 否 | 留言類型 |
| message_details | text | 0 | 否 | 否 | 留言詳情 |
| recommend | int | 11 | 是 | 否 | 智能推薦 |
| create_time | datetime | 0 | 是 | 否 | 創建時間 |
| update_time | timestamp | 0 | 是 | 否 | 更新時間 |
系統的登錄窗口是用戶的入口,用戶只有在登錄成功后才可以進入訪問。通過在登錄提交表單,后臺處理判斷是否為合法用戶,進行頁面跳轉,進入系統中去。
登錄合法性判斷過程:用戶輸入賬號和密碼后,系統首先確定輸入輸入數據合法性,然后在login.jsp頁面發送登錄請求,調用src下的mainctrl類的dopost方法來驗證。
用戶登錄模塊的IPO如下所示:
輸入:用戶名和密碼。
處理:
1)檢測用戶輸入的賬號、密碼是否正確及在數據庫已對應存在。
2)從數據庫中提取記錄,并儲存在本地的session中(timeout默認=30min)。
3)根據用戶名,將其顯示在系統首頁上。
輸出:是否成功的信息。
登錄流程圖如下所示。
?
圖5-1登錄流程圖
系統登錄界面如下所示。
?
圖5-2系統登錄界面
登錄代碼如下:
????/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執行登錄接口]");
????????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-3系統首頁界面
學生用戶登錄進入系統可以查看后臺首頁、代駕中心、接單信息、留言回復、車輛預約,如圖5-4所示。
?
圖5-4學生管理界面
代駕中心,在代駕中心頁面可以查看用戶姓名、代駕車型、用戶年齡、出發終點、出發時間、接單狀態、車型圖片等詳細信息,如圖5-5所示。
?
5-5代駕中心管理界面
接單信息,在接單信息頁面可以查看用戶姓名、代駕車型、用戶年齡、出發起點、出發終點、出發時間、接單用戶、聯系方式、代駕要求等詳細信息、留言,如圖5-6所示。
?
5-6接單信息管理界面
學生用戶信息展示,管理員通過輸入昵稱、用戶名、學生姓名、學生性別、學生年齡等信息,并可根據需要進行查詢編輯、修改或刪除操作,,如圖5-7所示
?
5-7學生管理界面
學生用戶管理關鍵代碼如下所示。
public Map<String, Object> error(Integer code, String message) {
????????Map<String, Object> map = new HashMap<>();
????????map.put("error", new HashMap<String, Object>(4) {{
????????????put("code", code);
????????????put("message", message);
????????}});
????????return map;
}
留言回復管理展示,管理員通過輸入用戶姓名、用戶年齡、代駕車型、接單用戶、留言類型、留言詳情等編輯信息、,并可根據需要進行查詢、添加、修改或刪除操作,如圖5-8所示
?
5-8留言回復管理界面
留言回復管理關鍵代碼如下所示。
public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMer.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
車輛預約展示,管理員通過輸入駕車司機、聯系方式、車輛類型、座位單價、發車起點、發車終點、預約用戶、預約數量等信息,并可根據需要進行編輯、查詢、添加、修改或刪除操作,如圖5-9所示
?
5-9車輛預約管理界面
車輛預約管理關鍵代碼如下所示。
public Map<String, Object> success(Object o) {
????????Map<String, Object> map = new HashMap<>();
????????if (o == null) {
????????????map.put("result", null);
????????????return map;
????????}
????????if (o instanceof List) {
????????????if (((List) o).size() == 1) {
???????????????o = ?((List) o).get(0);
????????????????map.put("result", o);
????????????}else {
????????????????String jsonString = JSONObject.toJSONString(o);
????????????????JSONArray objects = service.covertArray(JSONObject.parseArray(jsonString));
????????????????map.put("result", objects);
????????????}
????????} else if (o instanceof Integer || o instanceof String) {
????????????map.put("result", o);
????????} else {
????????????String jsonString = JSONObject.toJSONString(o);
????????????JSONObject jsonObject = JSONObject.parseObject(jsonString);
????????????JSONObject j = service.covertObject(jsonObject);
????????????map.put("result", j);
????????}
????????return map;
}
系統測試主要是通過測試確定系統的可操作性,系統故障必須在規定的時間內糾正,否則會造成嚴重的經濟損失。驗證系統內的保護機制,以防止未經授權的入侵。在安全測試中,測試人員的作用是試圖闖入系統并使用各種方法來試圖突破防御。因此,系統安全設計的標準是找到一種使入侵系統更先進的方法。
程序設計不能保證沒有錯誤,這是一個開發過程,在錯誤或錯誤的過程中都是難以避免的。雖然這是不可避免的,但我們不能使這些錯誤始終存在于系統中,錯誤可能會造成無法估量的后果,如系統崩潰,安全信息泄露,系統無法正常啟動等,為了避免這些問題,我們需要測試程序,在測試過程中發現問題并糾正它們,從而使系統更長時間穩定成熟。本章的作用是發現這些問題并對其進行修改,雖然耗時費力,但對于系統的開發長期使用而言是非常重要和必要的。
軟件在設計后必須進行測試,調試過程中使用的方法是軟件測試方法。在開發新軟件時,系統測試是檢查軟件是否合格的關鍵步驟,以及是否符合設計目標的參考。測試主要是查看軟件中數據的準確性,正確的操作與否,以及操作的結果,還有哪些方面需要改進。
校園滴滴代駕管理系統的實現,對于系統中功能模塊的實現及操作都必須通過測試進行來評判系統是否可以準確的實現。在校園滴滴代駕管理系統正式上傳使用之前必須做的一步就是系統測試,對于測試發現的錯誤及時修改處理,保證系統準確無誤的供給用戶使用。
測試系統主要針對以下三個方面進行測試:
1、基于SSM的系統代碼的單元測試,集成測試,系統測試和驗收測試結果;
2、測試對象中列出的可測試或不可接受的特征和功能;
3、分析并記錄測試要求:日期的書面文件不影響測試的設計、開發和執行。
系統測試的特性如下:
(1)挑剔性:測試是為了找出系統的錯誤,在系統測試時我們要嚴格苛刻,十分挑剔。
(2)復雜性:測試是一個非常復雜的過程。
(3)不徹底性:雖然系統經過測試,但測試仍然會存在不夠徹底的問題,測試不能保證系統后期運行完整無誤,所以要在后期不斷的檢查、修改。
(4)經濟性:通場這種測試稱為“選擇測試(Selective Testing)”。在測試時要遵守經濟性的原則。
經過測試,產品的穩定性和成熟度可以大大提高,產品質量也可以得到保證。
系統測試方面,我們通常運用的是白盒測試以及黑盒測試這兩種方法。白盒測試是指在了解系統內部工作流程的前提下,可以根據需求規范驗證系統內部操作是否能夠正常運行的測試;而黑盒測試指的是,倘若知道了這個系統的全部功能,可以進行測試檢測系統中的每一個功能是否滿足正常使用。
功能測試,主要是對系統的用戶登錄進行詳細的測試,但是登錄不可以是任何人都可以登錄成功的,所以對登錄進行詳細測試。
用戶登錄測試:
| 模塊名稱 | 測試用例 | 預期結果 | 實際結果 | 是否通過 |
| 登錄模塊 | 用戶名:admin ??密碼:123 ? | 彈出錯誤提示,提示密碼錯誤 | 彈出錯誤提示,提示密碼錯誤 | 通過 |
| 登錄模塊 | 用戶名:123 ?? 密碼:admin ?? | 彈出錯誤提示,提示用戶名錯誤 | 彈出錯誤提示,提示用戶名錯誤 | 通過 |
| 登錄模塊 | 用戶名:admin ?? 密碼:admin ?? | 管理員登錄成功 | 管理員登錄成功 | 通過 |
刪除分類測試:
| 模塊名稱 | 測試用例 | 預期結果 | 實際結果 | 是否通過 |
| 刪除分類模塊 | 分類名:最新通知 ? | 刪除成功、頁面自動跳轉 | 刪除成功、頁面自動跳轉 | 通過 |
修改密碼測試:
| 模塊名稱 | 測試用例 | 預期結果 | 實際結果 | 是否通過 |
| 修改密碼模塊 | 原密碼:666 新密碼:123 確認密碼:123 ? | 彈出錯誤提示,提示原密碼錯誤 | 彈出錯誤提示,提示原密碼錯誤 | 通過 |
| 修改密碼模塊 | 原密碼:admin ??新密碼:123 確認密碼:333 ? | 彈出錯誤提示,提示確認密碼不一致 | 彈出錯誤提示,提示確認密碼不一致 | 通過 |
| 修改密碼模塊 | 原密碼:admin ??新密碼:123 確認密碼:123 ? | 密碼修改成功 | 密碼修改成功 | 通過 |
通過對功能的測試,校園滴滴代駕管理系統的基本功能都是可行的,不管是系統里面的功能,還是界面的設計都是可值得推廣宣傳的。
經過對一系列測試結果的有效分析,本平臺開發系統符合用戶的要求和需求。所有的基本功能相對齊全,操作起來簡單方便,測試系統性能良好,作為大眾化系統使用是比較值得推廣宣傳的。
通過校園滴滴代駕管理系統的開發,本人鞏固了之前學過的知識,如今將平時所學到的知識融合在設計中,在設計過程中,做了很多的準備,首先,在數據庫系統的設計過程中,尤其是在數據庫的工作原理、工作特點,對其深刻的討論,與此同時,對于小型站點來說,最好服務器的選擇,其次,利用所學的知識點分析所做的系統,并在此基礎上設計。
目前本系統已經上線,正在試運行階段,用戶反饋良好,基本完成用戶所需,試運行過程中沒有出現阻斷性問題,有一些不足和小問題也及時予以修正,系統上線后,為了保證數據的安全性,對系統進行了備份操作,系統備份是每兩個月備份一次,數據庫備份為每周備份一次,系統部署在租賃的云平臺服務器中。
本次系統上線成功后,得到了用戶的高度認可,但是在功能上和性能上還需做進一步的研究處理,使其有更高的性能和更好的用戶體驗。
系統在以后的升級過程中,需要解決一系列用戶所提出的問題,例如打印過程中如何避免瀏覽器的兼容性問題,大量用戶訪問時,如何保持較高的響應速度,在系統今后的升級過程中將著重解決這些安全性問題。
參考文獻
[1]王常玨,段堯清,朱澤.基于SSM的政府數據治理聯盟鏈框架構建[J/OL].情報科學:1-18[2022-03-25].http://kns.cnki.net/kcms/detail/22.1264.g2.20220309.1213.002.html
[2]黃子揚,祝奕煒,沈信宇,慕京生,焦俊.基于SSM的水質在線監測與數據分析[J].現代農業科技,2022(05):129-135.
[3]曹凱,王嘉月.基于Java語言的單點登錄在數字資源整合中的應用[J].中國信息化,2022(02):50-51.
[4]許孟杰,孫俊.高職院校Java程序設計課程思政教學探究——以湖北科技職業學院“Java編程技術基礎”為例[J].湖北開放大學學報,2022,42(01):41-44.
[5]魏瑾.Java多線程技術在網絡通信系統中的應用[J].山西電子技術,2022(01):66-68.
[6]董衛,王婷婷,徐劍.基于Java Web的畢業設計選題系統設計與實現[J].科技資訊,2022,20(03):1-3.
[7]李雙,郭晨晨,李佳虎,張慧娥.基于SSM框架的智能駕校系統的設計與開發[J].電腦知識與技術,2022,18(03):62-63+65.
[8]郭靜.基于SSM框架的高校新生預報到系統的設計與實現[J].電子技術與軟件工程,2022(02):232-235.
[9]徐旭,李明明,夏輝,陳曦,王天宇,肖碩,雍旭.基于SSM框架的互聯網+多元監管下構建醫療設備質量控制管理服務平臺研究[J].中國醫學裝備,2021,18(12):106-110.
[10]劉汪洋,李寧. 一種應用于SSM框架的會話保持方法[P]. 山東省:CN113347235A,2021-09-03.
[11]He Xinbin,Bai Yongbin,Yue Lisen,Wang Haixiao,Liu Yi. Design and Implementation of Information System Based on Java Technology Platform[J]. Journal of Physics: Conference Series,2021,2033(1).
[12]胡文斌,劉衛東,哈進兵,呂建國,戴星辰,高世鵬. 一種基于SSM框架的軌道交通能源管理系統[P]. 江蘇省:CN113326143A,2021-08-31.
[13]王馮濤. 基于SSM的地鐵站智慧管理系統的設計與實現[D].北京交通大學,2021.
[14]莊廣壬,陳建生,冼永樂,植挺生,劉勇. 基于SSM框架的Restful服務開發方法與裝置[P]. 廣東省:CN112748908A,2021-05-04.
[15]Lei Yu,Cheng Li,Lei Wei,Hu WenYa. Marine biological monitoring and managing system based on Java technology[J]. MIPPR 2019: REMOTE SENSING IMAGE PROCESSING, GEOGRAPHIC INFORMATION SYSTEMS, AND OTHER APPLICATIONS,2020,11432.
[16]Xuchun Chen. Design and Implementation of University Art Education Management System Based on JAVA Technology[J]. International Journal of Emerging Technologies in Learning (iJET),2018,13(10).
[17]褚慧萍,荊凱.基于移動網絡技術的車載智能酒駕管理系統的設計[J].科技傳播,2013,5(07):222-223.
[18]Qi liang SUN. Design and Implementation of Personnel Management Information System Based on SSM[P]. Qi liang SUN,2021.
致謝
伴隨著設計的完成,大學生涯也隨之即將結束。大學期間是我最珍惜的時光,大學時光中學會了很多,也成長了很多,這段時光中每一段回憶都刻在腦海中。感謝一起學習,一起成長同學們,和成長過程悉心教導的老師們,非常感激有你們的陪伴。
首先感謝我的指導老師,設計的完成離不開老師的一系列指導。在畢業設計的完成過程中,老師給出了很多中肯的建議,正是由于老師一絲不茍的工作態度,我的設計才能順利的完成。
最后,感謝在大學生涯中每一位教導我的老師,是你們教給了我豐富的知識,更教會了我遇到問題時,如何去應對并解決。謝謝你們的幫助與支持。
免費領取本源代碼,請關注點贊+私信
總結
以上是生活随笔為你收集整理的ssm基于Java web的校园滴滴代驾管理系统毕业设计源码260839的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 郑码输入法初学
- 下一篇: 金蝶k3服务器系统吗,金蝶k3serve