摘 要
随着共享经济的发展,网约车作为一种新型出行方式,已经逐渐深入人们的生活。然而,网约车的管理问题也随之而来,如何有效管理和规范网约车运营成为了亟待解决的问题。本文旨在设计并实现一套网约车管理系统,以提高网约车的管理效率和安全性。
首先,本文对网约车管理系统的需求进行了分析,包括车辆信息管理、预约记录管理、投诉记录管理、系统管理、网站公告管理、资源管理等方面。在此基础上,设计了系统的整体架构和功能模块,并采用了系统采用SSM框架搭建,结合MyBatis作为持久层框架,实现了前后端的快速开发和良好的可扩展性。同时进行权限控制,保护系统的安全性。通过系统的实施和应用,有效简化了流程、提供了便捷的服务,优化了用户的体验。同时,通过数据分析和统计功能,为管理者提供了决策支持,优化资源配置和服务安排。
最后,本文对网约车管理系统的应用效果进行了评估和分析,结果表明该系统能够显著提高网约车的管理效率和安全性,为乘客提供更加便捷、舒适的出行体验。同时,该系统也为网约车企业提供了更加全面、精准的管理工具,有助于推动网约车行业的健康发展。
关键词:网约车管理系统;SSM框架
Design and implementation of a uni app based automotive driving management information system
Abstract
With the development of sharing economy, online ride-hailing, as a new way of travel, has gradually penetrated into people's life. However, the management problem of online ride-hailing has also followed, and how to effectively manage and standardize the operation of online ride-hailing has become an urgent problem to be solved. This paper aims to design and implement a set of ride-hailing management system to improve the management efficiency and safety of ride-hailing.
First of all, this paper analyzes the needs of the online ride-hailing management system, including vehicle information management, reservation record management, complaint record management, system management, website announcement management, resource management and other aspects. On this basis, the overall architecture and functional module of the system are designed, and the system is built by SSM framework, combined with MyBatis as the persistent layer framework, to realize the rapid development of the front and rear ends and good scalability. At the same time, permission control to protect the security of the system. Through the implementation and application of the system, it effectively simplifies the process, provides convenient services, and optimizes the user experience. At the same time, through data analysis and statistical functions, we provide decision support for managers, and optimize resource allocation and service arrangement.
Keywords: online car-hailing management system; SSM framework
目录
第1章 引言
1.1研究背景与意义
随着互联网的快速发展和智能手机的普及,网约车服务已经成为人们出行的重要方式之一。网约车服务以其便捷、高效的特点受到了广大用户的青睐。然而,随着网约车市场的迅速扩张,也带来了一系列管理上的问题,如司机素质参差不齐、服务质量不稳定、安全隐患等。因此,设计并实现一套高效、稳定的网约车管理系统对于提高网约车服务质量、保障乘客安全、促进网约车市场健康发展具有重要意义。
首先,网约车管理系统的设计与实现有助于规范网约车市场。通过系统化管理,可以对网约车司机进行严格的审核和培训,确保他们具备相应的驾驶技能和服务素质。同时,系统还可以对车辆进行定期检查和维护,确保车辆的安全性和可靠性。这些措施可以有效减少网约车市场中的不良行为和安全隐患,提高市场的整体服务水平。
其次,网约车管理系统的设计与实现可以提升乘客的出行体验。系统可以通过智能调度算法,快速匹配乘客和司机,减少等待时间。同时,系统还可以提供实时定位和轨迹追踪功能,让乘客随时了解车辆的行驶情况,增加出行的透明度和安全感。此外,系统还可以收集和分析乘客的反馈和评价,为司机提供改进服务质量的依据,进一步提升乘客的满意度。
最后,网约车管理系统的设计与实现对于推动智慧交通建设也具有重要意义。通过将网约车服务与智能交通系统相结合,可以实现更加高效、智能的交通管理和规划。系统可以实时收集和分析交通流量、拥堵情况等数据,为政府决策提供有力支持。同时,系统还可以与其他交通方式进行协同调度,提高整个城市交通系统的运行效率。
综上所述,网约车管理系统的设计与实现研究具有重要的背景和意义。它不仅有助于规范网约车市场、提升乘客出行体验,还能推动智慧交通建设和发展。因此,我们应该积极投入研究和实践,不断完善和优化网约车管理系统,为人们的出行提供更加便捷、安全、高效的服务。
1.2国内外研究现状
随着共享经济的发展,网约车行业在全球范围内迅速崛起,为乘客提供了便捷、高效的出行方式。为了更好地规范网约车市场,提升服务质量,各国纷纷展开网约车管理系统的设计与实现研究。
一、国内研究现状
在国内,网约车管理系统研究与实践得到了广泛关注。政府部门出台了一系列政策,推动网约车行业健康、有序发展。同时,众多学者和企业积极参与网约车管理系统的研究,取得了一系列成果。
在系统设计方面,国内研究团队针对网约车行业的特殊性,提出了多种管理系统架构。这些架构以大数据、云计算等技术为基础,实现了对网约车驾驶员、车辆、订单等信息的全面管理。此外,国内研究团队还关注系统性能优化,通过算法改进和硬件升级,提高系统处理速度和稳定性。
在实现层面,国内网约车管理系统已经广泛应用于实际运营中。这些系统不仅提高了网约车服务质量,还降低了运营成本。同时,国内研究团队还不断探索新的技术手段,如人工智能、物联网等,以进一步提高系统智能化水平。
二、国外研究现状
在国外,网约车管理系统同样受到了广泛关注。许多国家和地区都制定了相应的法规和政策,规范网约车市场。同时,学术界和企业界也投入了大量资源,研究网约车管理系统的设计与实现。
在系统设计方面,国外研究团队注重系统的可扩展性和灵活性。他们采用微服务架构、容器技术等先进技术手段,实现系统的快速部署和升级。此外,国外研究团队还关注系统的安全性,采取多种措施防范黑客攻击和数据泄露。
在实现层面,国外网约车管理系统已经取得了显著成果。这些系统不仅提高了网约车运营效率,还为用户提供了更加便捷、舒适的出行体验。同时,国外研究团队还不断探索新的应用领域,如自动驾驶、绿色出行等,以推动网约车行业的创新发展。
综上所述,国内外在网约车管理系统的设计与实现方面均取得了显著的进展。然而,随着网约车市场的不断发展和变化,仍需要持续研究和改进。未来,我们期待网约车管理系统能够更加智能化、高效化,为乘客提供更加优质的出行服务。
1.3论文组成结构
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出网约车管理系统的设计与实现。
本文共有七章,如下所示。
第一章概述了网约车管理系统的设计与实现的研究背景与意义;精炼地总结了国内外在内的领域研究情况和未来的研究趋势,最后给出了论文的组成结构。
第二章简要概述了本文所用的开发技术和工具。
第三章简要对系统各业务流程进行需求分析、可行性分析。
第四章对网约车管理系统的设计与实现进行设计。
第五章对网约车管理系统的设计与实现进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第六章对网约车管理系统的设计与实现采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第七章总结全文并对未来的研究做出展望。
第2章 相关技术介绍
2.1 SSM框架
当今流行的“SSM组合框架”是Spring + SpringMVC + MyBatis的缩写,受到很多的追捧,“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架,通常更简单的数据源。Spring属于一个轻量级的反转控制框架(IoC),但它也是一个面向表面的容器(AOP)。SpringMVC常常用于控制器的分类工作模式,与模型对象分开,程序对象的作用与自动取款机进行处理。这种解耦治疗使整个系统的个性化变得更加容易。MyBatis是一个良好的可持续性框架,支持普通SQL查询,同时允许对存储过程的高级映射进行数据的优化处理。大型Java Web应用程序的由于开发成本太高,开发后难以维护和开发过程中一些难以解决的问题,而采用“SSM组合框架”,它允许建立业务层次结构,并为这个问题提供良好的解决方案。
2.2 JAVA简介
Java主要采用CORBA技术和安全模型,可以在互联网应用的数据保护。它还提供了对EJB(Enterprise JavaBeans)的全面支持,java servlet API,SSM(java server pages),和XML技术。JAVA语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器上运行。Java是一种计算机编程语言,具有封装、继承和多态性三个主要特性,广泛应用于企业Web应用程序开发和移动应用程序开发。
Java语言和一般编译器以及直译的区别在于,Java首先将源代码转换为字节码,然后将其转换为JVM的可执行文件,JVM可以在各种不同的JVM上运行。因此,实现了它的跨平台特性。虽然这使得Java在早期非常缓慢,但是随着Java的开发,它已经得到了改进。
2.3 Mysql数据库
数据库是系统开发过程中不可或缺的一部分。在WEB应用方面,MySQL AB开发了一个具有很大优势的MySQL关系数据库管理系统。 MySQL可以将数据存储在不同的表中,这非常灵活,并且还可以提高系统在实际应用中的速度。数据库访问最常用于标准SQL语言,MySQL用于SQL语言,因此它具有高度兼容性。数据库的操作是必不可少的,包括对数据库表的增加、删除、修改、查询等功能。现如今,数据库可以分为关系型数据库和非关系型数据库,Mysql属于关系性数据库,Mysql数据库是一款小型的关系型数据库,它以其自身特点:体积小、速度快、成本低等,Mysql数据库是目前最受欢迎的开源数据库。
在WEB应用技术中, Mysql数据库支持不同的操作系统平台,虽然在不同平台下的安装和配置都不相同,但是差别也不是很大,Mysql在Windows平台下两种安装方式,二进制版和免安装版。安装完Mysql数据库之后,需要启动服务进程,相应的客户端就可以连接数据库,客户端可通过命令行或者图形界面工具登录数据库。
第3章 系统分析
3.1可行性分析
本系统将在经济、技术、操作这三个角度上进行可行性分析。
整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。
技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于SSM框架,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。
网约车管理系统的设计与实现的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用SSM(SpringMVC + Spring + MyBatis)技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。
3.2功能需求分析
网约车管理系统的功能主要分为前台用户根据自己的需求进行注册登录,主要有汽车司机用户和注册用户,注册用户可以浏览车辆信息并对选中的车辆信息进行预约、投诉等操作。司机用户可以查询车辆信息并进行接单、查看预约信息、投诉记录等操作。后台系统管理员职责的不同,主要对系统用户(管理员、司机用户、注册用户)、车辆信息管理、预约记录管理、投诉记录管理、系统管理、网站公告管理、资源管理、进行处理。
司机用户用例图如下所示。
![](https://i-blog.csdnimg.cn/direct/fe3aa0e73ad847d6ac8ea51146b5b479.png)
图3-1 汽车司机用户用例图
注册用户用例图如下所示。
![](https://i-blog.csdnimg.cn/direct/f827200ffae444c0b51ba78bdd98cdf7.png)
图3-2 注册用户用例图
管理员用例图如下所示。
![](https://i-blog.csdnimg.cn/direct/42d02cb96af747bdab853b8e24e42314.png)
图3-3 管理员用例图
3.3非功能需求分析
首先主要考虑的是系统功能软件,在具体设计的环节上,是不是能够较好的满足各类用户的基本功能需求,如果不能较好的满足用户需求,那么这个系统的存在是没有价值的。软件系统的非功能性求分析,从7个方面展开,一个是性能分析,针对系统;一个是安全分析,针对系统,一个是完整度分析,针对系统,一个是可维护分析,针对系统,一个是可扩展性分析,针对系统,一个是适应业务的性能分析。面对网约车管理系统信息存在的性能、安全、扩展、完整度等7个方面性能综合比对分析后发现,需要相应的非功能性需求分析。
3.4安全性需求分析
3.4.1系统的安全性
安全性对每一个系统来说都是非常重要的。安全性很好的系统可以保护企业的信息和用户的信息不被窃取。提高系统的安全性不仅是对用户的负责,更是对企业的负责。尤其针对于网约车管理系统信息来说,必须要有很好的安全性来保障整个系统。
系统具有对使用者有权限控制,针对角色的不通限制使用者的权限,以此来确保系统的安全性。
数据库中的数据是从外界输入的,当数据的输入时,由于种种原因,输入的数据会无效,或者是脏数据。因此,怎样保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。
因此,在写入数据库时,要保证数据完整性、正确性和一致性。
3.5数据流程分析
对系统的数据流进行分析,系统的使用者分为三类,司机用户、注册用户、管理员。系统主要对界面信息传送,登录信息的验证,注册信息的接收,用户各种操作的响应做处理。
系统顶层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/direct/456c4a259c12409a886455652b0f2360.png)
图3-4 顶层数据流图
要判断用户是是什么身份,是根据登录的数据来判断后,跳转到对应的功能界面。在系统的内部用户就可以对数据进行操作,数据库中心就可以接收到系统传输的有效数据流来对数据sql语句进行对应操作。
系统底层数据流图如下图所示。
![](https://i-blog.csdnimg.cn/direct/7c950e9f2ee04b1c91f2836d8e7f01e8.png)
图3-3 底层数据流图
系统可以分为前台和后台两部分,每一种操作后系统都返回操作结果。前台和后台的数据连接主要通过数据库,既分别对数据库做不同的操作。
第4章 系统设计
4.1系统架构设计
本网约车管理系统信息的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。
系统架构如下图所示。
![](https://i-blog.csdnimg.cn/direct/81e62f8ff32245859e72f14cfb05bbad.png)
图4-1 系统架构
4.2系统总体设计
网约车管理系统信息总体分为前台用户模块和后台管理员模块。
两个模块表现上是分别独立存在,但是访问的数据库是一样的。每一个模块的功能都是根据先前完成的需求分析,并查阅相关资料后整理制作的。
综上所述,系统功能结构图如下图所示。
![](https://i-blog.csdnimg.cn/direct/59dc0c013bab4290bc860fe91ca90630.png)
图4-2 系统功能结构图
4.3系统功能设计
司机用户:
1. 登录注册:用户可以通过输入用户名和密码进行登录,或者通过注册页面创建新的账户。
2. 首页:展示网约车平台的主要信息和功能入口,如网站公告、联系方式、新闻资讯、车辆信息等。
3. 网站公告浏览:司机用户在前台可以直接查看网站公告,确保自己随时掌握平台的最新动态和重要通知。
4. 新闻资讯互动:在新闻资讯部分,司机用户可以浏览与自己职业相关的新闻资讯,进行收藏、点赞和评论,与同行进行交流和分享。
5. 车辆信息:司机用户可以查看自己车辆的详细信息,包括型号、可载人数等,并通过关键字搜索功能快速定位到特定车辆。同时,用户可以对自己的车辆信息进行增删改查操作,确保信息的准确性。此外,还可以对喜欢的车辆进行收藏、点赞和评论。
6. 个人中心:在个人中心,司机用户可以查看自己的车辆信息,包括详情、评论等。用户还可以根据车辆型号、编号、车牌号码和用车状态进行搜索,方便快捷地管理自己的车辆。
7. 预约记录:司机用户可以在前台查看自己的预约记录,了解自己的工作安排和预约状态,方便进行行程规划。
8. 投诉记录:若遇到任何问题或纠纷,司机用户可以在前台查看自己的投诉记录,了解投诉的处理进度和结果,保障自己的权益。
9. 收藏:为了方便用户快速找到自己感兴趣的内容,前台提供了收藏功能。司机用户可以将自己喜欢的车辆信息、新闻资讯等收藏起来,方便日后查看。
注册用户:
1. 登录注册:用户可以通过输入用户名和密码进行登录,或者通过注册页面创建新的账户。
2. 首页:展示网约车平台的主要信息和功能入口,如网站公告、联系方式、新闻资讯、车辆信息等。
3. 网站公告:注册用户可以在后台查看网站发布的最新公告信息,确保自己了解平台的最新动态、政策更新或重要通知。用户无需进行任何操作,只需阅读并理解公告内容。
4. 新闻资讯:注册用户在后台可以浏览新闻资讯,对感兴趣的内容进行收藏,方便日后查阅。同时,用户还可以对新闻进行评论,分享自己的观点和看法,与其他用户进行互动交流。
5. 车辆信息:注册用户在后台可以详细查看车辆信息,包括车型、可载人数等关键数据。用户可以通过关键字(如车辆型号、车辆编号、车牌号码、用车状态)进行搜索,快速定位到所需车辆。此外,用户还可以收藏喜欢的车辆、点赞评价,甚至预约用车,简化了用车流程。
6. 预约记录:注册用户,可以方便地管理自己的预约记录。可以随时查询、重置或删除预约信息,详细了解每次预约的详情。如果用户对预约服务有任何不满或问题,可以直接进行投诉,并通过关键字如车辆型号、车辆编号、车牌号码或用车状态来快速搜索相关记录。此外,还可以查看预约的当前状态,并等待司机用户的确认和回复。
7. 投诉记录:注册用户还可以轻松管理自己的投诉记录。可以查询、重置或删除历史投诉,并随时查看每个投诉的详细信息。为了帮助用户快速找到特定的投诉,用户可以通过用户姓名、订单编号、车辆编号或审核状态等关键字进行搜索。提交投诉后,用户将等待管理员的审核,并会收到相应的回复。
8. 收藏管理:作为注册用户,您可以在个人中心中轻松管理自己的收藏夹。您可以根据个人喜好或需求,随时添加、删除或查看收藏的项目。这些收藏可以是您经常使用的车辆、司机或特定的服务类型,方便您在未来快速找到并预约。通过有效的收藏管理,您可以更加便捷地享受个性化的用车服务。
管理员:
1. 后台首页:展示管理员的主要操作入口和系统统计信息。
2. 系统用户:管理员可以管理系统用户,包括添加、修改、删除用户信息,设置用户角色和权限等。
3. 车辆信息管理:管理员在车辆信息管理模块中,拥有全面的车辆信息管理权限。他们可以轻松添加、查询、修改和删除车辆信息,确保数据的准确性和时效性。同时,管理员还能够重置车辆信息,并随时查看车辆详情和用户评论,以获取车辆使用的全面反馈。这些功能帮助管理员快速掌握车辆信息,为车辆调度和管理提供有力支持。
4. 预约记录管理:在预约记录管理模块中,管理员具备查看、审核和回复用户预约的权限。他们可以实时追踪用户的预约状态,处理投诉订单,确保用户获得满意的预约服务。管理员还能够根据用户姓名、司机姓名、车辆编号、订单编号和审核状态进行查询和搜索,快速定位特定预约记录。这些功能帮助管理员高效管理预约记录,提升用户满意度。
5. 投诉记录管理:在投诉记录管理模块中,管理员负责处理用户的投诉。他们可以查看投诉详情,根据用户姓名、订单编号、车辆编号和审核状态进行查询和搜索。管理员会及时审核和回复投诉,确保用户问题得到妥善解决。此外,管理员还能够删除和重置投诉记录,保持系统的整洁和稳定。这些功能帮助管理员有效管理投诉记录,提升用户满意度和服务质量。
6. 系统管理:作为管理员,在系统管理模块中,他们可以轻松管理轮播图。无论是添加新的轮播图、删除不再需要的图片,还是修改现有图片的展示顺序和内容,管理员都可以轻松完成。这些功能帮助管理员保持网站或应用的视觉吸引力,提升用户体验。
7. 网站公告管理:在网站公告管理模块中,管理员负责发布、编辑和删除网站公告。他们可以根据需要添加新的公告,确保用户及时了解网站动态和重要信息。同时,管理员还可以对现有的公告进行编辑和删除,保持公告的时效性和准确性。这些功能帮助管理员有效地传达重要信息,提升用户满意度。
8. 资源管理:管理员在资源管理模块中,可以方便地管理新闻资讯和资讯分类。他们可以添加、删除和修改新闻资讯内容,确保信息的准确性和时效性。同时,管理员还可以创建和编辑资讯分类,帮助用户更方便地浏览和查找感兴趣的内容。这些功能帮助管理员丰富网站或应用的内容资源,提升用户体验和吸引力。
4.4数据库设计
4.4.1数据库概念设计
数据库概念设计是指对于某个具体应用的数据模型(数据结构),进行抽象和设计,以便在后续的数据库实现阶段中进行数据库逻辑设计和物理结构设计。概念结构本身特性就是其能表现来自用户的各类需求。
系统ER图如下图所示。
![](https://i-blog.csdnimg.cn/direct/d6b1bb2fd84b43e197d1f7d7671e332e.png)
图4-3 系统ER图
网约车管理系统系统信息所拥有的数据表有以下,由于数据表较多,只展示系统主要数据表,如下表所示。
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | appointment_record_id | int | 10 | 0 | N | Y | 预约记录ID | |
2 | appointment_account | int | 10 | 0 | Y | N | 0 | 预约账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
5 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
6 | user_points | varchar | 64 | 0 | Y | N | 用户积分 | |
7 | driver_account | int | 10 | 0 | Y | N | 0 | 司机账号 |
8 | drivers_name | varchar | 64 | 0 | Y | N | 司机姓名 | |
9 | drivers_phone_number | varchar | 64 | 0 | Y | N | 司机电话 | |
10 | driver_points | varchar | 64 | 0 | Y | N | 司机积分 | |
11 | vehicle_model | varchar | 64 | 0 | Y | N | 车辆型号 | |
12 | vehicle_number | varchar | 64 | 0 | Y | N | 车辆编号 | |
13 | license_plate_number | varchar | 64 | 0 | Y | N | 车牌号码 | |
14 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
15 | vehicle_usage_time | datetime | 19 | 0 | Y | N | 用车时间 | |
16 | vehicle_location | text | 65535 | 0 | Y | N | 用车地点 | |
17 | vehicle_details | text | 65535 | 0 | Y | N | 用车详情 | |
18 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
19 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
20 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
21 | 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 | 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 | complaint_records_id | int | 10 | 0 | N | Y | 投诉记录ID | |
2 | complaint_account | int | 10 | 0 | Y | N | 0 | 投诉账号 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | user_phone_number | varchar | 64 | 0 | Y | N | 用户电话 | |
5 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
6 | driver_account | int | 10 | 0 | Y | N | 0 | 司机账号 |
7 | drivers_name | varchar | 64 | 0 | Y | N | 司机姓名 | |
8 | vehicle_number | varchar | 64 | 0 | Y | N | 车辆编号 | |
9 | complaint_time | datetime | 19 | 0 | Y | N | 投诉时间 | |
10 | upload_credentials | varchar | 255 | 0 | Y | N | 上传凭证 | |
11 | complaint_content | varchar | 64 | 0 | Y | N | 投诉内容 | |
12 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
13 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
14 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | driver_users_id | int | 10 | 0 | N | Y | 司机用户ID | |
2 | drivers_name | varchar | 64 | 0 | Y | N | 司机姓名 | |
3 | drivers_phone_number | varchar | 16 | 0 | Y | N | 司机电话 | |
4 | driver_points | int | 10 | 0 | Y | N | 0 | 司机积分 |
5 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | 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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | regular_users_id | int | 10 | 0 | N | Y | 注册用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | user_gender | varchar | 64 | 0 | Y | N | 用户性别 | |
4 | user_phone_number | varchar | 16 | 0 | Y | N | 用户电话 | |
5 | user_points | int | 10 | 0 | Y | N | 0 | 用户积分 |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | 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 | 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 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | vehicle_information_id | int | 10 | 0 | N | Y | 车辆信息ID | |
2 | driver_account | int | 10 | 0 | Y | N | 0 | 司机账号 |
3 | drivers_name | varchar | 64 | 0 | Y | N | 司机姓名 | |
4 | drivers_phone_number | varchar | 64 | 0 | Y | N | 司机电话 | |
5 | driver_points | varchar | 64 | 0 | Y | N | 司机积分 | |
6 | vehicle_model | varchar | 64 | 0 | Y | N | 车辆型号 | |
7 | vehicle_number | varchar | 64 | 0 | Y | N | 车辆编号 | |
8 | vehicle_photos | varchar | 255 | 0 | Y | N | 车辆照片 | |
9 | license_plate_number | varchar | 64 | 0 | Y | N | 车牌号码 | |
10 | number_of_passengers_allowed | int | 10 | 0 | Y | N | 0 | 可载人数 |
11 | vehicle_status | varchar | 64 | 0 | Y | N | 用车状态 | |
12 | details_introduction | text | 65535 | 0 | Y | N | 详情介绍 | |
13 | praise_len | 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 | 更新时间 |
第5章 系统实现
5.1登录模块的实现
用户登录页面,该页面有一个权限区分,主要用于区分系统管理员、用户的登录。当登录的账号是系统管理员时,管理员可以进行后台管理,而用户只能进行用户端的操作,用户只有在注册登录以后方可在网上订票。如果用户还没有登录的账号和密码,必须先在系统上注册一个。在登录后,可以进入订票的操作。
已登录的用户可以查看、修改个人信息以及密码修改等操作。用户信息,和密码修改功能在系统窗口中实现的。登录界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/428df417ce804521a26b82f317f4fe5d.png)
图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;
QueryWrapper wrapper = new QueryWrapper<User>();
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
tokenService.save(accessToken);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
public String select(Map<String,String> query,Map<String,String> config){
StringBuffer sql = new StringBuffer("select ");
sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
}
if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
}
if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
}
log.info("[{}] - 查询操作,sql: {}",table,sql);
return sql.toString();
}
public List selectBaseList(String select) {
List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
List<E> list = new ArrayList<>();
for (Map<String,Object> map:mapList) {
list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
}
return list;
}
5.2司机用户主要功能实现
首页的实现,用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览、预约车辆,且要易于修改和维护,同时还要保证用户合法和系统安全。
首页界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/432834c609064106971a9ab342eba120.png)
图5-2首页界面
用户注册页面:在这个页面中用户要填写用户名,密码,姓名,地址和Email等信息,并且各项信息都不能为空。用户也可以点击修改个人资料和密码。系统管理员对已注册用户的信息可进行确认,可将用户列为正式用户,也可以将其删除。一般注册了的用户默认都是正是用户,前提是管理员没有删除该账号。用户在注册成功以后,才可登录系统。用户注册界面如下所示。
![](https://i-blog.csdnimg.cn/direct/9c4705bba5b641328788895fe03ef0ab.png)
图5-3用户注册界面
注册代码如下:
/**
* 注册
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = service.readBody(request.getReader());
query.put("username",String.valueOf(map.get("username")));
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
public Map<String,Object> readBody(BufferedReader reader){
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try{
br = reader;
String str;
while ((str = br.readLine()) != null){
sb.append(str);
}
br.close();
String json = sb.toString();
return JSONObject.parseObject(json, Map.class);
}catch (IOException e){
e.printStackTrace();
}finally{
if (null != br){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
return null;
}
public void insert(Map<String,Object> body){
E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
baseMapper.insert(entity);
log.info("[{}] - 插入操作:{}",entity);
}
网站公告:用户登录系统后可在通知公告页面查看网站公告详情,并查询联系方式、网站介绍等操作,如下图所示。
![](https://i-blog.csdnimg.cn/direct/bb39a18430784c1e9922585220677243.png)
图5-4网站公告页面
车辆信息:司机用户可以查看自己车辆的详细信息,包括型号、可载人数等,并通过关键字搜索功能快速定位到特定车辆。同时,用户可以对自己的车辆信息进行增删改查操作,确保信息的准确性。此外,还可以对喜欢的车辆进行收藏、点赞和评论。如下图所示。
![](https://i-blog.csdnimg.cn/direct/2beb64652d354e2181581109295d3b02.png)
图5-5车辆信息界面
新闻资讯:在新闻资讯部分,司机用户可以浏览与自己职业相关的新闻资讯,进行收藏、点赞和评论,与同行进行交流和分享。如下图所示。
![](https://i-blog.csdnimg.cn/direct/493a4b4505e84d90938a8210b11496f0.png)
图5-6新闻资讯界面
个人中心车辆信息:司机用户可以查看自己的车辆信息,包括详情、评论等。用户还可以根据车辆型号、编号、车牌号码和用车状态进行搜索,方便快捷地管理自己的车辆。如下图所示。
![](https://i-blog.csdnimg.cn/direct/d4cf283ad58543a5b4456a218a451efe.png)
图5-7车辆信息界面
预约信息:司机用户可以在前台查看自己的预约记录,了解自己的工作安排和预约状态,方便进行行程规划。如下图所示。
![](https://i-blog.csdnimg.cn/direct/e4dc123b41f5474c92a96fb644b4af61.png)
图5-8预约信息界面
5.3注册用户主要功能实现
车辆信息,注册用户在后台可以详细查看车辆信息,包括车型、可载人数等关键数据。用户可以通过关键字(如车辆型号、车辆编号、车牌号码、用车状态)进行搜索,快速定位到所需车辆。此外,用户还可以收藏喜欢的车辆、点赞评价,甚至预约用车,简化了用车流程。如下图所示。
![](https://i-blog.csdnimg.cn/direct/55fbf83b079545af836c0078ecba8130.png)
图5-9车辆信息界面
预约记录,注册用户,可以方便地管理自己的预约记录。可以随时查询、重置或删除预约信息,详细了解每次预约的详情。如果用户对预约服务有任何不满或问题,可以直接进行投诉,并通过关键字如车辆型号、车辆编号、车牌号码或用车状态来快速搜索相关记录。此外,还可以查看预约的当前状态,并等待司机用户的确认和回复。如下图所示。
![](https://i-blog.csdnimg.cn/direct/e32d22aa6b804f969aa53393e08a421c.png)
图5-10预约信息界面
投诉记录,注册用户还可以轻松管理自己的投诉记录。可以查询、重置或删除历史投诉,并随时查看每个投诉的详细信息。为了帮助用户快速找到特定的投诉,用户可以通过用户姓名、订单编号、车辆编号或审核状态等关键字进行搜索。提交投诉后,用户将等待管理员的审核,并会收到相应的回复。如下图所示。
![](https://i-blog.csdnimg.cn/direct/a1a20212815d48ce9d6128a97116e6d2.png)
图5-13投诉记录界面
5.4管理员主要功能实现
首页界面,管理员进入后台首页,可以查看管理员:首后台首页、系统用户、车辆信息管理、预约记录管理、投诉记录管理、系统管理、网站公告管理、资源管理管理。等功能模块,并进行相关操作。
管理员后台首页界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/0d35278d7df748b1b689bbcba97d661a.png)
图5-14首页界面
系统管理,管理员可在系统管理对轮播图页面添加、删除、重置标题、图片等信息,并进行详情等操作,如下图所示。
![](https://i-blog.csdnimg.cn/direct/e53e28a4953749e4893df1c502857bc5.png)
图5-15轮播图管理界面
package com.project.demo.constant;
/**
*/
public class FindConfig {
public static String PAGE = "page";
public static String SIZE = "size";
public static String LIKE = "like";
public static String ORDER_BY = "orderby";
public static String FIELD = "field";
public static String GROUP_BY = "groupby";
public static String MIN_ = "_min";
public static String MAX_ = "_max";
}
系统用户,管理员可在系统管理对管理员、注册用户、司机用户所有信息进行详情等操作,如下图所示。
![](https://i-blog.csdnimg.cn/direct/e9ad8bd8512f492a84ae8d60a8c7b913.png)
图5-16系统用户界面图
车辆信息管理员:管理员在车辆信息管理模块中,拥有全面的车辆信息管理权限。他们可以轻松添加、查询、修改和删除车辆信息,确保数据的准确性和时效性。同时,管理员还能够重置车辆信息,并随时查看车辆详情和用户评论,以获取车辆使用的全面反馈。这些功能帮助管理员快速掌握车辆信息,为车辆调度和管理提供有力支持。车辆信息管理,界面如下图所示。
![](https://i-blog.csdnimg.cn/direct/7f8e7e01cb544f8492b097bf9e0cc3ee.png)
预约记录管理:在预约记录管理模块中,管理员具备查看、审核和回复用户预约的权限。他们可以实时追踪用户的预约状态,处理投诉订单,确保用户获得满意的预约服务。管理员还能够根据用户姓名、司机姓名、车辆编号、订单编号和审核状态进行查询和搜索,快速定位特定预约记录。这些功能帮助管理员高效管理预约记录,提升用户满意度。如下图所示。
![](https://i-blog.csdnimg.cn/direct/2104eaa3280645f9a8705f9b6eac048b.png)
图5-18预约记录管理界面
6 系统测试
6.1测试目的
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。
6.2功能测试
下表是系统登录功能测试用例,检测了用户名和密码的不同的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-1 系统登录功能测试用例
功能描述 | 用于系统登录 | |
测试目的 | 检测登录时的合法性检查 | |
测试数据以及操作 | 预期结果 | 实际结果 |
输入的用户名和密码带有非法字符 | 提示用户名或者密码错误 | 与预期结果一致 |
输入的用户名或者密码为空 | 提示用户名或者密码错误 | 与预期结果一致 |
输入的用户名和密码不存在 | 提示用户名或者密码错误 | 与预期结果一致 |
输入正确的用户名和密码 | 登录成功 | 与预期结果一致 |
下表是注册功能测试用例,检测了各种数据的输入情况,观察系统的响应情况。得出该功能达到了设计目标。
表6-2 注册功能测试用例
功能描述 | 用于用户注册 | |
测试目的 | 检测用户注册时的合法性检查 | |
测试数据以及操作 | 预期结果 | 实际结果 |
输入的手机号不合法 | 提示请输入正确的手机号码 | 与预期结果一致 |
输入的字段为空 | 提示必填项不能为空 | 与预期结果一致 |
输入的密码少于6位 | 提示密码必须为6-12位 | 与预期结果一致 |
输入的密码大于12位 | 提示密码必须为6-12位 | 与预期结果一致 |
下表是车辆信息功能的测试用例,检测了车辆信息中对车辆信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-3 车辆信息的测试用例
功能描述 | 用于车辆信息 | |
测试目的 | 检测车辆信息时的各种操作的运行情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
点击添加车辆信息,必填项合法输入,点击保存 | 提示添加成功 | 与预期结果一致 |
点击添加车辆信息,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改车辆信息,必填项修改为空,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击修改车辆信息,必填项输入不合法,点击保存 | 提示必填项不能为空 | 与预期结果一致 |
点击删除车辆信息,选择车辆信息删除 | 提示删除成功 | 与预期结果一致 |
点击搜索车辆信息,输入存在的车辆信息名 | 查找出车辆信息 | 与预期结果一致 |
点击搜索车辆信息,输入不存在的车辆信息名 | 不显示车辆信息 | 与预期结果一致 |
下表是新闻资讯功能的测试用例,检测了新闻资讯中查看操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。
前置条件;用户登录系统。
表6-4 新闻资讯的测试用例
功能描述 | 用于新闻资讯 | |
测试目的 | 检测新闻资讯时各种操作的情况 | |
测试数据以及操作 | 预期结果 | 实际结果 |
测试流程 | 点击新闻资讯查看列表 | 与预期结果一致 |
预期结果 | 页面首页会显示新闻资讯信息 | 与预期结果一致 |
6.3性能测试
使用阿里云PTS(Performance Testing Service)性能测试服务对线上系统进行压力测试。线上服务器环境为:1核心CPU,1G内存,1Mbps公网带宽,Centos7.0操作系统。
压测过程中使用了2台并发机器,每台机器20个用户并发,对系统主页,登录,数据查询和数据维护等模块进行并发访问,测试结果是有40个用户并发时,数据管理相关页面的响应时间甚至达到了7s,通过查看服务器出网流量发现已经达到1381kb/s,可以看出服务器的带宽已经达到峰值,如果系统使用5Mbps的带宽,系统的响应时间和TPS将会大大增加。在整个测试的过程中,CPU的使用率占用仅8%,也提现出带宽瓶颈对系统的影响非常严重。
第7章 总结与展望
随着计算机互联网技术的迅猛发展,各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是网约车管理系统为核心展开的,主要是为了实现用户代驾和网约车信息化管理和注册用户在线网约车的需求。
网约车管理系统的开发是基于SSM(SpringMVC + Spring + MyBatis)开发框架,采用Java编程语言和相关技术,采用MySQL数据库来建立数据之间的转换。文中详细分析了网约车管理系统的研究背景和意义、开发工具和相关技术以及系统需求、系统详细设计和系统测试等等一系列内容。系统实现了网约车管理系统所需的一些基本功能,并通过测试对这些实现的功能进行了完善,进而提高了系统整体的实用性。系统投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,因此系统在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。
参考文献
- 赵道致,袁紫微,杨爽,等. 基于司机服务质量的网约车平台差别定价策略 [J/OL]. 工业工程与管理, 1-21[2024-04-12].
- [2]Ullenboom C . Java Programming Exercises:Volume Two: Java Standard Library[M]. CRC Press: 2024-03-30.
- 游海疆,张朝丽. 企业何以提升治理质量?——基于网约车平台监管的制度分析 [J/OL]. 宏观质量研究, 1-10[2024-04-12].
[4]万利,刘甲坤. 无人驾驶网约车消费者接受度分析——基于UTAUT2理论模型范式 [J]. 商业经济研究, 2024, (05): 80-83.
[5]冯苏苇,林昌. 网约车平台算法个性化定价、乘客履约率及其监管对策 [J]. 华南理工大学学报(自然科学版), 2024, 52 (02): 104-112.
[6]彭子烜,崔林,郭志伟,等. 网约车合乘均衡匹配与激励策略 [J]. 华南理工大学学报(自然科学版), 2024, 52 (02): 95-103.
[7]韩秀艳. 网约车“一元”立法体例构建——基于司法实践的实证分析 [J]. 中阿科技论坛(中英文), 2024, (02): 167-172.
[8]罗琦. 黔西南州网约车行业存在的问题与对策研究 [J]. 汽车维护与修理, 2024, (03): 18-21.
[9]甘黎萍. 大型交通枢纽网约车运营管理经验与启示 [J]. 交通与运输, 2024, 40 (01): 76-82.
[10]赵建国,任冠宇,芦彦清. 网约车平台的规范与监管——基于演化博弈的分析 [J]. 产业组织评论, 2023, 17 (01): 32-49.
[11]戴升宝. 警惕网约车市场租赁陷阱[N]. 济南日报, 2023-12-27 (006).
[12]鲁铮. 大数据背景下基于政府激励的网约车合规化发展研究 [J/OL]. 经营与管理, 1-17[2024-04-12].
[13]Yuxie J ,Kai W ,Yingzhen Z , et al. Superoleophobic TiO2@SSM membranes with antifouling and photocatalytic ability for efficient microbubbles flotation emulsion separation and organic pollutants degradation [J]. Journal of Membrane Science, 2024, 690
[14]Ghoshal A . Oracle’s MySQL HeatWave gets Vector Store, generative AI features [J]. InfoWorld.com, 2023,
[15]韩鹏. 益民约车服务有限公司网约车项目营销策略优化研究[D]. 兰州大学, 2023.
[16]张浩. SSM框架在Web应用开发中的设计与实现研究 [J]. 电脑知识与技术, 2023, 19 (08): 52-54.
[17]樊佳慧. C网约车服务公司货币资金内部控制优化研究[D]. 西安石油大学, 2022.
[18]金凯. C市网约车行业安全监管问题研究[D]. 西南交通大学, 2022.
[19]王舒宁. 我国网约车安全治理的政府流程再造研究[D]. 大连海事大学, 2021.
[20]王轶萍,段一飞,张彦平,等. 一种网约车智能服务终端的设计与实现 [J]. 公路交通科技(应用技术版), 2020, 16 (11): 351-353.
致 谢
本次设计历时3个月。在这个毕业设计中,它离不开指导教师的指导,使事情基本顺利。指导老师无论是在毕业设计历经中,还是在论文做完中都给了了我特别大的助益。另1个方面,教师认真负责的工作姿态,谨慎的教学精神厚重的理论水准都使我获益匪浅。他勤恳谨慎的教学育人学习姿态也给我留下了特别特别深的感觉。我从老师那里学到了很多东西。在理论和实践中,我的技能得到了特别大的提高。在此,特向教师表示由衷的感激。
经过对该毕业设计的全部研究和开发,我的系统研发经历了从需求分析到实现详细功能,再到最终测试和维护的特殊进展。让我对系统研发有了更深层次的认识。如今我的动手本领单独处理疑惑的本领也获取到了特别大的演练学习增多,这是这次毕业设计最好的收获。
最后,在整个系统开发过程中,我周围的同学和朋友给了我很多意见,所以我很快就确认了系统的商业思想。在次,我由衷的向他们表示感激。