基于SpringBoot的快递配送规划系统的设计与实现

目 录

摘 要 I
Abstract II
引 言 1
1 相关技术 3
1.1 Spring Boot框架 3
1.2 Vue框架 4
1.4 Bootstrap框架 4
1.5 JQuery技术 5
1.6 Ajax技术 5
1.7 ECharts 5
1.8 MySQL 6
1.9本章小结 6
2 系统分析 7
2.1 需求分析 7
2.2 非功能需求 10
2.3 本章小结 10
3 系统设计 11
3.1 系统总体设计 11
3.1.1 系统体系结构 11
3.1.2 系统目录结构 11
3.1.3 系统功能结构 11
3.2 系统详细设计 12
3.2.1 系统功能设计 12
3.2.2 数据库设计 13
3.3 本章小节 18
4 系统实现 19
4.1 开发环境 19
4.2 开发规范 19
4.3 数据库实现 19
4.4 Spring Boot项目搭建 19
4.5 功能实现 20
4.6 本章小结 22
5 系统测试 23
5.1 测试计划 23
5.2 用例测试 23
5.3 压力测试 24
5.4 本章小结 24
结 论 25
致 谢 26
参考文献 27

摘 要

随着近几年来社会与经济快速的发展和电子商务的不断兴起,我国的快递行业现在已经成为了使社会经济提升的途径之一并且是新型的服务产业结构体系。由零点公司在国内发起的关于快递服务满意程度调查,现阶段有些领先的快递企业已经进入了服务化的转型期,面临服务提升的瓶颈,而第二梯队的服务能力显著提高。
快递行业的绝对霸主尚未成型,你追我赶的竞争形式会更加严峻。目前快递行业普遍面临的人员稳定性问题、服务专业性问题、与第三方合作的问题、远低于其他行业的售后服务水平等问题都需要更加系统化的改革方案,尤其是加盟制的快递企业,而这些问题都更加需要系统化的方案去解决这些问题。
本项目本为了加强快递业的发展,加强推动互联网能够在各行各业中得到充分使用。项目使用的最短路径算法,分析并且规划快递的配送路径,系统平台为用户提供并整合快递信息,用户可以更直观的观察快递的配送路径,以及快递员配送其他快递的配送路径,可以整理个人所有快递信息。系统使用了Spring Boot 编写最短路径算法,基于克鲁斯卡尔算法,以及决策出最优的路径,解决对多个指定地点并且指定起始点进行规划,利用Redis处理数据缓存问题、通过SSL协议解决数据安全问题等,可以对用户高并发请求进行分流处理。

关键词:Spring Boot; 快递配送; 最短路径

Abstract

With the rapid social and economic development in recent years and the continuous rise of e-commerce, China’s courier industry has now become one of the ways to enhance the social and economic and is a new service industry structure system. The survey on courier service satisfaction launched by Zero Point in China, some leading courier companies at this stage have entered the transition period of serviced, facing the bottleneck of service improvement, while the second echelon of service capacity has significantly improved.
The absolute hegemon of the courier industry has not yet taken shape, and the form of competition will be even more severe if you catch up. At present, the courier industry is generally faced with personnel stability issues, service professionalism issues, problems with third-party cooperation, far lower than other industries, such as the level of after-sales service, etc. need more systematic reform programs, especially the franchise system of courier enterprises, and these problems are more in need of systematic programs to solve these problems.
This project is intended to strengthen the development of the courier industry and enhance the promotion of the Internet can be fully used in all industries. The project uses the shortest route algorithm to analyze and plan the delivery route of the courier, the system platform provides and integrates the courier information for the user, the user can more intuitively observe the delivery route of the courier, as well as the delivery route of the courier to other courier, can organize all the courier information of the individual. The system uses Spring Boot to write the shortest path algorithm, based on the Kruskal algorithm, and determine the optimal path, solve the planning of multiple specified locations and specify the starting point, use Redis to handle data caching problems, solve data security problems through SSL protocol, etc., can be triaged for high concurrent user requests.

Keywords: Spring Boot; Delivery express; Shortest path

引 言

