小型车队管理系统的设计与实现
摘 要
科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设小型车队管理系统。
本设计主要实现集人性化、高效率、便捷等优点于一身的小型车队管理系统,完成用户管理、车辆管理、路线管理、尿素管理、任务管理、尿素申请等功能模块。系统通过浏览器与服务器进行通信,实现数据的交互与变更。本系统通过科学的管理方式、便捷的服务提高了工作效率,减少了数据存储上的错误和遗漏。小型车队管理系统使用Java语言,采用基于 MVC模式的springboot框架进行开发,使用 MyEclipse 2017 CI 10 编译器编写,数据方面主要采用的是微软的MySQL关系型数据库来作为数据存储媒介,配合前台HTML+CSS 技术完成系统的开发。
关键词:小型车队管理系统,B/S模式,Java编程语言,MySQL
Design and implementation of small fleet management systemAbstract
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 a small fleet management system.
This design mainly realizes a small fleet management system with the advantages of humanization, high efficiency and convenience, and completes the functional modules of user management, vehicle management, route management, urea management, task management, urea 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 small fleet management system uses Java language, adopts the springboot framework based on MVC mode for development, and is written with MyEclipse 2017 CI 10 compiler. In terms of data, it mainly uses Microsoft's MySQL relational database as the data storage medium, and completes the development of the system with the foreground HTML + CSS technology.
Key words: Small fleet management system, B / S mode, Java programming language, MySQL
目 录
一个车队如果拥有一套完整的小型车队管理系统对于提高车队管理工作效率,降低企业运营成本具有重要意义。随着社会经济发展和人们生活水平的不断提升,汽车已成为了越来越多家庭出行必不可少的代步工具。但是由于汽车保有量的逐年增加以及道路状况的日益复杂,使得车辆在行驶过程中出现各种故障或问题,从而影响到行车安全及驾驶体验。因此,如何对小型车队进行高效、合理的科学管理就显得尤为重要。而目前,国内外大多数公司都是采用人工管理模式来完成日常工作。这种方式不仅效率低而且容易出错。这显然无法适应当今社会快速发展的要求。所以迫切需要开发一款智能化程度较高的小型车队管理系统。本系统通过对小型车队管理现状分析后,提出并实现了一种基于Java技术的小型车队智能管理系统。该系统以springboot为软件平台,利用Java模块作为信息采集装置,将采集得到的数据实时传输至计算机终端上。同时,根据小型车队实际情况设计相应的功能模块,使其能够满足不同用户需求。最后,结合相关理论对系统功能进行验证。
-
- 研究现状
随着社会经济的不断发展,交通事业也得到了长足的进步。在这种背景下,我国道路交通行业开始逐渐加大对车辆管理方面的力度。而其中最为重要的就是对汽车驾驶员进行培训,提高其综合素质水平,从而使他们能够更好地驾驶车辆,为人们提供更为安全、便捷的服务。然而目前国内对于这方面还没有一套完整系统的管理模式,这就导致部分地区出现了严重的交通拥堵现象。为了解决这一问题,我们需要建立起一套科学有效的管理机制,来加强对司机们的监管力度。因此,本文主要是通过分析和总结国内外相关领域的研究成果和实践经验,结合我国现阶段城市交通中存在的实际情况,提出了基于C/S模式的小型车队管理系统设计与实现方案。本系统采用B/S结构,使用Java语言开发出一个简单实用的小型车队管理信息系统。该系统以GPS定位技术作为辅助手段,可以实时采集车辆行驶过程中的位置信息,并将这些信息存储到数据库当中;用户可根据自己的需求,选择是否开启或关闭相应功能模块,同时对系统各功能模块进行设置。另外,系统中还包括了管理员登录功能、车况统计功能以及报警查询等功能,这样不仅能方便管理人员随时查看当前所辖区域内所有车辆的运行状况,而且还具有一定的预警作用。最后,通过测试结果证明,本系统达到了预期目标。本系统运行稳定,操作简便,界面友好,功能丰富,易于推广,已成为交通管理部门日常工作不可或缺的一部分,极大地方便了管理者对车队人员的管理,提升了工作效率,减轻了工作量,节约了人力物力。但是由于各种原因,本系统仍有很多不足有待进一步完善,比如:缺少一些必要的模块如地图导航功能,无法很好地显示各个站点之间的距离及路况等等。
-
- 本文的组织结构
六个章节共同组成了本文研究及设计内容,包括:
第一章:绪论。本文章的开头部分,对本题目的研究背景和研究意义等一些做文字性的描述。
第二章:相关技术介绍。主要介绍Java编程技术、springboot框架、B/S模式等。
第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。
第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。
本系统前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
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数据库
科技的进步,给日常带来许多便利:教室的投影器用到了虚拟成像技术,数码相机用到了光电检测技术,比如超市货物进出库的记录需要一个信息仓库。这个信息仓库就是数据库,而这次的敬老院管理系统也需要这项技术的支持。
用MySQL这个软件,是因为它能接受多个使用者访问,而且里面存在Archive等。它会先把数据进行分类,然后分别保存在表里,这样的特别操作就会提高数据管理系统自身的速度,让数据库能被灵活运用。MySQL的代码是公开的,而且允许别人二次编译升级。这个特点能够降低使用者的成本,再搭配合适的软件后形成一个良好的网站系统。虽然它有缺点,但是综合各方面来说,它是使用者的主流运用的对象。
B/S(Browser/Server)比前身架构更为省事的架构。它借助Web server完成数据的传递交流。只需要下载浏览器作为客户端,那么工作就达到“瘦身”效果, 不需要考虑不停装软件的问题。
-
- spring 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。
-
- Vue.js 主要功能
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能驱动复杂的单页应用。
- 系统分析
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以小型车队管理系统具有经济可行性和实用性,可以节约管理成本
小型车队管理系统主要是为了管理和控制电影的管理情况,对用户的和用户管理、车辆管理、路线管理、尿素管理、任务管理、尿素申请等提供了方便的机制。本系统有多类使用者,分别是超级管理员、一般管理员和司机用户。以下是从这两种用户的角度分别介绍本系统所要实现的功能。
司机用户:
注册:首先检查用户名和邮箱是否存在,如果都不存在才能进行注册,并将用户输入的密码进行MD5加密,注册成功后提示注册成功,并将用户保存到数据库中。
登录:使用系统前提是需要登录账号。
管理个人资料信息,修改可修改的信息项。
路线信息查询,查询路线等。
任务查询,同时查看历史已有任务的记录。
尿素申请,同时查看历史已有尿素申请的记录。
管理员:
用户管理:(1)新增用户,用于创建新用户。管理员在页面上选择"新增用户",输入用户所需的后保存。(2)查找用户,可根据条件查找用户。管理员第一次点击"用户列表"时,默认用户列表显示出全部的用户,可以根据用户姓名和出生年月进行模糊搜索,系统将查询到的用户显示到用户列表。如果不加限制、直接点击搜索按钮,则查询出全部的用户。(3)删除用户,用于删除已有用户。在用户列表显示出用户后,选择用户进行删除。在确定删除之后,该条记录将从数据库中删除,并提示删除成功,确认后列表会重新刷新。(4)修改用户,在用户列表显示出用户后,选择用户进行编辑。表单将出现已有用户,用户可以对已有进行确认更改。更改完成后选择确认,列表会重新刷新。
维护司机,审核司机的账号,可以冻结司机的登录权限,或者删除司机账号。
发布路线,并可以销毁某个路线,更新路线数据,模糊搜索路线数据等。
发布司机,并可以销毁某个司机,更新司机数据,模糊搜索司机数据等。
管理任务数据。
查看司机提交的尿素申请数据,管理员有权利维护它。
-
- 非功能需求分析
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
1.司机用户主要使用系统的路线管理、尿素管理、任务管理、尿素申请,下图所示为司机用户的用例图。
图3-1 司机用户用例图
2.管理员主要负责用户管理、车辆管理、路线管理、尿素管理、任务管理、尿素申请,下图所示描述管理员的用例图。
图3-2 管理员用例图
软件系统的架构设计主要是有两部分内容组成,包括硬件构架设计和软件架构设计,一个软件系统的在某一给定点的构架是指这个系统重要构件的组织或结构,这些重要的构件就是通过接口与构件(不断减小的构件与接口所组成)来进行交互的。某个软件或者计算系统的软件架构就是组成该系统的一个或多个结构,他们组成了这个软件的各个部分,形成这些组件的外部可见属性即相互间的联系。
系统架构图如下图所示。
图4-1系统架构图
为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
图4-2系统功能结构图
用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
图4-4用户登录活动图
用户登录后,进入功能页面,可对自己的进行管理,包括个人,用户管理、车辆管理、任务管理、尿素管理、路线管理、尿素申请。用户使用功能活动图如下图所示。
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
图4-6修改密码活动图
小型车队管理系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
图4-7系统E-R图
本系统根据第三范式的思想设计数据库,减少最大程度的冗余,总共建立有多个表,用户表、司机用户表、车辆管理表、路线管理表、任务管理表、尿素申请表、尿素管理表。
表结构如下所示。
vehicle_management表:
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
vehicle_management_id | int | 11 | 是 | 是 | 车辆管理ID |
license_plate_number | varchar | 64 | 否 | 否 | 车牌号 |
model | varchar | 64 | 否 | 否 | 车型 |
vehicle_color | varchar | 64 | 否 | 否 | 车辆颜色 |
vehicle_length | varchar | 64 | 否 | 否 | 车辆长度 |
vehicle_remarks | text | 0 | 否 | 否 | 车辆备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
urea_management表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
urea_management_id | int | 11 | 是 | 是 | 尿素管理ID |
urea_number | varchar | 64 | 否 | 否 | 尿素编号 |
urea_name | varchar | 64 | 否 | 否 | 尿素名称 |
urea_unit | varchar | 64 | 否 | 否 | 尿素单位 |
urea_inventory | int | 11 | 否 | 否 | 尿素库存 |
introduction_to_urea | text | 0 | 否 | 否 | 尿素简介 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
urea_application表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
urea_application_id | int | 11 | 是 | 是 | 尿素申请ID |
urea_number | varchar | 64 | 否 | 否 | 尿素编号 |
urea_name | varchar | 64 | 否 | 否 | 尿素名称 |
urea_unit | varchar | 64 | 否 | 否 | 尿素单位 |
number_of_applications | int | 11 | 否 | 否 | 申请数量 |
applicant | int | 11 | 否 | 否 | 申请人 |
driver_name | varchar | 64 | 否 | 否 | 司机姓名 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
task_management表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
task_management_id | int | 11 | 是 | 是 | 任务管理ID |
route_name | varchar | 64 | 否 | 否 | 路线名称 |
route_length | varchar | 64 | 否 | 否 | 路线长度 |
vehicle_fuel_consumption | varchar | 64 | 否 | 否 | 车辆油耗 |
license_plate_number | varchar | 64 | 否 | 否 | 车牌号 |
driver_name | varchar | 64 | 否 | 否 | 司机姓名 |
driver | int | 11 | 否 | 否 | 司机 |
task_time | date | 0 | 否 | 否 | 任务时间 |
route_timeliness | text | 0 | 否 | 否 | 路线时效 |
task_details | text | 0 | 否 | 否 | 任务详情 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
driver_user表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
driver_user_id | int | 11 | 是 | 是 | 司机用户ID |
driver_name | varchar | 64 | 否 | 否 | 司机姓名 |
driver_job_number | varchar | 64 | 否 | 否 | 司机工号 |
driver_telephone | varchar | 64 | 否 | 否 | 司机电话 |
id_number | varchar | 64 | 否 | 否 | 身份证号 |
examine_state | varchar | 16 | 是 | 否 | 审核状态 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
user_id | int | 11 | 是 | 否 | 用户ID |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
route_management表: | |||||
名称 | 类型 | 长度 | 不是null | 主键 | 注释 |
route_management_id | int | 11 | 是 | 是 | 路线管理ID |
route_name | varchar | 64 | 否 | 否 | 路线名称 |
route_length | varchar | 64 | 否 | 否 | 路线长度 |
vehicle_fuel_consumption | varchar | 64 | 否 | 否 | 车辆油耗 |
route_timeliness | text | 0 | 否 | 否 | 路线时效 |
route_notes | text | 0 | 否 | 否 | 路线备注 |
recommend | int | 11 | 是 | 否 | 智能推荐 |
create_time | datetime | 0 | 是 | 否 | 创建时间 |
update_time | timestamp | 0 | 是 | 否 | 更新时间 |
系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称 | 工具 | 版本 |
操作系统 IDE(Integrated Development Environment) | Windows Pycharm | 7/8/10 2017 |
Python | Python | Python 3.7.7 |
数据库 浏览器 界面工具 | MySQL 谷歌 Photoshop | 5.7 6.0 2016 |
用户在首页点击登录,进入用户登录界面uerLogin.html,输入用户账号和密码,点击登录,用户账号和密码由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
图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, "账号或密码不正确");
}
}
登录用户在首页点击进入用户中心userCenter.html,再点击修改个人按钮进入userChangeInfo.html界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户并将用户以对象的形式层层返回到userChangeInfo.html界面,显示出当前用户的个人。
若用户要对个人进行修改,则通过修改当前之后点击确认,向控制层userAction发送更改后的用户,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户,若成功则反馈注册成功,则返回的userChangeInfo.html界面被更改成功;若失败则显示修改失败。
-
-
- 路线管理模块
-
管理路线过程中,首先使用getmap(id,"xinxi"),通过路线ID得到路线数据,将路线数据赋值给路线,调用CommDAO的insert方法将路线数据插入成绩表中,最后查看个人历史路线记录,可以销毁历史路线数据。
路线管理流程图如下所示。
图5-1路线管理流程图
路线管理界面如图所示。
图5-1路线管理界面
司机用户在yhzhgl查看司机用户信息,先使用sql语句查询出所有司机用户表的数据,然后调用PageManager.getPages(url,4,sql, request ),返回一个ArrayList的对象,在for循环里,使用Java得到每个ArrayList对象的数据,在Java页面中解析ArrayList对象,得到其各个键值对的值。
司机用户管理界面如下图所示。
图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();
}
-
-
- 路线管理模块
-
管理员在后台管理界面点击到所有路线界面dingdan_list.php,向控制层dingdanAction发送请求,搜索当前所有路线信息,dingdanAction向路线数据访问层调用搜索全部路线的请求,向数据库的路线表搜索当前所有路线并将路线信息以对象的形式层层返回到dingdan_list.php界面,显示出当前所有路线信息。同时可以删除路线。
路线管理界面如下图所示。
图5-1路线管理界面
路线管理关键代码如下所示。
@RequestMapping(value = {"/count_group", "/count"})
public Map<String, Object> count(HttpServletRequest request) {
Query count = service.count(service.readQuery(request), service.readConfig(request));
return success(count.getResultList());
}
-
-
- 任务管理模块
-
管理员在后台管理界面点击到所有任务界面dianyingxinxi_list.html,向控制层dianyingxinxiAction发送请求,搜索当前所有任务,dianyingxinxiAction向dianyingxinxiDAOImp调用搜索全部任务的请求,向数据库的任务表搜索当前所有任务并将任务以对象的形式层层返回到dianyingxinxi_list.html界面,显示出当前所有任务。若要对任务进行修改和删除,则分别进入dianyingxinxi_updt.html或dianyingxinxi_delete.html,通过dianyingxinxiAction向dianyingxinxiDAOImp调用对应的修改或删除方法,向数据库的电影表做相应的持久层操作。
任务管理界面如下所示。
图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());
}
软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统bug的过程,世界上没有完美无缺、不存在bug的软件,只能将软件的bug降到最低最小,来追求极致。
登录测试是系统最开始就要进行,测试用户能否登录,才能完成后续的功能操作。
登录测试用例表如下所示。
表6-1登录测试
用例编号 | YL001 | 程序版本 | 1.00 |
功能名称 | 使用者登录测试 | 编制人 | 李铁蛋 |
功能描述 | 根据用户的登录情况测试 | ||
用例目的 | 测试用户登录情况是否正确 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
用户名 | 为空 | 请输入用户名 | 请输入用户名 |
密码 | 为空 | 请输入密码 | 请输入密码 |
用户密码组合 | 用户名:klouse 密码 klouses | 用户与密码不匹配 | 用户与密码不匹配 |
用户密码组合 | 用户名 : klouse 密码 klouse | 进入系统 | 正确的用户名和密码 登录系统 |
管理员在发布页面,通过按照预先格式发布,如果因为输入时候缺少相关内容,就不能发布成功,且有相应错误提示
录入发布测试用例表如下所示。
表6-1录入发布测试
用例编号 | YL002 | 程序版本 | 1.00 |
功能名称 | 发布测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者发布或者录入进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者录入发布进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 为空 | 请输入属性1对应的数据 | 请输入属性1对应的数据 |
属性2 | 为空 | 请输入属性2对应的数据 | 请输入属性2对应的数据 |
属性3 | 为空 | 请输入属性3对应的数据 | 请输入属性3对应的数据 |
全部输入 | 数据均填入 | 录入发布成功 | 录入发布成功 |
管理员在更新页面,通过按照预先格式更新,如果因为输入时候缺少相关内容或者更新的数据不符合当前规范的话,就不能更新成功,且有相应错误提示
更新测试用例表如下所示。
表6-1更新测试
用例编号 | YL003 | 程序版本 | 1.00 |
功能名称 | 更新测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者更新进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者更新进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
属性1 | 编号:321 | 编号更新成功 | 编号更新成功 |
属性2 | 名称:名称1 | 名称更新成功 | 名称更新成功 |
属性3 | 内容:内容1234内容 | 内容更新成功 | 内容更新成功 |
全部输入 | 数据均未更改 | 更新成功 | 更新成功 |
管理员在页面,通过点击数据删除按钮来删除该条数据,如果该数据和其他数据有关联,则提示是否确定删除。
删除测试用例表如下所示。
表6-1删除测试
用例编号 | YL004 | 程序版本 | 1.00 |
功能名称 | 删除测试 | 编制人 | 李铁蛋 |
功能描述 | 对使用者删除进行测试,判断其功能是否达到预期的要求 | ||
用例目的 | 对系统使用者删除进行原型测试。 | ||
测试项 | 测试数据 | 测试结果 | 预期结果 |
数据1 | 无任何关联的数据1 | 数据删除成功 | 数据删除成功 |
数据2 | 和其他数据有关联的数据2 | 请确认是否删除 | 请确认是否删除 |
在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于MyEclipse 开发的期望。
小型车队管理系统采用spring boot框架,该结构非常完美的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本系统实现了基于MyEclipse的小型车队管理系统,将数据操作维护的过程转化成电脑操作流程,具体实现了对系统人员管理、最新电影、任务管理、场次管理、电影、订单中心管理、取消订单管理的相关数据进行统计分析,让使用者能更清晰的掌握运营情况,帮助使用者进行数据操作维护,简化工作流程,提高工作效率和盈利。
目前完成的小型车队管理系统,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关,故应增设个人中心功能;另外,系统如果能提供更多的功能就会使得系统更加丰富和多样化,比如数据当前分析和未来预测等。第二个是技术上的改进,由于对开发框架不太熟悉,权限管理这部分,本系统采用一个Html页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。
参考文献
[1]王曼维,杨荻,李岩,及松洁.基于SpringBoot框架的智慧医疗问诊系统设计与实现[J].中国医学装备,2022,19(03):133-136.
[2]陈志华.高效率移动定位方法应用于车队管理系统[J].长江信息通信,2022,35(01):65-67.
[3]叶唯,董振环,张华,白晓轩. 企业车队管理系统及其方法[P]. 北京市:CN108171428B,2021-11-30.
[4]王超,张琪立,田广强,李晶晶.基于Springboot框架的学校机房计费管理系统的设计与实现[J].电子技术与软件工程,2020(23):159-160.
[5]. Kobelco Partners with Iridium to Enable Truly Global Remote Asset Tracking for Fleet Management Systems[J]. M2 Presswire,2020.
[6]. Bendix Commercial Vehicle Systems LLC; Patent Issued for Vehicular Fleet Management System And Methods Of Monitoring And Improving Driver Performance In A Fleet Of Vehicles (USPTO 10,783,790)[J]. Journal of Engineering,2020.
[7]邵健伟,梁忠民,王军,胡义明,李彬权.基于SpringBoot框架的中长期水文预报系统设计与开发[J].水电能源科学,2020,38(04):6-9+5.
[8]熊永平.基于SpringBoot框架应用开发技术的分析与研究[J].电脑知识与技术,2019,15(36):76-77.DOI:10.14004/j.cnki.ckt.2019.4290.
[9]刘波, 怀柔园 增值服务产品暨车队管理系统发布. 翟立新 主编,中关村年鉴,北京出版集团公司北京出版社,2018,183-184,年鉴.
[10].林德智联车队管理系统Smartlink:一切细节尽在掌控之中[J].现代制造,2019(11):14.
[11]陈黎峰,王皓.防爆叉车车队管理系统技术及研究[J].化工管理,2018(35):227.
[12]张鲁明,冯幸毅,杨茂国.应用物联网技术的叉车车队管理系统[J].物流技术与应用,2018,23(09):151-153.
[13].实时车队管理系统[J].今日制造与升级,2018(05):62-63.
[14]吕宇琛.SpringBoot框架在web应用开发中的探讨[J].科技创新导报,2018,15(08):168+173.DOI:10.16660/j.cnki.1674-098X.2018.08.168.
[15].G7发布智能化车队管理系统[J].物流技术与应用,2017,22(10):179.
[16]陶丹玲. 中国人寿财险台州中车队理赔 管理系统的研究与分析[D].云南大学,2015.
[17]姜严. 车队管理系统中驾驶行为实时监控模块的设计与实现[D].北京交通大学,2016.
致谢
在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。
我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。
免费领取本源代码,请关注+私信