🙊作者簡介:擁有多年開發工作經驗,分享技術代碼幫助學生學習,獨立完成自己的項目或者畢業設計。
- 代碼可以私聊博主獲取。🌹
- 贈送計算機畢業設計600個選題excel文件,幫助大學選題。
- 贈送開題報告模板,幫助書寫開題報告。
作者完整代碼目錄供你選擇:
- 《Springboot網站項目》400套
- 《ssm網站項目》800套
- 《小程序項目》300套
- 《App項目》500套
- 《python網站項目》600套
?感興趣大家可以點點關注收藏,后續更新更多項目資料。?
項目演示(需要演示視頻可以私信我)
摘??要
本物流管理系統設計目標是實現物流的信息化管理,提高管理效率,使得物流管理作規范化、科學化、高效化。
本文重點闡述了物流管理系統的開發過程,以實際運用為開發背景,基于SSM框架,運用了Java編程語言和MYSQL數據庫進行開發,充分保證系統的安全性和穩定性。本系統界面良好,操作簡單方便,通過系統概述、系統分析、系統設計、數據庫設計、系統測試這幾個部分,詳細的說明了系統的開發過程,最后并對整個開發過程進行了總結,實現了物流相關信息管理的重要功能。
本物流管理系統運行效果穩定,操作方便、快捷,界面友好,是一個功能全面、實用性好、安全性高,并具有良好的可擴展性、可維護性的物流管理平臺。
關鍵詞:物流管理,Java編程語言,SSM框架,MYSQL數據庫
1 緒論
1.1 研究背景
當今時代是飛速發展的信息時代。在各行各業中離不開信息處理,這正是計算機被廣泛應用于信息管理系統的環計算機的最大好處在于利用它能夠進行信息管理。使用計算機進行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對于復雜的信息管理,計算機能夠充分發揮它的優越性。
對于物流管理方面來說,雖然現在已經有利用信息技術運作物流管理的例子,但大都處于起步階段,有的僅僅是一些靜態的網頁設計或單純的搬一些必需的表格上電腦,缺乏互動性,用戶不能參與,無法實現寄件申請,這些并沒有很好的利用信息技術實現真正的物流管理自動化。因此為了提高物流管理效率,選擇開發本物流管理系統。
本物流管理系統實現了物流管理自主化、智能化,達到提高管理效率和質量,滿足物流管理要求,節省人力資源的目的。
1.2?設計原則
在開始開發項目之前,必須要先考慮項目的實用性、科學性,以及該項目是否能夠真正讓用戶受益并盡可能的發揮項目的作用。因此,在開發前,通過以下幾條原則對項目進行判斷:
(1)可行性原則。項目需要保證經濟可行性和技術可行性,這包括了項目在瀏覽端、服務端等方面上的經濟和技術上是可以達成的。
(2)適應性原則。項目要保證可維護性和可擴展性,這是每個非短期項目都需要考慮的,并且不論是維護還是擴展,都必須要建立在適應用戶的正常需求的基礎上。
(3)安全性及保密性原則。要充分保證用戶信息的安全性和保密性,不能因為開發上的疏忽,導致用戶的信息泄露。
(4)系統工程原則。為了確保項目的整體性,在項目調查、項目分析、項目設計、項目開發的過程中,都需遵從項目工程的方法和步驟逐步進行。
(5)統一規劃、分期實施、逐步完善原則。項目開發的過程中,要按照規劃、分期實施,特別是要注意在項目開發過程中要有條理,從點到面,一步步完善,不要貪圖進度,要循環漸進的對項目進行開發。
1.3?論文結構安排
第一部分緒論:文章主要從課題背景、設計原則綜合闡述了開發此系統的必要性。
第二部分相關技術:系統開發用到的各種技術都大致做出了簡介
第三部分系統分析:從可行性分析和功能需求分析等角度綜合研究了此次開發的系統
第四部分系統設計:功能模塊設計和數據庫設計這兩部分內容都有專門的表格和圖片表示
第五部分系統實現:進行系統主要功能模塊的界面展示
第六部分系統測試:檢驗程序是否達到預期目標
第七部分總結:進行最后的總結工作
2 關鍵技術簡介
2.1?JAVA技術
Java是一種非常常用的編程語言,在全球編程語言排行版上總是前三。在方興未艾的計算機技術發展歷程中,Java的身影無處不在,并且擁有旺盛的生命力。Java的跨平臺能力十分強大,只需一次編譯,任何地方都可以運行。除此之外,它還擁有簡單的語法和實用的類庫,讓編程人員可以盡可能將精力集中在問題的求解上,并且許多開源項目和科研成果都是采用它實現的。
在1995年這一年的5月份,著名的Sun Microsystems公司在程序開發設計上面鄭重推出一種面向對象開發的程序設計語言——Java,最開始的時候Java是由詹姆斯.高斯林這位偉大的JAVA之父來進行主導,但是在后來由于各種原因,讓甲骨文公司這個針對商業程序創建了oracle大型數據庫的公司收購了Java。Java的平臺總共算下來有3個,分別為javaME和javaSE以及javaEE這3個java平臺。下面將對其進行分別介紹。
(1)在電腦桌面程序的開發上面需要選擇JavaME,這個用得也比較多。
(2)企業也會根據工作以及業務需要開發各種軟件,那么就會選用JavcEE這個支持企業版軟件的開發的Java平臺,JavcEE主攻運用在企業領域上面的web應用,JavcEE也在javaSE的基礎上獲得了比如jsp技術 ,Servlet技術等程序開發技術的支持。
(3)現在生活中手機的普及化,也使得手機端這樣的移動設備的軟件的興起,JavaME這個迷你版java平臺就能運用于移動端的軟件開發操作。
2.2?MYSQL數據庫
所謂數據庫,實際上就是一個容器,按照數據結構來組織、存儲和管理。數據庫的作用就是為大量的信息進行管理并提供高效的解決方案。
MySQL是典型的關系數據庫系統,擁有開源免費、穩定、高效等特點,一直是中小型web項目的最佳數據庫選擇。MySQL作為當今IT領域使用人數最多的開源關系型數據庫軟件之一,在2018年的數據庫使用率排名中位居第二,僅次于目前為止最成功的商業版數據庫Orcle[5]。MySQL最大的優勢之一就是無償使用,這也是它成功的關鍵。
MySQL支持標準化數據庫查詢語言SQL。MySQL是一款非常適合個人開發者或小型組織開發團體的數據庫管理系統,因為它是開源并且免費的,體積小、速度快、成本低以及其最重要的一點開放源碼,深受程序設計人員的喜愛,這也讓它成為了許許多多中小型開發網站數據庫的首選,同時提供了多種開發的連接API。MySQL將數據的存放按照記錄之間的關系存放到了不同的表中,減少了數據的冗余并且提高了開發的工作效率。MySQL支持開發中需要用的大型數據庫,并能處理數以萬計的記錄。因為MySQL是開源的軟件,所以在項目的預算中的時候不用花費額外的資金,大大降低了開發的總體成本,這也是MySQL數據庫在中小型企業和獨立的開發者中廣泛流行的原因[1]。
2.3?B/S結構
Browse/Sever(瀏覽器/服務器)架構,是一種基于互聯網系統的所開發的一種架構,是在C/S架構上進行完善開發的一種架構,它主要用于Web和移動端的軟件開發。它的方便在于用戶只需要在瀏覽器上連接部署上用戶所需的數據庫便可在瀏覽器瀏覽用戶所需的數據。
從邏輯上B/S架構可以分為三層結構體系,客戶機層瀏覽器,Web層和DB服務器層。客戶機層可以將用戶所需要的數據信息通過后端數據庫數據模塊的讀取,顯示到用戶的客戶層瀏覽器中。Web層主要是實現瀏覽器上的功能,來分析處理數據進行端口的對接。可以訪問COM,ADO等對象。DB服務器層是整個B/S框架的核心,為其他技術提供數據庫的支持,并對各種數據庫進行更新,刪除,添加,查詢等功能。
B/S架構這種只需要用戶在瀏覽器上運行不需要再下載客戶端的模式,使用瀏覽器就可以實現和下載客戶端的一樣復雜的功能。給管理系統的用戶帶來了很大的方便,節約了大量的成本。現在B/S架構已經在Web開發上被廣泛運用,它的基礎內容也在不斷的完善更新。
2.4?SSM框架
本物流管理系統基于Spring、SpringMVC、Mybatis框架進行開發設計。
Spring 框架是在2004年首次發布,之后出現了多次的重大修訂。Spring框架是由七個不同的模塊組成,分別是SpringCore、Spring AOP、Spring ORM、Spring DAO、Spring Web Flow、Spring Context和Spring Web MVC[16]。這些模塊提供不同的平臺來開發不同的企業應用程序 ,本課題使用Spring Web MVC模塊開發基于MVC的應用程序。
Spring Web MVC是基于Servlet API的原始Web框架,從一開始就包含在Spring 框架中。“Spring Web MVC”是該框架的正式名稱,但通常被簡稱為“Spring MVC” [17]。Spring MVC框架提供了模型模塊-視圖模塊-控制器的架構和可用于直接開發的Web應用程序的現成組件。Spring MVC模式將應用程序的不同方面分開,使元素之間形成松散耦合。
MyBatis原名叫做iBatis屬于持久層框架,消除了大部分JDBC代碼和參數的設置以及結果集的檢索。這個框架不僅支持普通SQL查詢和存儲過程,還支持高級的映射[18]。MyBatis使用.xml和注解來做原始映射和配置,將接口和Java對象映射成數據庫記錄。
3 系統分析
3.1 可行性分析
可行性分析是該平臺系統進行投入開發的基礎第一步,必須對其進行可行性分析才能夠降低不必要的需要從而使資源合理利用,更具有性價比和降低成本,同時也是系統平臺的成功的未雨綢繆的一步。
3.1.1 技術可行性
本系統可運用SSM框架,結構清晰明了,網頁采用的是JSP進行開發,相比Html更適合。系統使用Java語言編寫,JAVA語言有著龐大的用戶以及學習群體。數據庫采用MySQL。這些都是比較基礎,使用較為廣泛的技術,因此具有技術可行性。
3.1.2 經濟可行性
每一套系統的開發,都得花費一定的時間去研究。需要使用的軟件也是有很多需要花錢。本系統使用的MyEclipse、MySQL數據庫及Google Chrome瀏覽器等軟件都是網上均可以下載使用的,供程序員免費使用,無需收費。從開發角度來說,成本低,因此具有經濟可行性。
3.1.3 操作可行性
本系統操作不復雜且比較容易上手,對于初次接觸本系統的來說,不許要接受什么培訓就可以操作本系統。用戶不需要什么特定的軟件,只需要安裝大眾所使用的瀏覽器即可進行系統的訪問。本系統采用可視化窗口,面向大眾,有效的避免了繁瑣的操作。而且,本系統將各個功能都詳細設計,各模塊功能邏輯清晰,對用戶非常友好。因此,本系統具有操作可行性。
3.1.4法律可行性
所有的功能模塊都不違法法律,也不涉及法律的灰色地帶,項目部署在國內的服務器中,域名在國家的工業和信息化部進行備案,接受監管。所以在開發過程中不會涉及法律責任,具有可行性;
綜上所述,本次開發的物流管理系統在技術、經濟、操作以及法律四個方面都能夠保障系統的順利開發,具有極高的開發可行性。
3.2 系統性能分析
系統除了功能結構設計以外還需要附加需求的分析,非功能需求分析,主要是包括界面、數據庫問題、框架等,需要滿足非功能性能的需求,保證系統運行起來的時候能夠達到最佳的效果,保證穩定性和安全性。
(1)數據底層統一。數據傳輸中需要進行數據處理,在查詢數據存儲上達到最佳效果。
(2)界面風格統一。圖片需要進行PS處理,文字需要統一格式大小。
(3)數據庫。每個模塊都需要獨立,各個模塊之間相互配合,形成一個整體,包裝各個功能合理化的配置,需要考慮開放端口,滿足可擴展性。
3.3 系統功能分析
本物流管理系統主要實現了管理員功能模、配送員功能模塊和用戶功能模塊三大部分,下面將對這三大功能模塊分別進行功能需求分析。
管理員功能模塊:管理員登錄后可對系統進行全面管理,管理員登錄后主要實現的功能模塊包括個人中心、用戶管理、配送員管理、站點信息管理、寄件信息管理、倉庫管理、物流信息管理、配送信息管理、配送員報銷管理以及結算管理,管理員實現了對系統信息的查看、添加、修改和刪除的功能。
用戶功能模塊:沒有賬號的用戶可進行注冊操作,注冊登錄后主要功能模塊包個人中心、站點信息管理、寄件訂單管理以及物流信息管理。
配送員功能模塊:配送員注冊登錄后主要功能模塊包括個人中心、寄件訂單管理、物流信息管理、配送信息管理以及配送員報銷管理。
3.4 系統技術框架分析
本物流管理系統是基于B/S模式又稱Brower/Server或瀏覽器/服務器模式。采取流行成熟的JSP+MYSQL技術,利用瀏覽器通過Web Server同數據庫進行數據交互。本系統只要有一臺能上網的電腦就能使用,即客戶端零維護。而且,系統的擴展非常容易,只要能上網就可以使用了。采用技術框架圖如圖3-1所示。
圖3-1系統技術框架圖
3.5 系統流程分析
3.5.1開發流程
物流管理系統的開發也是有對應的流程,開發之前必須要進行用戶功能需求的分析,最后根據功能需求進行網站設計還有數據庫相關數據的設計工作,此次開發的物流管理系統開發流程如圖3-2所示。
圖3-2 開發流程圖
3.5.2登錄流程
用戶要想在物流管理系統中進行參與操作,必須登錄系統,用戶登錄流程圖如圖3-3所示。
圖3-3登錄流程圖
3.5.3?注冊流程
未有賬號的用戶和配送員均可進行注冊操作,注冊流程圖如圖3-4所示。
圖3-4?注冊流程圖
3.5.4添加信息流程
在添加信息時,系統首先判斷信息是否合法,合法則添加成功,反之重新輸入。添加信息流程圖如圖3-5所示。
圖3-5?添加信息流程圖
4 系統設計
4.1 系統結構設計
在結構設計過程中,首先對系統進行需求分析,然后進行系統初步設計,將系統功能模塊細化,具體分析每一個功能模塊具體應該首先哪些功能,最后將各個模塊進行整合,實現系統結構的最終設計。本物流管理系統結構設計如圖4-1所示。
圖4-1 系統結構圖
4.2 系統順序圖設計
4.2.1登錄模塊順序圖
登錄模塊主要滿足了管理員、配送員和用戶的權限登錄,登錄模塊的順序圖如圖 4-2?所示。
圖4-2登錄順序圖
4.2.2添加信息模塊順序圖
管理員、配送員和用戶登錄后均可進行信息的添加操作,添加信息順序圖如圖4-3所示
圖4-3添加信息順序圖
4.3 系統數據庫設計
數據庫是動態軟件技術的基礎,本系統將采用MYSQL作為數據庫工具。物流管理系統的數據庫管理要進行各種各樣的數據處理,提供各類信息的添加、刪除、修改和更新等功能。通過上述對系統的設計分析,根據系統的需求,主要設計為數據庫概念設計和邏輯結構設計。
4.3.1 數據庫E-R圖設計
E-R圖是一種描述顯示數據類型間的關系的數據描述方法,E-R圖可以完整地映射出現實模型的關系。E-R圖中的三個最為重要的元素就是實體、屬性、關系。E-R圖即由這三點組成。
實體:E-R圖中數據的實體,用矩形表示上面為實體名,下面為實體屬性,實體包含主外鍵等關系。
屬性:E-R圖中的屬性,是指實體的屬性,實體由多條屬性所構成,屬性擁有自己的數據類型,數據大小。屬性的優劣決定了E-R圖中實體的健全性、完整性。
關系:E-R圖中的關系是指實體之間的關系,用菱形來表示實體間的關系,這些菱形關系的聯系上有著一對多或多對多的數據聯系,這些構成了E-R圖的關系,E-R圖的關系緊密連接了實體,使實體間的關聯性更加的顯著、易懂。本物流管理系統的E-R圖如下所示:
(1)管理員信息實體E-R圖如圖4-4所示:
圖4-4?管理員信息實體E-R圖
(2)用戶信息實體E-R圖如圖4-5所示:
圖4-5??用戶信息實體E-R圖
(3)站點信息實體E-R圖如圖4-6所示:
圖4-6??站點信息實體E-R圖
(4)物流信息實體E-R圖如圖4-7所示:
圖4-7?物流信息實體E-R圖
(5)配送員信息實體E-R圖如圖4-8所示:
圖4-8??配送員信息實體E-R圖
4.3.2 數據庫表設計
本物流管理系統采用MYSQL數據庫進行系統數據的儲存,下面介紹數據庫中的各個表的詳細信息。
表4-1???users管理員信息表
序號 | 字段 | 描述 | 類型和長度 | 主鍵 | 是否可空 |
1 | id | 編號 | bigint(20) | 是 | 不允許 |
2 | username | 用戶名 | varchar(100) | 否 | 允許 |
3 | password | 密碼 | varchar(100) | 否 | 允許 |
4 | role | 角色 | varchar(100) | 否 | 允許 |
5 | addtime | 添加時間 | timestamp | 否 | 允許 |
表4-2???yonghu用戶信息表
序號 | 字段 | 描述 | 類型和長度 | 主鍵 | 是否可空 |
1 | id | 編號 | bigint(20) | 是 | 不允許 |
2 | addtime | 創建時間 | timestamp | 否 | 允許 |
3 | yonghuming | 用戶名 | varchar(200) | 否 | 允許 |
4 | mima | 密碼 | varchar(200) | 否 | 允許 |
5 | jijianrenxingming | 姓名 | varchar(200) | 否 | 允許 |
6 | xingbie | 性別 | varchar(200) | 否 | 允許 |
7 | shouji | 手機 | varchar(200) | 否 | 允許 |
8 | youxiang | 郵箱 | varchar(200) | 否 | 允許 |
9 | shenfenzheng | 身份證 | varchar(200) | 否 | 允許 |
10 | zhaopian | 照片 | varchar(200) | 否 | 允許 |
表4-3???zhandianxinxi站點信息表
序號 | 字段 | 描述 | 類型和長度 | 主鍵 | 是否可空 |
1 | id | 編號 | bigint(20) | 是 | 不允許 |
2 | addtime | 創建時間 | timestamp | 否 | 允許 |
3 | zhandianmingcheng | 站點名稱 | varchar(200) | 否 | 允許 |
4 | dizhi | 地址 | varchar(200) | 否 | 允許 |
5 | zhaopian | 照片 | varchar(200) | 否 | 允許 |
6 | jingyingfanwei | 經營范圍 | varchar(200) | 否 | 允許 |
7 | zhongliangjifei | 重量計費 | varchar(200) | 否 | 允許 |
表4-4???wuliuxinxi物流信息表
序號 | 字段 | 描述 | 類型和長度 | 主鍵 | 是否可空 |
1 | id | 編號 | bigint(20) | 是 | 不允許 |
2 | addtime | 創建時間 | timestamp | 否 | 允許 |
3 | wuliubianhao | 物流編號 | varchar(200) | 否 | 允許 |
4 | yonghuming` | 用戶名 | varchar(200) | 否 | 允許 |
5 | jijianrenxingming | 寄件人姓名 | varchar(200) | 否 | 允許 |
6 | shouji` | 手機 | varchar(200) | 否 | 允許 |
7 | wupinmingcheng | 物品名稱 | varchar(200) | 否 | 允許 |
8 | mudedi | 目的地 | varchar(200) | 否 | 允許 |
9 | shoujianrenxingming | 收件人姓名 | varchar(200) | 否 | 允許 |
10 | lianxifangshi | 聯系方式 | varchar(200) | 否 | 允許 |
11 | tupian | 圖片 | varchar(200) | 否 | 允許 |
12 | peisongyuangonghao | 配送員工號 | varchar(200) | 否 | 允許 |
13 | peisongyuanxingming | 配送員姓名 | varchar(200) | 否 | 允許 |
14 | lianxidianhua` | 聯系電話 | varchar(200) | 否 | 允許 |
15 | wuliuzhuangtai | 物流狀態 | varchar(200) | 否 | 允許 |
表4-5???peisongyuan配送員信息表
序號 | 字段 | 描述 | 類型和長度 | 主鍵 | 是否可空 |
1 | id | 編號 | bigint(20) | 是 | 不允許 |
2 | addtime | 創建時間 | timestamp | 否 | 允許 |
3 | peisongyuangonghao | 配送員工號 | varchar(200) | 否 | 允許 |
4 | peisongyuanxingming | 配送員姓名 | varchar(200) | 否 | 允許 |
5 | mima | 密碼 | varchar(200) | 否 | 允許 |
6 | xingbie | 姓名 | varchar(200) | 否 | 允許 |
7 | lianxidianhua | 聯系電話 | varchar(200) | 否 | 允許 |
8 | youxiang | 郵箱 | varchar(200) | 否 | 允許 |
9 | `shenfenzheng | 身份證 | varchar(200) | 否 | 允許 |
10 | zhaopian | 照片 | varchar(200) | 否 | 允許 |
5 系統的實現
5.1 登錄模塊的實現
用戶要想進入本系統必須進行登錄操作,在登錄界面輸入系統賬號、登錄密碼,選擇登錄類型,點擊登錄按鈕進行登錄系統,系統登錄界面展示如圖5-1所示。
圖5-1 系統登錄界面圖
5.2?注冊模塊的實現
沒有賬號的用戶和配送員可進入對應角色注冊界面進行注冊操作,用戶注冊界面展示如圖5-2所示,配送員注冊界面展示如圖5-3所示。
圖5-2用戶注冊界面圖
圖5-3?配送員注冊界面圖
5.3?用戶管理模塊的實現
管理員登錄后可查詢、添加、修改和刪除用戶信息,用戶管理界面展示如圖5-4所示。
圖5-4?用戶管理界面圖
5.4?配送員管理模塊的實現
管理員可增刪改查配送員信息,配送員管理界面展示如圖5-5所示。
圖5-5 ?配送員管理界面圖
5.5?站點信息管理模塊的實現
管理員可增刪改查站點信息,用戶登錄后可查看站點信息,并可選擇站點進行寄件,站點信息管理界面展示如圖5-6所示,添加站點信息界面展示如圖5-7所示,站點信息界面展示如圖5-8所示。
圖5-6 ?站點信息管理界面圖
圖5-7?添加站點信息界面圖
圖5-8 站點信息界面圖
5.6?寄件訂單管理模塊的實現
用戶登錄后可選擇站點進行添加寄件訂單,添加寄件訂單界面展示如圖5-9所示。配送員可查看用戶寄件訂單信息,并可對其進行攬收入庫操作,寄件訂單管理界面展示如圖5-10所示
圖5-9 添加寄件訂單界面圖
圖5-10 ?寄件訂單管理界面圖
5.7?倉庫管理模塊的實現
管理員可進行倉庫管理操作,并可進行發貨、修改和刪除,倉庫管理界面展示如圖5-11所示。
圖5-11 倉庫管理界面圖
6 系統測試
6.1 測試目的
系統測試是通過在設定的特定的環境下執行程序來檢測環境發生錯誤的不可或缺的階段。系統測試包括安全測試、壓力測試、回復測試等等,這些是保障我們所開發的程序與系統的優良質感非常為之重要的部分。
在項目的開發過程中,出現各種漏洞各種錯誤是極其正常的事情,有些錯誤可以憑借著開發工具發現,迅速找出并修改,而有些錯誤漏洞則是在一些細節上出現邏輯錯誤,導致引起一些列的錯誤,這類錯覺有時藏得很深,會讓我們在排除的過程中浪費大量的時間和精力。但隨著時間的推移,經驗的上漲,以后發現這類錯誤的時間一定會慢慢縮小。
系統測試的目的主要在于檢查所實現的代碼成品能否滿足最初設定的目標以及系統需求,從測試的過程中發現與所需要的功能不同的錯誤,包括達不到預定需求甚至與預定需求完全矛盾的錯誤,并且在后續的開發上進行更改,甚至提出更加符合項目的新需求。
6.2測試步驟
測試的順序就是先進行單元測試,這個測試沒有問題之后,才是進行集成測試,緊接著就是進行程序的確認測試。接下來就對這幾個在程序測試中占有一定分量的測試步驟進行闡述。
(1)單元測試
單元測試還有個只有極少數人知道的名字——模塊測試。這個測試方法在程序編碼過程中使用,每當程序員開發完成程序的一個功能模塊之后,就要用到此測試方法,這個方法能夠幫助開發人員及時發現并解決程序編碼過程中產生的問題。能夠幫助程序開發人員按照系統詳細設計的說明書進行系統的功能開發操作。
(2)集成測試
集成測試又名組裝測試,通常運用于程序的設計階段的測試,如果程序是由各個模塊組裝而成的話,那么集成測試著重用來檢測各個功能模塊間的通信還有接口。
(3)確認測試
進入到這個測試環節,說明系統的功能大致上是不存在問題了,這個部分主要就是對系統功能進行再次確認,看看系統功能是不是符合需求規格說明書上面的內容,此外,也需要對程序的性能進行檢測,還有系統具有的其他特點是不是都能滿足用戶的需求。如果系統是專門針對具體某個用戶而開發的,那么系統的驗收測試就是這個用戶來進行,如果系統的使用者是許多用戶的話,那么采用的就是Alpha測試和Beta測試來揭露錯誤。
(4)系統測試
已經通過確認測試的系統在這個時候就可以作為一個整體來進行測試了,這個部分考慮的因素就有測試的電腦的硬件因素,電腦上安裝的軟件因素,以及測試人員這個因素等。把這些因素結合在一起進行組裝測試,還有確認測試等測試操作。
6.3測試方法
本測試主要是系統是否能夠進行服務器進行處理信息的能力,不同的用戶發出不同的服務請求,系統必須能夠準確的進行數據的傳達,在這種情況下進行測試響應的時間、內存使用的情況和CPU占用大小等指標,系統完成設計必須保證信息的正確性,信息紊亂帶來的后果是非常可怕的,所有必須要進行壓力測試,通過本測試進行系統相應速度、穩定性能和處理能力進行優化。
運用黑盒子測試的測試辦法,把各個不同功能的軟件模板進行區分、管理。對于不同的模塊獨立的分裝起來,在傳統測試的時候要進行數據的統一測試,完成對系統的概要設計詳細解讀資料、需要解決的問題,及操作的詳細應用說明等內容來視作測試的突破口,對測試的對象進行逐一對照檢查,并針對單個的程序檢測延伸至這個研發過程中單個及整個集成單元的檢測中,要有規律有順序的進行,不但可以縮短我們的工作時效,避免返工的操作,也可以對可用性負責,提高了可操作性和軟件研發的實用性。通過對系統概要設計驗證測試,測試系統的統一管理方式,對系統的各個功能模塊以及系統的性能進行測試,驗證系統的功能以及系統的性能。
6.4測試結果
經測試本物流管理系統操作簡單,界面清晰,運行穩定,能夠充分滿足物流管理需求。總體說來,軟件通過測試。
7 結論
本次開發的物流管理系統已經接近尾聲階段了,在這次獨立完成畢業設計的期間,我自己體會到了很多的東西,另外我很想說的就是獨立開發軟件真的很能讓人在開發期間得到鍛煉,不管是需求分析,還是系統的設計以及系統功能詳細實現還有最后的測試工作,每一步都要小心翼翼的完成,一步一步來,不然任何環節出現了差錯,返工起來也很麻煩,開發系統過程中,遇到了很多的難題,比如物流管理系統需要具有什么樣的功能,這個我還是思考了很久,后來同學給我提示了一下,參考別人做好的系統,看看人家設計了什么功能,自己就多多參考下,后來這個問題就很好解決了,最難的就是系統編碼了,我這個人本來就比較粗心,編碼出現很多不該出現的錯誤,不該打空格也不小心鍵盤空格鍵多敲了兩下,整得自己老是程序運行出錯,找了好久都沒有解決,后來無奈找到室友幫忙看看,慢慢檢查終于找到問題了,編碼過程真的很心塞。還好東拼西湊總算完成了功能要求了。系統整體界面雖然不是很好看,但起碼不花哨,用戶使用起來整體感覺就是簡潔,功能體驗雖然有點啰嗦,但是需要的功能都已經具備了。
自己的身份目前還是學生,開發程序肯定是不會考慮周全,程序完成開發后也經過了一系列測試,整體來說還是沒有發現明顯的操作邏輯錯誤,自己在畢設制作過程中不僅知識有所增加,獨立學習的能力也有所提高了,更重要的就是遇到問題向周邊同學尋求幫助,這個是很有必要的。總的來說畢業設計的圓滿完成,我真的覺得很自豪。
參考文獻
[1]王昊欣,姜學東.JAVA編程語言在計算機軟件開發中的應用[J].電子測試,2017(13):73-74.
[2]李國一.計算機軟件開發中Java語言的應用[J].信息與電腦(理論版),2017(14):49-50.
[3]邢如意.Java語言中對象的理解與應用[J].軟件工程,2017,20(04):9-11.
[4]陳節鑫.基于計算機軟件開發的JAVA編程語言及運用研究[J].福建電腦,2017,33(03):105+167.
[5]樸宏波.基于計算機軟件開發的JAVA編程語言解析[J].科技創新導報,2016,13(30):66+68.
[6]朱華.Java軟件開發問題探究[J].科技創新與應用,2016(33):93
[7]孫偉強,賈蕊.B/S架構可格式化應用系統研究[J].電大理工,2017(04):27-28.
[8]劉陽娜.大數據下的MySQL數據庫的效率優化[J].信息通信,2017(12):111-112.
[9]王麗娟,靳繼紅.基于MySQL的查詢優化技術研究[J].電腦知識與技術,2017,13(30):35-36.
[10]基于JSP技術的Web應用程序的開發[J]. 張波,張福炎.??計算機應用研究.?2016(05)
[11]孫婷,蘆英明,陳中偉.軟件系統性能測試方法及流程規劃[J].自動化與儀器儀表,2018(01):166-169.
[12]JSP的網絡數據庫連接技術探討[J]. 崔娜.??黑龍江科技信息.?2016(36)
[13]Implementing WebGL and HTML5 in Macromolecular Visualization and Modern Computer-Aided Drug Design[J] . Shuguang Yuan,H.C. Stephen Chan,Zhenquan Hu.??Trends in Biotechnology . 2017 (6)
[14]Ahead-of-time compilation of JavaScript programs. R.Zhuykov,E.Sharygin. Programming and Computer Software . 2017
[15]JSP Special Issue on Information Processing in Living Systems. Thierry Mora,Luca Peliti,Olivier Rivoire. Journal of Statistical Research . 2016
[16] 郝佳編著.Spring源碼深度解析[M].人民郵電出版社,2019:5-98.
[17] [美]Paul Deck著.林儀明譯.Spring MVC學習指南[M].人民郵電出版社,2017:14-113.
[18] 李艷鵬[等]編著.互聯網輕量級SSM框架解密[M].電子工業出版社,2019:19-98.
致 ?謝
經過好幾個月的努力,終于完成了本物流管理系統的開發。在這過程中我把從導師以及圖書館中學到的相關的知識運用到系統的開發過程中。這是對我所學知識的一個完整性的檢驗。其中發現了諸多的不足和缺點。但是我相信在經過長時間的磨練我會不斷的開發出更好的信息管理系統。在這次畢業設計中是對我平常在課堂的一次考核,也是將理論應用到實踐的一項考察。
在即將畢業之際,我的心情實在難以平靜,從最開始的學習專業知識到剛開始參加畢業課題討論到最后論文的順利完成,我身邊的親朋好友給了我極其多的幫助,這些幫助大多是雪中送炭,幫助我渡過了很多難關。因此,我要想對我伸出過援助之手的可愛的朋友、老師、家人們表示衷心的感謝。
我要感謝此次指導我最親愛的的老師,是他的及時糾正畢設中出現的問題,及時的給我建議,使得我的設計如期的完成。指導老師在我本次物流管理系統的開發過程中,從程序的設計、代碼的完善等方面以及論文的指導提供了很多很多寶貴的意見,并且為我推薦了許多相關JSP技術的詳細資料,他的指導和建議使我受益匪淺,通過老師的耐心輔導和指點,我的論文順利的完成,并保證了本論文的質量,我對他的辛勤指導表示崇高的敬意。我要非常鄭重的向我的導師說一聲:謝謝。也希望老師多多指正論文中出現的問題,并提出寶貴建議。
核心代碼展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}