在如今的互联网、电商快速发展的时代,网购可以说是离不开我们的日常生活了。而我国的快递业也会发展得越来越迅猛。然而这种服务的建设比较容易被超越,新的企业要追上甚至赶超领先的企业,必须进行非常大的改革,需要培养企业核心竞争力。而互联网技术,技术融入给快递行业带来了新的面貌,如何实现人力资源与技术嵌入的无缝衔接将会是是未来工作重点。由零点公司进行的全国快递服务满意度调查的结果显示越来越多的用户经常使用新兴的寄、收件方式,微信、官网等下单方式,智能快件箱、第三方合作自提点等收件方式从被动接受逐渐变为主动选择。新兴方式的服务满意度仍然低于传统的电话下单、上门取、派件,在越来越多的智能化方式的辅助下,派送服务甚至出现了下降的趋势。为了不让更多的快递服务人员遭遇到失业的困难,本项目使用最短路径算法,分析并且规划快递的配送路径,系统平台为用户提供并整合快递信息,使其快递配送人员能够更快的送到用户手中。
系统前端使用Html5+Vue+jQuery进行混合式开发,使用vue-resouse处理前端分离跨域问题。使用Spring Boot 编写最短路径算法,基于克鲁斯卡尔算法,以及决策出最优的路径,解决对多个指定地点并且指定起始点进行规划,通过数据缓存对查询速度的进行优化,通过前后端分离使得项目部署更加节省服务器资源。
算法中的结点以及无向图的边实例出来,用路程表示权值,最后生成的最小生成树为最短路径。通过快递员与快递包裹之间的多重关系,建立数据库表结构。使用Maven仓库搭建Spring Boot框架通过快递员录入快递信息,快递员配送快递等功能从而确定页面格式导入数据库信息,添加快递并完成投递测试。采用前后端分离的方式,使得需要对前后端文件分别打war包部署到服务器。
在本文中着重介绍了快递配送规划系统使用的相关技术,对系统进行系统分析,系统设计,介绍快递配送规划系统的实现部分,说明了系统包括的哪些测试工作。
第1章,介绍项目中使用的相关技术,说明快递配送规划系统后台的核心架构Spring Boot框架技术,数据库使用MySQL数据库,服务器采用Tomcat服务器等,使用ECharts技术分析学生数据信息,了解用户活跃度,
第2章,对快递配送规划系统进行系统分析,分析快递配送规划系统的功能需求、用例分析和非功能需求,分为四大模块:用户模块、快递模块、配送模块、数据展示模块。
第3章,介绍快递配送规划系统的系统设计,主要是分为详细设计和概要设计两种。使用功能模块去分,将快递配送规划系统总体分为四大模块,分别为用户模块、快递模块、配送模块、数据展示模块。本文结构安排如下。其中详细设计中要介绍数据库设计以及详细功能设计,在数据库设计中,展示了项目中使用到的主要数据表;功能设计中展示设计功能用例图。
第4章,介绍快递配送规划系统的系统实现部分,该部分分为开发环境、开发规范、数据库实现以及核心功能实现四大部分。其中数据库实现中,展示项目所用到的全部数据表。展示相应功能的伪代码以及项目功能实现截图。
第5章,介绍快递配送规划系统的测试工作,分为单元测试和压力测试。在单元测试中测试核心功能,并且写明测试计划以及测试用例,单元测试结束后,写明测试结果。压力测试中,向系统发送数量较多的请求,查看系统响应时间、吞吐量,编写测试结果报告。
结论,说明系统总体的完成情况,总结系统所需要解决的一些问题、系统的应用价值,对系统进行整体评价,说明系统的优点、缺点,对下一步工作进行构想,展望系统之后需要设计的功能。

1 相关技术

本系统使用MacOS的操作系统,IDEA进行开发。前端采用了Bootstrap模板和ECharts技术,用来对界面进行绘制和数据展示,使用Ajax实现前后端数据的访问,使用Vue.js和jQuery进行脚本编写。后台使用Spring Boot框架,使用单例模式的设计模式进行代码的编写,使用MySQL作为后端数据库,使用MyBatis作为中间件对数据库进行访问,服务器使用的Tomcat。
1.1 Spring Boot框架
Spring Boot 是在2013年推向市场的开发框架,主要的用途是用来将Spring框架的开发、配置、调试、部署工作进行简化 [1]。在创建Spring项目时,必须要设定指定的XML文件。Spring 3和Spring 4的推出使得开发者的认知比设置更为重要。XML正在逐渐改变不同的注释。Spring 4项无法创建XML文件。要创建一个大项目,需要很多软件包[2]。即使使用Maven配置也需要很多代码。现在一个网站平台快速发展,Spring的开发模式越来越麻烦,在这个环境中Spring Boot和Spring 4一起出现,如图1.1所示。
在这里插入图片描述

图1.1 SpringBoot框架示意图
框架虽然很强,但即使是很简单的项目,也需要多一些配置,Spring Boot的功能非常简单,帮助我们自动设置,Spring Boot框架的核心是自动设置。如果有合适的jar包,Spring将自动设置[3]。如果默认设置不能满足要求,可以更换configuration并使用自己的设置。另外,Spring Boot会对内部网络服务器、系统监控等许多有用功能进行自动设置。合并并快速构建企业和应用程序。
1.2 Vue框架
Vue 是用于构建用户界面的框架,通过整合第三方iview库,基于脚手架框架开发 Web 前端页面[2]。可提供强大的伸缩能力。Vue是用户界面的框架,进步代表的意义是最小化,所有的框架只能以自己的特点向用户提出一定的要求,这些要求都是号召的,强烈的[4]。要求强是影响企业发展的使用方式,简单地说,对于大家不知道的Vue的模块或函数是不能使用的,可以换成熟悉的技术,与其他框架相比,基本上没有生硬的要求,如图1.2所示。
在这里插入图片描述

