科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作规则和开发步骤,采用SSM技术建设公交车辆管理系统。
公交车辆管理系统主要功能模块包括首页、网站管理(轮播图、公告栏)、人员管理(管理员、公交企业)、内容管理(新闻列表、新闻分类)、模块管理(企业简介、公交管理、运行监测、运力报告、客流监测、行车监控、事故报告、安全隐患、黑名单、交易数据、刷卡人数)、个人管理(个人信息、修改密码)等管理,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用SSM框架、Java技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、意义,为研究工作的合理性打下了基础。针对公交车辆管理系统的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现公交车辆管理系统和部署运行使用它。
关键词:公交车辆管理系统,SSM框架,MySQL数据库
SSM Bus Vehicle Management System
The rapid development of technology has caused tremendous changes in people's daily lives, and the rapid development of electronic information technology has popularized and applied the application level of electronic information technology in various fields. The arrival of the information age has become an unstoppable fashion trend, and the history of human development is entering a new era. In practical applications, the working rules and development steps of the application software are to use SSM technology to build a bus management system.
The main functional modules of the public transportation vehicle management system include homepage, website management (rotation chart, bulletin board), personnel management (administrator, public transportation enterprise), content management (news list, news classification), module management (enterprise introduction, public transportation management, operation monitoring, transportation report, passenger flow monitoring, traffic monitoring, accident report, safety hazards, blacklist, transaction data, and number of cardholders) Personal management (personal information, password modification) and other management methods adopt an object-oriented development model for software development and hardware installation, which can effectively meet the actual needs of use, improve the corresponding software installation and program coding work, adopt MySQL as the main storage unit for backend data, use SSM framework and Java technology for business system coding and development, and achieve all functions of this system. This report first analyzes the background and significance of the research, laying the foundation for the rationality of the research work. Analyze the various requirements and technical issues of the public transportation vehicle management system, prove the necessity and feasibility of the system, and then provide a basic introduction to the technical software and design ideas required for designing the system. Finally, implement the public transportation vehicle management system and deploy it for operation.
Key words:Public transportation vehicle management system; SSM framework; MySQL database
目录
公交车辆管理系统是对所涉及到的人、财、物等资源的管理和调配,随着交通运输业的飞速发展为人们的生活带来了极大的便利,与此同时,各种交通运输工具特别是公交数量的剧增也给社会各方面带来了日趋严重的巨大压力。对于各事业或企业单位内部的车辆管理,传统手工操作手段由于工作量大、强度高,而导致的效率低下、出错率高已逐渐不能满足目前车辆管理的需求。依据项目需求特点,围绕提高车辆使用和管理工作,结合车辆自身的特点,完成对通行运力报告的管理,对车辆使用调度、车辆信息和相关人员的信息管理等信息统一管理,进一步提高车辆管理、使用效率和安全保障,做到车辆状态有案可查、有据可依,实现车辆的科学化、自动化管理。
在智能化的管理当中,企业的车辆管理成为了急需解决的问题之一。经济高速发展时代的到来给企业的发展带来了机遇,但同时越来越多的工作量需要使用更多的车辆来方便工作,这样就给企业的车辆管理带来了巨大的压力,企业必须合理安排好下属各个部门的车辆使用情况,提供即时的车辆信息,只有做到这一点,才能使企业更好的运转起来,最大化的提高企业的整体工作效率。
1、时间经济性。优化逻辑设计与物理设计,使系统运行效率高,反映速度快。
2、可靠性。能连续准确的处理业务,有较强的容错能力。
3、可理解性。用户容易理解和使用该系统。
4、可维护性和适应性。系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。
6、安全保密性。保证系统的物理安全、数据存储和存取的安全与保密、数据传输.的安全与保密,做好使用人员的授权管理。
六个章节共同组成了本文研究及设计内容,包括:
第一章:绪论。本文章的开头部分,对本题目的研究背景与意义和研究意义等一些做文字性的描述。
第二章:相关技术介绍。主要介绍ssm框架、Java嵌入式脚本语言、B/S模式等。
第三章:系统分析。包括系统总体需求描述、功能性角度分析系统需求、非功能性等各个方面分析系统是否可以实现。
第四章:系统设计。本文章的重要部分,提供了系统架构的详细设计和一些主要功能模块的设计说明。
第五章:系统实现。将本系统分为前提的开发工具介绍和后期的功能代码实现。
第六章:系统测试。系统完成后,根据各个模块的测试用例才对各个模块进行功能测试。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的ssm框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型,项目前端通过栅格布局实现响应式,可适应PC端、平板端、手机端等不同屏幕大小尺寸的完美布局展示。
后端部分:采用ssm作为开发框架,同时集成MyBatis、Redis等相关技术。
B/S架构采取浏览器请求,服务器响应的工作模式。
用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;
而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;
从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。
在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。
![](https://img-blog.csdnimg.cn/direct/6bea933392b24007bf7bee6755dd017c.png)
SSM即SpringMVVM+Spring+MySQL,这三个框架有各自最独有的优势,那么将它们组合在一起能够碰撞出很强的火花。设计者在不需消耗大量功夫,能做出Web应用程序,而且这个程序还具有层次清晰、升级更新操作不影响正常使用的、允许多次使用的特点。这个复合框架形成一个有着结构完整、功能强大和结构良好的体系:SpringMVVM使各板块分离,Spring使开发更灵活方便,让开发者直接对对象进行操纵,各层次分工明细,并实现各个层次间的解耦,让代码更加的灵活精简。这个框架使程序员能够规避在开发时期避免个别错误导致整体被破坏,也能在后期应对客户对产品提出的新需求。
MySQL是一个开放的、快速的、多线程的SQL关系型数据库服务器。由于其体积小、免费、运行速度快以及可以通过相关免费的软件来对MySql数据库中的相关数据结构信息等等优点。受广大中等、小型企业所喜爱并占据了很大地位。本系统在数据库方面选用MySQL,并通过Nacivat来进行MySql数据库的管理。在Mysql的安装过程中,最需要注意的就是数据库的编码问题,所以在安装数据库时需要设置数据库的编码为Utf-8,与前台页面和服务器的编码相一致。
JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。
1.8.1是一种解释性脚本语言(代码不进行预编译)。
1.8.2主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。
1.8.3可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。
1.8.4跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。
1.8.5 JavaScript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。JavaScript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。
开发软件有没有触犯法律,这涉及到软件或者系统能不能发布的问题。如果触犯了法律,就必将会受到法律的制裁。常见法律问题就是软件抄袭问题,若是抄袭别人软件,将会受到严厉惩罚。
软件产业经过多年的发展,现在已经达到了很大的规模,从事软件开发的专业人员不计其数,软件产业的重要性已经上升到了影响和推动国民经济发展的核心地位。本系统基于的架构,目前技术已经非常的成熟,是不存在技术上面难以实现的麻烦。
开发软件所需的时间、人力和物力成本,开发完成后的收益如何,从投资回报的角度软件所需功能在现有经济条件能不能实现等进行深入的考虑,都符合实际的要求。所以公交公交车辆管理系统具有经济可行性和实用性,可以节约管理成本
公交车辆管理系统主要是为了更加地完善车库车辆的管理情况,对首页、网站管理(轮播图、公告栏)、人员管理(管理员、公交企业)、内容管理(新闻列表、新闻分类)、模块管理(企业简介、公交管理、运行监测、运力报告、客流监测、行车监控、事故报告、安全隐患、黑名单、交易数据、刷卡人数)、个人管理(个人信息、修改密码)等提供了方便的机制。本系统有多类使用者,分别是管理员和公交企业。以下是从这两种用户的角度分别介绍本系统所要实现的功能。
公交企业模块:
账号登录认证。
管理个人资料信息,修改可修改的信息项。
公交管理查询。
事故报告查询,同时查看历史已有事故报告记录。
安全隐患查询,同时查看历史已有安全隐患记录。
黑名单查询,同时查看历史已有黑名单记录。
运力报告查询,同时查看历史已有运力报告记录。
交易数据查询,同时查看历史已有交易数据记录。
刷卡人数查询,同时查看历史已有刷卡人数记录。
管理员:
人员管理:对用户进行管理,用户的注册,包括用户昵称、用户名、用户信息(用户姓名、用户性别、年龄等)用户的账号信息:
公交信息管理:对公交信息进行维护,添加、删除、修改信息。
运行监测管理:对运行监测信息进行维护,添加、删除、修改信息。
安全隐患管理:对安全隐患信息进行维护,添加、删除、修改信息。
交易数据管理:对交易数据信息进行维护,添加、删除、修改信息。
刷卡人数管理:对刷卡人数信息进行维护,添加、删除、修改信息。
客流监测管理:对客流监测信息进行维护,添加、删除、修改信息。
行车监控管理:对行车监控信息进行维护,添加、删除、修改信息。
事故报告管理:对事故报告信息进行维护,添加、删除、修改信息。
系统非功能需求有非常多,比如性能需求、可承载最大用户数、稳定性、易用性需求等。本系统分析时考虑到易用性需求,因为系统是给人使用的,所以必须充分从用户的角度出发,考虑用户体验,使系统易理解易上手易操作。
1.公交企业主要使用系统的公交车辆管理系统,下图所示为公交企业的用例图。
![](https://img-blog.csdnimg.cn/direct/2671d76bc60a4a969d9e89e0d53bf083.png)
图3-1 公交企业用例图
2.管理员主要负责系统用户、公交信息、运力报告、安全隐患、费用报销、公告栏、意见反馈,下图所示描述管理员的用例图。
![](https://img-blog.csdnimg.cn/direct/da93b653ca0f48f1aac7f64f7fcde7b3.png)
图3-2 管理员用例图
系统业务流程图如下所示。
![](https://img-blog.csdnimg.cn/direct/c1ae2217725a40fea5e88f5d4a7244b0.png)
图3-3 系统业务流程图
业务流程图(TFD)通过一些特定的符号描述业务的处理过程,它重点强调业务过程中每一项处理活动和具体业务部门的关系,选择部分模块进行具体描述。重点对本系统整体业务中最为主要的快捷停车及运力报告进行描述,用户进入公交车辆管理系统后进行各种模块信息的浏览,选择想要首页、网站管理(轮播图、公告栏)、人员管理(管理员、公交企业)、内容管理(新闻列表、新闻分类)、模块管理(企业简介、公交管理、运行监测、运力报告、客流监测、行车监控、事故报告、安全隐患、黑名单、交易数据、刷卡人数)、个人管理(个人信息、修改密码),另外,管理人员进入后端管理,以执行该运力报告控制模块的相关管理方法,并在解决后向客户提供反馈机制。
如下为系统的顶层数据流图,外部实体有用户和管理员,分别对系统输入数据,从而得到要输出的数据。
![](https://img-blog.csdnimg.cn/direct/c8e2cf59c5c84b81b73bf8146d0f1d92.png)
图3-4系统顶层数据流图
如下图所示为系统底层数据流图。
![](https://img-blog.csdnimg.cn/direct/c2f950184da94ea892cd8f043fd29e92.png)
公交车辆管理系统底层数据流图主要描述系统底层模块的数据流、数据载体、数据处理、外部实体的具体交互。本系统就是管理员和公交企业在系首页、模块管理(企业简介、公交管理、运行监测、运力报告、客流监测、行车监控、事故报告、安全隐患、黑名单、交易数据、刷卡人数)、个人管理(个人信息、修改密码)等模块上的数据交互。
本系统架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
![](https://img-blog.csdnimg.cn/direct/fe4e4dd711854a629e280b8affafb7e3.png)
图4-1系统架构图
为了将系统从“做什么”落实到“怎么做”,基于系统设计原则,对系统功能进行更适合编码实现的功能划分。根据上图的系统架构设计,整理出规范的系统功能结构图,为系统的实现编码做好准备。
如下图所示为系统功能结构图。
![](https://img-blog.csdnimg.cn/direct/e6e0e758c3c348f791f7c1f57b3ebf0b.png)
图4-2系统功能结构图
用户管理针对所有用户和管理员。未注册用户点击注册,进入注册页面填写新用户信息,得到自定义生成账号后,注册完成。未注册用户注册的活动图如下图所示。
![](https://img-blog.csdnimg.cn/direct/e411684f74484024a24a6da3285ed61f.png)
图4-3未注册用户注册活动图
用户可进行登录使用更多功能,首先进入用户登录界面,输入用户账号和密码,后台对账号和密码信息进行核对验证,验证成功则页面直接显示登录用户昵称代表登录成功,否则返回用户登录界面。用户登录活动图如下图。
![](https://img-blog.csdnimg.cn/direct/df13048def1b4fed9d93e1489403bb55.png)
图4-4用户登录活动图
用户登录后,进入功能页面,可对自己的信息进行管理,包括企业简介、公交管理、运行监测、运力报告、客流监测、行车监控、事故报告、安全隐患、黑名单、交易数据、刷卡人数。用户使用功能活动图如下图所示。
![](https://img-blog.csdnimg.cn/direct/2016181f49754849990c9b26296c516d.png)
图4-5用户使用功能活动图
用户功能界面可对自己的密码进行修改。进入修改密码界面后核对当前密码,核对成功后填写新密码。修改密码活动图如下图所示。
![](https://img-blog.csdnimg.cn/direct/57b31ca8d8204745a5b16d83f4d4d2bf.png)
图4-6修改密码活动图
公交车辆管理系统采用的数据库是MySQL,该部分将根据系统需求和设计,设计合理的数据库。本系统考虑到之后系统的扩展集群,数据库将不使用外键。此外,不用外键时数据管理也较为简单,操作更加方便,性能更高。
E-R图,更加直观的告诉开发人员系统的各个数据的属性,各个数据之间的联系,各个数据的类型。能通过该模型更直观地了解数据库的设计,并根据对其逐渐改善。
本系统图设计,如下图所示。
![](https://img-blog.csdnimg.cn/direct/67ee00c517364480a503f86af496b6ca.png)
图4-7系统E-R图
在数据库表中我们会看到系统的表名、主键、外键等信息,我们通过数据库表的主键、外键把每个表关联起来,然后在界面中展示,本公交车辆管理系统的主要的数据库表如下:表结构如下所示。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | accident_report_id | int | 10 | 0 | N | Y | 事故报告ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
6 | date_of_travel | date | 10 | 0 | Y | N | 行驶日期 | |
7 | accident_report | varchar | 255 | 0 | Y | N | 事故报告 | |
8 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | blacklist_id | int | 10 | 0 | N | Y | 黑名单ID | |
2 | full_name | varchar | 64 | 0 | Y | N | 姓名 | |
3 | id | varchar | 64 | 0 | Y | N | 身份证 | |
4 | reasons_for_black_names | varchar | 64 | 0 | Y | N | 黑名原因 | |
5 | violation_date | date | 10 | 0 | Y | N | 违规日期 | |
6 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | capacity_report_id | int | 10 | 0 | N | Y | 运力报告ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
6 | date_of_travel | date | 10 | 0 | Y | N | 行驶日期 | |
7 | kilometers_traveled | varchar | 64 | 0 | Y | N | 行驶公里 | |
8 | number_of_passengers | varchar | 64 | 0 | Y | N | 运载人数 | |
9 | running_train_number | varchar | 64 | 0 | Y | N | 运行车次 | |
10 | revenue_amount | varchar | 64 | 0 | Y | N | 营收金额 | |
11 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | company_profile_id | int | 10 | 0 | N | Y | 企业简介ID | |
2 | enterprise_name | varchar | 64 | 0 | N | N | 企业名称 | |
3 | legal_representative | varchar | 64 | 0 | Y | N | 法人代表 | |
4 | registered_capital | varchar | 64 | 0 | Y | N | 注册资金 | |
5 | business_address | varchar | 64 | 0 | Y | N | 企业地址 | |
6 | enterprise_logo | varchar | 255 | 0 | Y | N | 企业LOGO | |
7 | contact_number | varchar | 64 | 0 | Y | N | 联系电话 | |
8 | company_profile | longtext | 2147483647 | 0 | Y | N | 企业简介 | |
9 | enterprise_users | int | 10 | 0 | Y | N | 0 | 企业用户 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hidden_danger_id | int | 10 | 0 | N | Y | 安全隐患ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
6 | notification_date | date | 10 | 0 | Y | N | 通报日期 | |
7 | hidden_danger_photos | varchar | 255 | 0 | Y | N | 隐患照片 | |
8 | reason_for_violation | varchar | 64 | 0 | Y | N | 违规原因 | |
9 | punishment_method | varchar | 64 | 0 | Y | N | 处罚方式 | |
10 | penalty_status | varchar | 64 | 0 | Y | N | 处罚状态 | |
11 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
12 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
13 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表number_of_people_swiping_cards (刷卡人数)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | number_of_people_swiping_cards_id | int | 10 | 0 | N | Y | 刷卡人数ID | |
2 | record_date | date | 10 | 0 | Y | N | 记录日期 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | number_of_people_swiping_cards | varchar | 64 | 0 | Y | N | 刷卡人数 | |
5 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
6 | remarks | varchar | 64 | 0 | Y | N | 备注信息 | |
7 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | operation_monitoring_id | int | 10 | 0 | N | Y | 运行监测ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
6 | date_of_travel | date | 10 | 0 | Y | N | 行驶日期 | |
7 | average_velocity | varchar | 64 | 0 | Y | N | 平均速度 | |
8 | kilometers_traveled | varchar | 64 | 0 | Y | N | 行驶公里 | |
9 | driving_route | text | 65535 | 0 | Y | N | 行驶路线 | |
10 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
11 | running_state | varchar | 64 | 0 | Y | N | 运行状态 | |
12 | monitoring_status | varchar | 64 | 0 | Y | N | 监测状况 | |
13 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表passenger_flow_monitoring (客流监测)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | passenger_flow_monitoring_id | int | 10 | 0 | N | Y | 客流监测ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
6 | date_of_travel | date | 10 | 0 | Y | N | 行驶日期 | |
7 | travel_time | datetime | 19 | 0 | Y | N | 行驶时间 | |
8 | number_of_passengers | varchar | 64 | 0 | Y | N | 运载人数 | |
9 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
10 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表public_transportation_management (公交管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | public_transportation_management_id | int | 10 | 0 | N | Y | 公交管理ID | |
2 | bus_number | varchar | 64 | 0 | N | N | 公交编号 | |
3 | bus_routes | varchar | 64 | 0 | Y | N | 公交路线 | |
4 | bus_license_plate | varchar | 64 | 0 | N | N | 公交车牌 | |
5 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
6 | annual_inspection_date | date | 10 | 0 | Y | N | 年检日期 | |
7 | recent_checks | date | 10 | 0 | Y | N | 最近检查 | |
8 | device_information | text | 65535 | 0 | Y | N | 设备信息 | |
9 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
10 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
11 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
12 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表public_transport_enterprises (公交企业)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | public_transport_enterprises_id | int | 10 | 0 | N | Y | 公交企业ID | |
2 | enterprise_name | varchar | 64 | 0 | Y | N | 企业名称 | |
3 | legal_representative | varchar | 64 | 0 | Y | N | 法人代表 | |
4 | registered_capital | varchar | 64 | 0 | Y | N | 注册资金 | |
5 | unified_code | varchar | 64 | 0 | Y | N | 统一代码 | |
6 | business_license | varchar | 255 | 0 | Y | N | 营业执照 | |
7 | business_address | varchar | 64 | 0 | Y | N | 企业地址 | |
8 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
11 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
12 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | traffic_monitoring_id | int | 10 | 0 | N | Y | 行车监控ID | |
2 | bus_no | varchar | 64 | 0 | Y | N | 公交编号 | |
3 | bus_license_plate | varchar | 64 | 0 | Y | N | 公交车牌 | |
4 | bus_model | varchar | 64 | 0 | Y | N | 公交型号 | |
5 | driver | varchar | 64 | 0 | Y | N | 驾驶人员 | |
6 | date_of_travel | date | 10 | 0 | Y | N | 行驶日期 | |
7 | surveillance_video | varchar | 255 | 0 | Y | N | 监控录像 | |
8 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
9 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | transaction_data_id | int | 10 | 0 | N | Y | 交易数据ID | |
2 | data_date | date | 10 | 0 | Y | N | 数据日期 | |
3 | serial_number | varchar | 64 | 0 | Y | N | 流水单号 | |
4 | settlement_account | varchar | 64 | 0 | Y | N | 结算账号 | |
5 | transaction_amount | varchar | 64 | 0 | Y | N | 交易金额 | |
6 | proof_of_transaction | varchar | 255 | 0 | Y | N | 交易证明 | |
7 | public_transport_enterprises | int | 10 | 0 | Y | N | 0 | 公交企业 |
8 | recommend | int | 10 | 0 | N | N | 0 | 智能推荐 |
9 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
系统中应用的开发工具总结如下表所示。
表5-1开发工具
名称 | 工具 | 版本 |
操作系统 IDE(Integrated Development Environment) | Windows Eclipse | 7/8/10 2017 |
服务器 | Tomcat | 9.10.7 |
JDK(Java Development Kit) | JDK | Java SE 8.0 (1.8.0) |
数据库 浏览器 界面工具 | MySQL 谷歌 Photoshop | 5.7 6.0 2016 |
用户在首页点击登录,进入用户登录界面uerLogin.jsp,输入用户账号和密码,点击登录,用户账号和密码信息由界面传入控制层userAction,调用userLogin(user)方法,通过userDAOImp向数据库用户表搜索该用户账号与密码,将最终结果反馈到前端。若成功则回到首页;用户成功登录,若失败则回到登录界面,并显示登录失败。
用户点击注销,清空浏览器session值,然后返回登录页或者首页。
登录界面如下所示。
![](https://img-blog.csdnimg.cn/direct/037ee6f75b704a4aa43973dedf8f3a2f.png)
图5-2登录界面
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
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;
}
登录用户在首页点击进入用户中心userCenter.jsp,再点击修改个人信息按钮进入userChangeInfo.jsp界面,系统根据session中存储的目前登录的用户的账号,向控制层userAction发送请求,搜索当前用户信息,userAction向userDAOImp调用queryByUserId(user),向数据库的用户表搜索当前用户信息并将用户信息以对象的形式层层返回到userChangeInfo.jsp界面,显示出当前用户的个人信息。
若用户要对个人信息进行修改,则通过修改当前信息之后点击确认,向控制层userAction发送更改后的用户信息,调用changeUser(user)方法,通过userDAOImp向数据库用户表更新用户信息,若成功则反馈注册成功,则返回的userChangeInfo.jsp界面被更改成功;若失败则显示修改失败。
个人信息界面图如下所示。
![](https://img-blog.csdnimg.cn/direct/10c8adb941be42909a330f6777fa4dda.png)
图5-5个人信息界面
根据需求,需要对用户进行添加、删除或修改详情信息。删除或修改用户时,系统根据用户的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询用户状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加用户时,会给出数据填写的页面,该页面根据填写好的用户编号同样会事先发送Ajax请求查询编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
用户管理如下图所示。
![](https://img-blog.csdnimg.cn/direct/ec99f5ac0ef341e0b2e1eed41389234e.png)
图5-7用户管理界面
管理员可以获取系统中所有公交的列表并对其进行编辑。管理员在添加公交时,需要输入公交基本信息,如编号。车牌、型号等,还需要输入公交详情描述,包括对公交功能的描述以及展示图片等。添加公交完成,数据库公交表添加一条信息。管理员可以搜索公交,同时可以对已经添加的公交进行编辑。
公交管理界面如下图所示。
![](https://img-blog.csdnimg.cn/direct/803c890ca9234eba8168abf677ddc31d.png)
图5-8公交管理界面
公交管理关键代码如下所示。
@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);
}
}
根据需求,需要对运力报告进行添加、删除或修改详情信息。删除或修改时,系统根据运力报告的状态判定为可删除状态下,才会给出删除和修改链接,点击删除链接按钮时,请求到达后台,还会先查询车辆状态再次做出判定能否删除。点击修改链接按钮时,会跳转到修改信息的页面,重新填写好数据后,数据提交到后台会对数据库中相应的记录做出修改。
添加运力报告时,会给出数据填写的页面,该页面根据填写好的运力报告同样会事先发送Ajax请求查询车辆编号是否已存在,数据填写好之后提交到后台,会调用相关服务在数据库中插入记录。
运力报告管理如下图所示。
![](https://img-blog.csdnimg.cn/direct/f0c7cc30a8c54e0fb333cbf61b707f97.png)
图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;
}
管理员执行安全隐患管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加安全隐患”,可以通过安全隐患添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到安全隐患查询列表中,管理员可进行编辑以及修改。
安全隐患管理流程图如下所示。
![](https://img-blog.csdnimg.cn/direct/e5f1367cdc8146c28d1b4a9cf69dc3d3.png)
图5-11 安全隐患管理流程图
安全隐患查询界面如下所示。
![](https://img-blog.csdnimg.cn/direct/f1a7bf9232e74e6b88c66d36dfe60aaa.png)
图5-12 安全隐患查询界面
管理员执行公告栏管理,并可以操作相关内容,例如添加,查看,编辑和删除。通过单击“添加公告栏”,可以通过公告栏添加界面添加详细信息。单击查看字段级别链接以查看有关所选字段级别的信息。然后单击“提交”跳转重返到添加页面。添加成功后的信息会载入到公告栏查询列表中,管理员可进行编辑以及修改。
公告栏添加流程图如下所示。
![](https://img-blog.csdnimg.cn/direct/35c9cc4a3f404ccda760c70b39796a9d.png)
图5-1 公告栏添加流程图
公告栏添加如下图所示。
![](https://img-blog.csdnimg.cn/direct/34376e99cf714d53abc679bc9fcedfee.png)
图5-1 公告栏添加界面
软件测试是软件开发完成后必须经过的一道程序,它在软件开发过程中地位十分重要,需要由专业的测试工程师来对软件进行各方面的测试,大到功能模块测试,小到代码的单元测试,这对测试工程师来说需要有足够的耐心和专业的测试方案,软件测试归根结底就是对软件的结构和功能的综合测评,需要做到结构稳定和功能正确,二者兼顾。软件测试也叫寻找系统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 | 请确认是否删除 | 请确认是否删除 |
在经过之前的所有的工作之后,通过对软件的测试方法、测试原则还有典型的测试用例进行全面的、深入的介绍。经过对系统的全面测试,系统目前所具有的所有功能均成功的实现并且通过了测试,整个系统实现了基于 Java 开发的期望。
公交车辆管理系统采用SSM框架开发,该系统非常完美的集优点于一身,成熟、强大、易理解易使用,通过使用这个结构,降低了开发的难度。本系统实现了基于SSM的宠物管理平台,将数据操作维护的过程转化成电脑操作流程,具体实现了对系统用户管理、运力报告数据维护、公交信息数据维护、安全隐患数据维护、费用报销管理数据维护,并提供查询公交信息功能来对公交车辆管理系统的相关数据进行统计分析,让使用者能更清晰的掌握运营情况,帮助使用者进行数据操作维护,简化工作流程,提高工作效率和盈利。
目前完成的公交车辆管理系统,还有许多有待改进的地方。一个是功能上的改进,用户理应可以修改自己的相关信息,故应增设个人中心功能;另外,系统如果能提供更多的功能就会使得系统更加丰富和多样化,比如数据当前分析和未来预测等。第二个是技术上的改进,由于对开发框架不太熟悉,权限管理这部分,本系统采用一个Java页面来规定好导航栏,即跳转的页面,这相对比较不灵活,如果将URL路径记录到数据库并实现增删查改会比较好;另外就是对EasyUI的使用还不够熟练,视觉效果和界面观感有待提升,希望日后能对这个系统有所改进。
参考文献
[1]李者.基于UWB技术的矿用车辆管理系统[J].煤矿安全,2023,54(04):210-215.DOI:10.13347/j.cnki.mkaq.2023.04.028.
[2]周雨卉,王璐瑶,陈绘.基于SSM的社区健身中心适老化设计策略研究[J].包装工程,2023,44(04):141-149.DOI:10.19554/j.cnki.1001-3563.2023.04.017.
[3]柳谦,周亮.基于车城网的智能网联车辆管理系统的设计[J].电脑编程技巧与维护,2023(02):94-96+111.DOI:10.16184/j.cnki.comprg.2023.02.025.
[4]皇甫若桐.基于SSM的环境监测管理系统设计[J].集成电路应用,2023,40(02):340-341.DOI:10.19339/j.issn.1674-2583.2023.02.148.
[5]伍德鹏,李佩学.基于SSM框架的高职院校教学办公用品管理信息系统设计研究[J].轻工科技,2023,39(01):99-101.
[6]Soares Targieli dos Santos,Silva Maisa Mendonça,Santos Simone Machado. A hybrid Grey-DEMATEL approach to identify barriers to the implementation of an end-of-life vehicle management system in Brazil[J]. Journal of Cleaner Production,2023,386.
[7]Zhang Guanhong,Odbal. Retraction Note: Engineering vehicle management system based on the internet of things[J]. Neural Computing and Applications,2022,35(4).
[8]Bird Tess,Jensen Tenna. Corrigendum to "What's in the refrigerator? Using an adapted material culture approach to understand health practices and eating habits in the home" [SSM 292 (2022) 114581].[J]. Social science & medicine (1982),2022.
[9]Hermanto Ruby,Putro Utomo Sarjono,Novani Santi,Kijima Kyoichi. Overcoming the challenge of those new with SSM in surfacing relevant worldviews for action to improve[J]. Journal of the Operational Research Society,2022,73(9).
[10]Zhao ShuMin,Wang Xi,Dong XingXing,Zhang HaiBin,Feng TaiFu. A Study of the Higgs Mass with the Effective Potential and Higgs Decays in the U(1)<sub>X</sub>SSM[J]. Symmetry,2022,14(10).
[11]Zhang Hai-Bin,张 海斌,Liu Chang-Xin,刘 长鑫,Yang Jin-Lei,杨 金磊,Feng Tai-Fu,冯 太傅. Muon anomalous magnetic dipole moment in the SSM[J]. Chinese Physics C,2022,46(9).
[12]Fu Zhengtang,Dong Peiwu,Ju Yanbing,Gan Zhenkun,Zhu Min. An intelligent green vehicle management system for urban food reliably delivery:A case study of Shanghai, China[J]. Energy,2022,257.
[13]吕露露. 共享两轮车车辆管理系统的设计与实现[D].北京交通大学,2022.DOI:10.26944/d.cnki.gbfju.2022.000672.
[14]韩雪娜,李晖.基于RFID技术的食品物流车辆管理系统设计[J].包装与食品机械,2021,39(03):73-77.
[15]于勤操. 基于车牌识别的智能矿区车辆管理系统的设计与实现[D].内蒙古大学,2021.DOI:10.27224/d.cnki.gnmdu.2021.001035.
[16]管中华,戚颖.基于人脸识别和RFID技术的智能车辆管理系统[J].科技资讯,2021,19(09):34-38.DOI:10.16661/j.cnki.1672-3791.2104-5042-1225.
[17]柳杨. 物流车辆管理系统的设计与实现[D].杭州电子科技大学,2021.DOI:10.27075/d.cnki.ghzdc.2021.000731.
[18]史渊源,周辉,于烨,周怡,马国武,吴佳静,马龙.基于Hadoop的车辆管理系统设计与实现[J].湘潭大学学报(自然科学版),2021,43(01):97-106.DOI:10.13715/j.cnki.nsjxu.2021.01.011.
[19]卢玉华,薛斌斌,骆军.车辆管理系统信息安全防护[J].中国科技信息,2020(24):44-45.
[20]邵卫,孔维华,王开放,吴祥.基于ASP.NET MVC框架的企业级车辆管理系统设计与实现[J].测绘与空间地理信息,2020,43(08):87-89.
致谢
在老师的教导和帮助下,本人完成了本篇论文,老师对论文的内容、格式都有非常严格的要求,在我写毕业论文的过程中,他多次给出了建议,并定期检查,对我们严格要求,帮助我们在文档的编写上写到极致和正确,他这种教学和工作态度,让我对他产生无限的敬佩感和尊敬感。写毕业论文的同时,作为应届生,我也忙着找工作中,遇到了很多选择,感到困惑迷茫的时候,老师给了我很多意见,感谢老师的耐心开导,跟她的聊天我明白了许多。
我还要感谢我的父母,一直以来都非常支持和相信我,在精神和经济上给了我很多力量,如今我将毕业走上工作之路,终于能报答父母的养育教导之恩。还有我大学期间所有老师和全体同学,遇到问题时,这些老师同学总是无私地帮助我,真的非常感谢,我也会加油努力成长为一个有用的人。
关注+点赞+收藏+私信博主,免费领取项目源码