图1.2 Vue框架示意图
1.4 Bootstrap框架
Bootstrap是以Java脚本等技术为基础的开发结构,由美国推特的设计师马克•奥特和杰特Thortan开发,使网络开发更加快速,Bootstrap提供了美观的前端代码编写规范[6]。这些规范是由动态CSS语言less编写的,该框架一上市就成为最流行的开放源项目,NASA的MSNBC突发新闻使用了这个程序[7]。据了解,Wex5前端开放源框架是基于Bootstrap源代码进行性能优化的。
1.5 JQuery技术
JQuery库是一个快速、简洁的JavaScript库,拥有强大的浏览器兼容性,创造出更少的代码,并提供更多的工作[8]。JQuery将常见的JavaScript函数编码组合起来,JavaScript的设计模式,便于处理的HTML,易于分离结构和行为,JQuery具有独特的连锁语法,它有着极其简单明了的多重功能界面 [9]。JQuery可以操作页面的对象,并且对页面的外观进行修改,并为页面添加更多的效果和浏览器兼容。
1.6 Ajax技术
Ajax是为了创建交互式网络程序的网络开发技术。Ajax函数控制整体或个体应用,Ajax库包含一系列的JavaScript代码。Ajax技术根本上是由JavaScript组合而成的[11]。Ajax是一种网络开发环境[10]。可以在这里建立客户端库和使用客户端库。Ajax的特点是在未提交数据的情况下,可以重新修改某些页面。
1.7 ECharts
ECharts技术是一款开源的工具,具有数据可视化的功能,它比较依赖于轻量级的画布,用户使用ECharts可以在电脑和移动端设备上进行设计,设计个性化界面,使图表看起来更加直观生动形象,使用多种类型展示数据的变化趋势,方便用户查看使用[12]。ECharts所提供的图表的种类很多,兼容性也比较好,它可以为用户提供饼图、折线图、柱状图、地图等各种各样关系图形表,更加直观、生动的展示出各组数据之间的关系变化,用户可根据系统需求设计出不同的图表关系[13]。
通过导入所需图表的JS文件,文件中调取所需展示的某组数据,即可展示出这些数据之间的关系以及他们的变化趋势[14]。ECharts技术不仅仅在视觉上增加了用户体验度,在后台的管理上也有效的减少了工作时间。使数据更加直观,方便查看。
快递配送系统中,快递员角色和用户角色中的数据统计部分使用图表分析。管理员可以在本系统中以图形的形式观察系统当中的一些数据,这些数据在展示的时候会更加智能,可以展示所需要对比的细节。大大降低工作复杂度提高工作效率。
1.8 MySQL
MySQL数据库具有快速的性能。该数据库支持非常多的操作系统,能够工作在不同的操作系统上[15]。因为MySQL数据库的服务器与PHP 都具有良好的跨平台的特点[16],所以开发软件时经常将这两者结合起来[17]。
1.9本章小结
本章主要介绍了快递配送规划系统项目所应用到的Spring Boot框架,以及对MySQL数据库的使用、Tomcat服务器等相关内容介绍,项目中使用了ECharts数据可视化对数据进行处理。介绍了这些技术在快递配送规划系统的实现中能够起到的重要作用。进行深入学习,为快递配送规划系统项目的实现打下良好的基础。

2 系统分析

本章基于第一章介绍的相关技术,详细的描述了基于SpringBoot的快递配送规划系统的系统分析,分别从实体和功能需求进行分析,使用用例图展示了用例之间的关系可以更加直观的展示基于SpringBoot的快递配送规划系统的用例之间的关系。
2.1 需求分析
为解决快递员只能配送小范围快递,用户无法看到快递最后配送路径的问题设计快递配送规划系统。本系统的共有用户模块、快递模块、配送模块、数据展示模块四大模块。
本系统通过分拣员录入快递信息,之后快递员对快递进行选择投递,选择完毕后进行配送,系统会绘制最短路径,将路径显示在地图上。用户可以在快递投递过程中和配送完毕后查看配送路径。实现了快递的“最后一公里“对用户的透明化,也实现了快递员可以配送大范围地区的难题。通过获取的需求且对现有系统常规功能的分析,确定基于SpringBoot的快递配送规划系统包括:基于SpringBoot的快递配送规划系统用户模块包括用户的常规信息数据展示,用户的信息修改,以及用户发布信息操作,用户申请实名认证操作,用户申请发布广告权限,申请发布公告权限等功能,如图2.1所示。
在这里插入图片描述

图2.1用户模块用例图
申请实名认证。使用者进入主页,进入菜单栏中的实名认证页面,进入申请实名认证的页面后需要根据提示输入需要输入的信息,单击提交按钮,然后就可以进行申请实名认证。管理员可以对申请的实名认证进行审核。
申请发布公告权限。使用者进入主页,进入用户的信息页面,进入申请发布公告的主页面,点击页面中的提交按钮即可完成功能,管理员就可以查看到申请信息对其进行操作。
申请发布广告权限。用户进入主页,进入用户信息页面,进入菜单栏中广告公告页面,进入申请广告公告页面后,点击提交就可以申请发布广告权限,管理员可以对申请的发布广告权限进行审核。
快递模块。包含系统当中用户和快递员对快递的信息获取以及对快递的操作,其中模块的主要功能是快递员录入快递,快递员选择快递,用户查看快递等功能如图2.2所示。
在这里插入图片描述

图2.2快递模块用例图
快递员录入快递功能。快递员进入系统,进入菜单栏中录入快递页面,进入快递录入界面后,快递员输入快递公司、手机号、地址等信息,点击录入,快递则被录入到系统内,快递员可以查看到快递信息。
快递员选择快递功能。快递员进入系统,进入菜单栏中快递选择页面,进入快递选择界面后,系统会显示当前录入的且没有被选择和配送的快递,快递员可以点击选择按钮将快递放入自己的配送列表当中。
用户查看快递功能。用户进入系统,进入主页菜单栏中我的快递页面,进入我的快递页面后,系统会显示当前手机号属于用户的快递信息,其中包括快递的快递公司,快递地址和配送状态。
配送模块。包含系统当中的快递配送相关功能,主要功能是快递员配送快递,快递员绘制配送路径,快递员规划配送路径,快递员进行配送,快递员继续配送,用户查看快递配送路径,如图2.3所示。
在这里插入图片描述

图2.3配送模块用例图
快递员使用配送快递功能。当快递员登陆并且进入到主页时,单击菜单栏中的选择快递按钮,进入到选择快递页面,在选择好快递之后,进入配送快递界面,系统会显示快递员已经选择的快递信息,点击配送快递就可以对快递进行配送。
快递员绘制配送路径功能。快递员进入主页,在选择快递并且进入配送快递节目点击配送快递,系统会将快递的位置信息显示在地图上,快递员点击绘制,系统就会绘制出快递之间的所有路线。
快递员规划配送路径功能。快递员登陆进入主页,点击菜单栏中的选择快递按钮,进入选择快递页面,在选择完快递,点击配送快递,并且绘制快递路线后,点击规划按钮,系统就会根据克鲁斯卡尔算法规划出配送路径。
快递员进行配送功能。快递员进入主页,在选择快递后,点击配送快递,绘制并规划配送路径后,系统就会将快递信息和配送路径保存到系统当中,快递员就可以对快递进行配送。
数据展示模块包括整个系统的数据统计展示,在主页里面使用图表的方式,将系统的主要信息展示出来,主要功能是展示用户登陆次数信息,用户登陆比例信息,如图2.4所示。
在这里插入图片描述

图2.4数据展示模块用例图
展示用户登陆次数信息功能。管理员输入账号密码点击登陆后,进入系统主页,系统会自动获取系统单中用户的登陆次数,通过Echarts图表来展示用户的登陆次数,管理员可以直观的观察到用户的活跃度。
用户登陆比例信息展示功能。管理员登陆后,进入系统主页,系统会获取系统单中用户比例信息,通过图表的形式展示用户登陆比例信息,管理员可以直观的观察到快递员与用户的登陆频率比例。
2.2 非功能需求
非功能需求的满足程度,直接影响软件能否以正常的形式运行。快递配送规划系统的非功能需求是功能需求分析介绍的功能以外的特性,包括对服务器硬件和软件要求、客户端软件要求、访问容量以及响应时间。
2.3 本章小结
本章介绍的是快递配送规划系统的需求分析,主要包含了项目的功能需求、用例分析以及非功能需求。经过这一阶段的项目分析,对整个项目平台需求有了进一步规划。可用于今后指导该项目的设计、开发、测试工作。

3 系统设计

3.1 系统总体设计
本章是对基于Spring Boot的快递配送规划系统的用例划分、功能模块、数据结构、接口、异常处理、扩展性等进行了设计,使该系统更加符合用户的需求,同时为测试人员提供参考。
3.1.1 系统体系结构
系统使用浏览器和服务器结构(B/S结构)。能耗优化系统大概分为表示层、应用层、数据库三层。表示层既用户的操作界面,在快递配送规划系统中用户的前端使用vue.js,且用户端使用前后端分离技术,便于将来的APP或其他类型的开发,前后端交互操作利用Ajax技术实现。管理员管理后台使用前端使用Bootstrap模板,界面简洁清晰,容易操作[18]。B/S结构保留了C/S结构的优势,同时也使得复杂的程序更容易实现。
3.1.2 系统目录结构
系统的配置文件(application.properties)放在src/main/resources /;
系统公共文件(ApplicationServer.java)放在com.app;
系统实体(bean)放在com.app.bean;
系统业务层(Service)放在com,app.service;
系统控制器(Controller)放在com.app.controller;
系统工具(tool)放在com.app。
3.1.3 系统功能结构
本系统的功能分为四大模块:用户模块、快递模块、配送模块、数据展示模块。其中这些模块内的主要功能如下: 用户的信息查询,用户的信息修改,用户发布信息操作,用户查看发布信息,用户申请实名认证操作,用户查看实名认证状态,用户申请发布广告权限,用户查看申请发布广告权限,申请发布公告权限,用户查看申请发布公告权限,快递员录入快递,快递员查看录入快递,快递员选择快递,快递员查看选择快递,用户查看快递,快递员配送快递,快递员绘制配送路径,快递员规划配送路径,快递员进行配送,快递员继续配送,快递员查看配送路径,快递员查看配送路径详细信息,用户查看快递配送路径,系统展示用户登陆次数信息,系统展示用户快递员登陆比例,具体的功能结构图如图3.1所示。
在这里插入图片描述

图3.1系统功能结构图
3.2 系统详细设计
3.2.1 系统功能设计
在设计系统功能前,一定要了解项目功能的操作时序,并且明确系统的功能实现要求。本系统的核心功能为快递员规划快递路径,用户查看快递路径,以下介绍为本系统的核心功能设计。
快递员规划配送路径功能。快递员进入主页,在选择完快递,点击配送快递,并且绘制快递路线后,点击规划按钮,系统就会根据克鲁斯卡尔算法规划出配送路径。如图3.2所示。
在这里插入图片描述

图3.2快递员规划配送路径功能时序图
用户查看快递配送路径功能。用户进入主页,进入我的快递页面,用户可以查看配送中状态的快递的配送路径,用户点击查看,系统就会将配送路径信息显示到地图上。如图3.3所示。
在这里插入图片描述

图3.3用户查看快递配送路径功能时序图
快递配送路径规划功能。根据从前端传回的路径信息,将所有的配送地点设置为一个节点,将这些节点连接成一个无向连接图,在这个连接图上以快递员的所在节点设置为起始节点,其余节点以这个节点生成最小生成树,从而形成最短路径,从Krusakal算法中,从终端角度获取了网络的最小生成树,时间复杂度是O(eloge)[19]。比起基础算法,更适合寻找边缘性网络的最小生成树[20],对于连接网络最小生成树,全体当价值要求最短的时间时,最直接的思想是根据连接网络的所有节点排序,选择最小值的排序,因为最小生成树本身就是生成树,所以必须满足以下两点:
在一个具有n个顶点的连接网络上生成的树只有n-1个末端,才能连接n个顶点,因此克鲁斯卡尔算法的具体思想根据权重值,按照上升顺序排列在所有边缘,从小到大的顺序来判断[21],条件是:如果这一变量与以前选定的不循环,可以生成树的一部分[22],否则将被丢弃。从一个有n个顶点的连接网中过滤出n-1个末端。过滤的边缘和所有顶点都是网络的最小生成树[23]。
3.2.2 数据库设计
根据需求分析以及快递配送规划系统项目的需求,对项目数据库进行了设计,可得到一个映射信息数据需求概念的E-R图模型,设计绘制出的实体类关系图如图3.4所示。
在这里插入图片描述

图3.4 快递配送规划系统实体关系图
根据上面描述的需求分析和系统设计,以及分析整个系统的业务流程。本系统共20个实体,5个一对一关系,12个一对多关系,需要设计20个表,如表3.1所示。

表3.1 数据库表列表
编号 表名 说明
1 ad 广告表
2 adcontrol 广告权限表
3 adinput 广告审核表
4 admin 管理员表
5 company 快递公司表
6 couriserexpresses 快递员快递表
7 couriserloginlog 快递员登陆日志表
8 couriserlog 快递员申请表
9 express 快递表
10 expressespathlogs 快递配送路径表
11 notice 公告表

广告表(ad)主要储存系统当中的广告信息。例如广告标题,广告内容,发布广告人id等,本表将广告id设为主键,使每条记录具有唯一性。具体字段如表3.2所示。
表3.2 广告表
列名 数据类型 约束条件 其他说明
Id int KEY 主键
name varchar(45) NOT NULL 广告名称
content varchar(200) NOT NULL 广告内容
memberId int NOT NULL 用户id
addtime datetime NOT NULL 产生时间
广告权限表(adcontrol)主要储存用户申请发布广告的权限的信息,例如用户id申请状态等,本表将广告权限id设为主键,使每条记录具有唯一性。具体字段如表3.3所示。
表3.3 广告权限表
列名 数据类型 约束条件 其他说明
id int KEY 主键
memberId int NOT NULL 用户id
state varchar(200) NOT NULL 申请状态
addtime datetime NOT NULL 产生时间
广告审核表(adinput)主要储存广告发布的审核信息,用户发布广告需要在系统内经过管理员的审核才能使公告发布出来,例如审核状态,广告id,添加时间等。本表将广告审核id设为主键,使每条记录具有唯一性。具体字段如表3.4所示。
表3.4 广告审核表
列名 数据类型 约束条件 其他说明
id int KEY 主键
adId int NOT NULL 广告id
state varchar(200) NOT NULL 审核状态
addtime datetime NOT NULL 添加时间
admin int 审核人员
管理员表(admin)主要储存系统当中管理员的信息,例如账号信息,密码信息等。本表将管理员id设为主键,使每条记录具有唯一性。具体字段如表3.5所示。
表3.5 管理员表
列名 数据类型 约束条件 其他说明
Id int KEY 主键
nick varchar(200) NOT NULL 账号
password varchar(200) NOT NULL 密码
addtime datetime NOT NULL 添加时间
快递公司表(company)主要储存快递公司的信息,例如快递公司名称,快递公司编号等。本表将快递公司id设为主键,使每条记录具有唯一性。具体字段如表3.6所示。
表3.6 快递公司表
列名 数据类型 约束条件 其他说明
Id int KEY 主键
name varchar(45) NOT NULL 名称
code varchar(45) NOT NULL 编号
addtime datetime NOT NULL 添加时间
快递员快递表(couriserexpresses)主要储存快递员与快递的关联关系,例如快递员id,快递id等。本表以快递员快递id设为主键,使每条记录具有唯一性。具体字段如表3.7所示。
表3.7 快递员快递表
列名 数据类型 约束条件 其他说明
id int KEY 主键
couriersId int NOT NULL 快递员id
expressesId int NOT NULL 快递id
快递员登陆日志表(couriserloginlog)主要储存系统中快递员的登陆日志,例如快递员id登陆时间等。本表以快递员登陆日志id设为主键,使每条记录具有唯一性。具体字段如表3.8所示。
表3.8 快递员登陆日志表
列名 数据类型 约束条件 其他说明
id int KEY 主键
couriserId int NOT NULL 快递员id
addtime datetime NOT NULL 添加时间
快递员申请表(couriserlog)主要储存申请快递员信息,用户在申请成为快递员后,系统会在这张表内存一条记录,管理员审核通过后用户才能成为快递员,例如用户id,申请状态等。本表以快递员申请id设为主键,使每条记录具有唯一性。具体字段如表3.9所示。
表3.9 快递员申请表
列名 数据类型 约束条件 其他说明
id int KEY 主键
memberId int NOT NULL 用户id
state varchar(45) NOT NULL 申请状态
addtime datetime NOT NULL 申请时间

快递表(express)主要储存快递信息,例如快递地址,快递电话,快递公司,快递编号等,本表以快递id设为主键,使每条记录具有唯一性。具体字段如表3.10所示。
表3.10 快递表
列名 数据类型 约束条件 其他说明
Id Int KEY 主键
number varchar(45) NOT NULL 编号
status varchar(200) NOT NULL 状态
address varchar(200) NOT NULL 地址
addtime datetime NOT NULL 添加时间

快递配送路径表(expressespathlogs)主要储存快递路径关联信息,将系统当中的每一个快递和对应的路径信息关联起来,例如快递id,路径id,添加时间等,本表以快递配送路径id设为主键,使每条记录具有唯一性。具体字段如表3.11所示。
表3.11 快递配送路径表
列名 数据类型 约束条件 其他说明
Id int KEY 主键
pressesId int NOT NULL 快递id
pathlogsId int NOT NULL 路径id
addtime datetime NOT NULL 添加时间
用户登陆日志表(login_log)主要储存系统当中的用户的登陆日志,例如用户id,登陆时间等,该表以自增长字段id作为主键,使每条记录具有唯一性。具体字段如表3.12所示。
表3.12 用户登陆日志表
列名 数据类型 约束条件 其他说明
Id int KEY 主键
member_id int NOT NULL 用户id
addtime datetime NOT NULL 添加时间

3.3 本章小节
本章主要介绍了快递配送规划系统的系统设计,介绍了数据库的设计以及主要功能设计。通过本章介绍了快递配送规划系统项目的整体架构,使用功能结构图更加清楚明了的展示出了项目的功能需求,以及系统处理方式,详细介绍了数据表结构。

4 系统实现

4.1 开发环境
本系统使用Spring Boot框架进行开发,使用分别使用bootstrap技术和vue框架完成管理后台和用户的前端框架的搭建,使用Java语言进行编写,使用MySQL数据库来存储数据。
4.2 开发规范
本系统是根据Java的命名标准来命名的,名字、类型名、界面名、包括方法名称等在内的名字由小写组成[25]。可以看到包名的内容。在分类或界面,方法名以小写开始。标准的命名和注释。可以提高编码的可读性,开发人员可以找到相应的方法。
4.3 数据库实现
根据实体关系,设计出20张表,如图4.1所示。
在这里插入图片描述

图4.1系统数据库界面
4.4 Spring Boot项目搭建
本系统使用Maven搭建Spring Boot项目工程,Maven中配置了多种jar包,其中启动文件Start.java置于com.app下,Controller、Dao、Service等各层接口置于com.app.*下, application.properties中配置各类基本信息,如图4.2所示。
在这里插入图片描述

图4.2项目工程图
4.5 功能实现
配送快递的规划功能,快递员点击绘制,系统会将所有的点连接起来,采用克鲁斯卡尔算法为基础,将所有的送货地址设置为一个节点,将这些节点全部连接起来,再用算法绘制出最短路径,界面如图4.3所示。
在这里插入图片描述

图4.3配送路径展示图
本系统的配送快递规划功能的部分代码如下:
public class Jiuming {
private List nodes1 = new ArrayList();
private List nodes2 = new ArrayList();
public LNode vertex(LNode node) //初始化节点数据
{
node.setColor(‘w’);
node.setD(0);
node.setNext(null);
node.setPre(node);
return node;
}
public void insList(LNode node , int i ,int j,int k)//添加路径到跟节点
{
LNode p = new LNode();
LNode data = new LNode();
data.setNext(null);
data.setData(i);
data.setD(j);
data.setDatapre(k);
p = node;
while(p.getNext() != null)
{
p = p.getNext();
}
data.setNext(p.getNext());
p.setNext(data);
}

快递员选择快递功能,快递员进入主页,进入快递选择界面,可以进行快递选择,界面如图4.4所示。
在这里插入图片描述

图4.4快递员选择快递功能
本系统的快递员选择快递功能的部分代码如下:

insert into couriserexpresses
(couriersId,
expressesId
) values (
#{memberId},
#{id} )


update express set status = ‘已被选’ where id = #{id}

配送路径绘制功能,根据快递员选择的快递,系统识别快递的地址,将地址显示到地图上并设置锚地,并显示各个地点之间的路径,界面如图4.5所示。
在这里插入图片描述

图4.5路径绘制功能
本系统的配送路径绘制功能的部分代码如下:
int save = Integer.parseInt(map.get(“save”).toString());
int bian = Integer.parseInt(map.get(“bian”).toString());
JSONArray starts = JSONArray.fromObject(map.get(“starts”));
JSONArray ends = JSONArray.fromObject(map.get(“ends”));
JSONArray longer = JSONArray.fromObject(map.get(“longer”));
JSONArray arrayObj = JSONArray.fromObject(map.get(“arrayObj”));
JSONArray arrayObj1 = JSONArray.fromObject(map.get(“arrayObj1”));
redisUtil.set(“arrayObj”,map.get(“arrayObj”));
redisUtil.set(“arrayObj1”,map.get(“arrayObj1”));
Jiuming lk = new Jiuming();
List old = new ArrayList();
old = lk.Krus(save, bian, starts, ends, longer);
redisUtil.set(“old”,old);
4.6 本章小结
本章介绍快递配送规划系统实现系统部分,介绍项目的核心功能,并且进行截图,介绍了项目的开发环境,以及项目在开发时用到的语言数据库。并且详细介绍了系统的核心功能。

5 系统测试

系统测试是在项目的开发过程中属于一个重要的阶段。对软件进行实地化的场景化测试,目的是能够及时发现软件中的漏洞,使得系统更加完善。在整个基于Spring Boot的快递配送规划系统开发的过程中,会遇到很多问题,在开发每一个模块的时候都会遇到不同的问题,有制度的测试可以规避以后错误的发生,为了减少错误的存在,优化系统功能,本章进行必要的测试。
5.1 测试计划
为了保证基于Spring Boot的快递配送规划系统的用户体验和使用质量,尽量找出该系统存在的错误并及时加以改正,可以保证系统能尽快的投入到实际应用当中。在编写项目的过程当中,按照标准严谨的测试方法,进行测试用例,针对项目各个模块都进行测试。
5.2 用例测试
每一个项目的完成测试都是必不可少的环节,测试是为了提高软件的开发质量,同时也是为了提高项目的稳定性、实用性,给用户带来更好的用户体验,就要在生产环节将项目的漏洞修复和完善好。本系统也不免不了会有各种各样的漏洞,故也需要进行测试[18],本用例测试基于黑盒测试,着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试,本系统的主要模块分为:用户模块、快递模块、配送模块。本系统针对各模块功能中的主要操作进行了用例测试。如图表5.1所示。
表5.1系统用例测试结果表
用例编号 用例分类 用例目的 预期结果 测试结果
Case1 用户模块 个人信息显示 正确显示 结果相同
Case2 用户模块 个人信息修改 正确显示 结果相同
Case3 用户模块 登陆注册 正确显示 结果相同
Case4 快递模块 用户查看快递 正确显示 结果相同
Case5 快递模块 快递员录入快递 正确显示 结果相同
Case6 快递模块 快递员选择快递 正确显示 结果相同
Case7 配送模块 快递员配送快递 正确显示 结果相同
Case8 配送模块 路径绘制 正确显示 结果相同
Case9 配送模块 路径规划 正确显示 结果相同
Case10 配送模块 配送快递 正确显示 结果相同
5.3 压力测试
在这里插入图片描述

图6.1测试信息汇总图
对10个接口每个测试100次,测试完成后,共发送1000次HTTP请求,平均响应时间35,最快响应速度26,最慢反应速度117,异常发生率0%,数据吞吐量28.2sec。
5.4 本章小结
本章主要对快递配送规划系统项目进行测试操作,制定测试计划,完成系统功能的测试,并且对快递配送规划系统进行了压力测试,最后得到项目的测试结果,以保证整个系统的更稳定的运行。

结 论

如今已经是信息化时代,人们对便捷的生活需要越来越高。快递公司的快递员配送工作是物流配送的重要组成部分,其准确并且快速的执行对于我国物流发展有重要的意义。而现在物流配送慢和人员的流失问题占据了整个快递行业重中之重!
本项目不仅为了快递配送的最短路径做出了重要规划,用最合理的方法来分配时间,从而达到了既快速又省时效果!还对人员的分配问题提供了良好的解决办法,让更多的人可以利用空闲时间就能了解到快递配送这个行业从而获取相对合理的利益!
为此,本文针对快递行业信息化的迫切需求,设计并实现了基于Spring Boot快递配送规划系统。本文首先分析了基于Spring Boot快递配送规划系统的开发背景及意义,然后分析了构建基于Spring Boot快递配送规划系统所需要解决的一些问题,最后对基于Spring Boot快递配送规划系统的设计及实现方法进行了详细的说明和探讨。本文所开发的基于Spring Boot快递配送规划系统已经具备基本的功能,可以初步满足快递公司对于快递信息化的业务需求。
本系统在开发的过程中考虑了系统的再次开发,以及随时可变的需求等要求,本系统的代码采用单例模式编写,具有可伸缩性,安全性高等特点,系统的后台框架Spring Boot框架保证了系统具有效率高、耦合性低的特点[20]。本项目在实际的应用过程中,实际的效果说明了本系统可以适应产品的需求。

致 谢

经过了4个月左右,基于Spring Boot快递配送规划系统实现了。独自完成这样的系统遇到了很多困难。大部分问题是基本信息不足,我的大学生活已经快要结束了,在这四年的学习生活使我收益匪浅。
从选题到选择应用技术,就不在学习新的知识,不局限于学校所学习的知识。给自己大学生活添加浓墨重彩的一笔。
首先,我要深深感谢我的导师李朋老师和王凤伟老师。在整个毕业设计制作过程中给我的帮助和鼓励。每一次遇到困惑老师们都会第一时间站出来帮我解答。在他们的激励下我才能不断的克服一个又一个的困难,一步步接近完成毕设的目标。也是思路凌乱时他们一次次的梳理,使我在创作过程中不断创新。两位老师的指导严谨,小到论文的标点符号,大到论文结构的错误都会进行纠正,在一遍的修改过程中,我的论文质量也越来越高。
学习就是就是一个不断进步的过程,经过不断的学习和老师的悉心指导,我终于完成了我的毕业设计项目的制作。从选题开始,每一步都在尝试新的挑战,尝试接触新的知识,在大学四年的学习生活中,本项目是我所做过的使用的技术最多的。从学习项目前后端分离,到学习调用用百度地图,都是在不断的解锁新的知识点。在不断的进步中感受着知识带来的喜悦。

参考文献

[1]宁方美,贺雪梅,牟晋娟.SpringBoot集成Redis缓存技术在企业一卡通系统中的应用[J].电子技术与软件工程,2019(24):133-134
[2]何军,陈倩怡.Vue+Springboot+Mybatis开发消费管理系统[J].电脑编程技巧与维护,2019(02):87-88+102
[3]颜治平.基于SpringBoot和Vue框架的教代会提案系统的设计与实现[J].科技创新与应用,2020(03):91-93+95
[4]吕英华.渐进式JavaScript框架Vue.js的全家桶应用[J].电子技术与软件工程,2019(22):39-40
[5]焦鹏珲. 基于SpringBoot和Vue框架的电子招投标系统的设计与实现[D].南京大学,2018
[6]闫海玉. 基于Bootstrap技术的培训机构综合业务管理系统的设计与实现[D].山东大学,2019
[7]肖作山.基于Bootstrap的技术服务知识库管理系统[J].一重技术,2019(02):60-65
[8]干凯磊.学院综合事务管理系统设计与实现[J].数据通信,2020(01):18-20+31
[9]李兴泉,刘守贵.B/S架构测震设备信息管理平台的设计与实现[J].华南地震,2018,38(04):48-53
[10]曾冬梅.基于SSM的人事管理系统的设计与实现[J].信息与电脑(理论版),2019,31(17):84-85
[11]潘冀松.基于J2EE的物业管理信息系统的设计与实现[J].电子世界,2019(11):110-129
[12]周启云,许新华,付昱榕,刘文文,刘梦宇.基于Echarts的可视化学情分析系统设计与实现[J].信息技术与信息化,2020(03):116-119
[13]李洋.SSM框架在Web应用开发中的设计与实现[J].计算机技术与发展,2016,26(12):190-194.
[14]佟宇涵,朱欣彤,张文静.基于SVG、Echarts的数据可视化分析[J].湖北农机化,2020(02):164
[15]杨琳,昌明权.基于MySQL的高校党支部信息管理系统数据库设计[J].电脑知识与技术,2020,16(05):276-277+284
[16]马海苓. 基于PHP和MYSQL技术的网络教学平台系统的设计与实现[D].齐鲁工业大学,2016
[17]Yan Zhang.Web System Architecture Design[J].Journal of Communication and Computer,USA,2005,12(7):342-351
[18]花宁宁,韩家忠,田洪根.基于B/S架构的实验室仪器管理系统的设计与实现[J].山东化工,2020,49(06):213-215
[19]肖增敏.动态网络车辆路径问题研究[D].成都.交通大学.2015
[20]REIMANNM, DOERNERK, HARTLRF. D-Ants: Savings Based Ants divide and conquer the vehicle routing problem[J]. Computers and Operations Research.2004,(04): 563-591
[21]臧涛涛.基于模糊层次分析法(FAHP)的军事运输路径优化研究[D].长春.吉林大学, 2017
[22]PARRAOJS, RUBIOGL, DAZABSR.Dijkstraalgorithm based on a reliability model[C]InternationalConference on Information Society. IEEE, 2018,(11):90-99
[23]李相勇.车辆路径问题模型及算法研究[D].上海.上海交通大学.2017
[24]王斌,尚新春,李海峰.解决车辆路径问题的混合模拟退火算法[J].计算机工程与设计. 2009, 30(3): 651-653
[25]ROYSETJO, CARLYLEWM, WOODRK. RoutingMilitary Aircraft With A Constrained Shortest-Path Algorithm[J]. Military Operations Research. 2017, 14(3): 31-52

  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值