【课程设计】基于微信小程序与云原生架构的智能打车平台设计与实现-计算机毕设 55262
基于微信小程序与云原生架构的智能打车平台设计与实现
摘要
智能出行领域存在着服务质量良莠不齐、信息不对称、运营效率低下的诸多问题。传统的打车方式依靠电话叫车或者路边拦车,乘客不能知道车辆的位置以及等待的时间,司机空驶率高,平台的管理缺少统一的数据支持。移动互联网技术的发展促使出行服务由原来的数字化、智能化走向了综合性的平台化建设,创建起乘客、司机以及管理者三者共同参与的综合性服务平台,是破解出行行业痛点的有效途径。本文从用户需求出发,以微信小程序为依托,对智能打车平台的智能推荐、新闻资讯、叫车服务、派单管理、账单结算等各个功能模块进行设计和实现。系统采用Spring Boot框架搭建后端服务,微信小程序原生框架做为前端展示平台,MySQL数据库做数据持久化保存。采用角色权限分离的方式,给普通用户赋予便捷的叫车以及资讯浏览功能,给司机赋予派单接受和行程管理手段,给管理员赋予全部的用户及业务管理能力。系统的测试结果证明,本平台满足了设计出的全部功能要求,提高了出行服务的效率和用户体验,给智能出行领域提供了一种可行的技术方案。
关键词:智能打车;微信小程序;Spring Boot;MySQL;出行服务
Intelligent travel sector is facing many problems such as imbalanced service levels, lack of information, and poor operation. Traditional taxi calling is through phone or roadside waving around, no way for passenger to know the location of vehicles or waiting time, driver has many empty rides, and platform lacks unified data support. Mobile internet technology is driving a change in the way travel services go digital and smart, so building a comprehensive passenger + driver + administrator service system becomes one important solution to address issues in the industry. And it has realized the intelligent taxi - hailing platform which is constructed by Wechat Mini Programs with such central functions like intelligence recommendation, news information, ride calling, ride dispatching and bill settlement. I'll build the backend service with SpringBoot,I’ll show the frontend through WeChat Mini Program's Native Framework and I'll use MySQL Database to store information: Platform: Simple use of rides and easy to search the ride by dividing into 2 different roles, regular passengers and driver’s reception & handling for dispatchers; full power over managing both customer and commercial part. The system tests show that platform can realize complete design purposing for the purpose this project,easy to use,consistent provide more effective and convenient travel service ,and have better user feel about improving services through using feasible technique of smart traveling.
Key words: Intelligent Taxi-Hailing; WeChat Mini Program; Spring Boot; MySQL; Travel Service
目录
城市交通出行需求不断上升,网约车服务成了现代城市居民日常出行的主要方式。传统的打车方式由于信息传递的效率问题,使得乘客在高峰期很难得到及时的服务,司机由于没有准确的订单匹配机制而花费大量的时间在空驶寻客上。移动互联网技术的成熟给出行服务模式创新提供技术支持,以位置为基础的服务、实时通信和移动支付等技术深度融合,产生了新的智能出行平台。刘洋等人对于自走式草方格铺设车系统的探究[1]显示出智能车辆在某些场合的应用前景,李科蕊等人依靠计算机视觉来创建智能跟踪车系统设计[2]给车辆智能化赋予了技术参照,丰文东等人的火车车厢智能清车系统研究[3]证明了智能控制在交通领域内是可行的。这些研究都指向智能化技术在交通场景中有着非常广阔的运用前景。目前出行服务平台在信息整合、资源调度、服务标准化等方面还存在着优化的空间,乘客对于服务的透明度和响应速度有更高的要求,司机希望得到稳定的高效订单分配机制,平台管理者需要有可靠的分析工具来支撑运营决策。创建起包含乘客、司机以及管理者三方需求的综合性服务平台,既可改善用户的出行体验,又可以提高整个行业的运行效率,有着明显的社会效益和应用价值。
智能打车平台创建有诸多意义。平台把乘客需求同司机供给信息融合起来,创建起双向信息匹配机制,缩减乘客等候时长,削减司机空驶率,达成资源最优调配。系统所具有的自动化派单和行程管理功能,可以削减由于人工调度而造成的、出现的信息偏差以及操作失误等状况,从而改善服务流程的标准化程度。平台对出行数据实施系统化的采集和储存,给运营决策赋予数据支撑,促使管理者及时知晓业务状况,改善资源调配策略。从行业发展角度来讲,该平台探寻了移动互联网技术同传统出行服务深度交融的可能途径,所形成的科技方案和功能架构可以给类似服务平台给予参照。系统运行期间所累积下来的用户行为数据以及经营经历,可以成为开展城市交通规划和出台出行政策时的数据支撑。从社会效益角度出发,平台改善了出行服务效率,削减了车辆空驶造成的能源耗费和尾气排放,从而对城市环境的改善起到积极作用。
国内智能出行平台研究是从功能探索到体系完善的过程。早期的研究主要是对基础叫车功能进行实现,用GPS定位和移动通信技术建立乘客和司机之间的初步联系。伴随着移动互联网的普及,研究的重点也从以前的服务整合和体验优化上转移到了现在的路线规划、费用预估、评价反馈等模块上。近几年来,大数据分析和人工智能技术的发展使出行平台由原来的简单服务模式向智能化转变,订单匹配算法、动态定价机制、用户画像的构建成为研究的热点。国内学者就出行平台的技术架构、业务流程优化、用户体验设计等做了大量的研究工作,形成了比较完整的体系。
李艳红在新时代背景之下对嵌入式系统智能泊车系统的设计与应用进行了分析[4],其研究思路对于智能打车平台车辆调度模块有借鉴意义,嵌入式系统在车辆端的应用给订单派发和位置追踪提供技术支持。麻吉辉等人的智能停车场反向寻车系统[5]在车辆定位和路径引导方面有实践经验,可以将该系统的定位技术和信息展示方式应用到打车平台的司机寻客和乘客寻车场景中。张安莉等人的平行泊车路径规划智能泊车系统设计[6]给行车路径规划算法提供技术参考,路径优化思想可以应用到平台订单派发时的距离计算和路线推荐上。孙宇舸等人的信息采集智能车系统设计与实现[7]在数据采集与处理方面所采用的方法论,对于平台订单数据的管理及运营分析模块的设计有借鉴意义。朱智胜在Spring Boot技术内幕中所阐述的理论基础[8]为系统后端架构的设计提供理论依据,保证了系统技术选择的科学性、可行性。综上所述,国内学者在智能交通系统各个细分领域都取得了丰富的成果,但是针对乘客、司机、管理者三端融合的综合性出行平台的研究还存在着整合的空间,本系统的设计借鉴了前人的研究成果,功能齐全、角色明确。
国外智能出行领域研究起步较早,对技术架构、商业模式创新有较多的积累。欧美国家的研究机构和技术公司对按需出行服务技术进行了较早的研究,并且已经形成了一套主要依靠位置服务、实时通信、移动支付来构建的系统。近些年来,国外的研究更多地把重心放在了数据驱动的智能调度算法、多模态出行整合平台、自动驾驶出行服务这些前沿领域。Chen等人的研究[9]就智能消毒车系统的规划和全局路径规划给出理论依据,他们的路径规划的思想可以应用到打车平台的订单分配以及车辆调度当中。Dewangan等人的系统性分析视景智能车辆系统设计及挑战[10],给出智能车辆系统在感知、决策、控制等各方面的技术难点,给平台车辆信息管理以及司机行为分析赋予了参照架构。Jie等人基于物联网和云平台设计了智能停车系统[11],给出行服务的云端架构应用提供了一些思路,可以借鉴。Sahraei有关智能停车系统实时车位检测和自动门禁的设计研究[12]给出行服务中的用户身份识别和权限控制提供技术思路。国外研究对于系统的智能化程度以及数据驱动决策有着较高的成熟度,在本系统的设计当中借鉴了国外的研究成果,并结合国内实际情况对这些研究成果进行了本地化的调整,最终形成了一个具有较强实用性的智能打车平台解决方案。
本文就智能打车平台的设计和实现做系统的探究工作。研究开始于需求分析阶段,通过对用户、司机、管理员三种角色的业务场景进行梳理,确定平台要支持的功能模块和服务流程,明确系统边界和主要业务逻辑。在此基础上进行系统架构设计,前端采用微信小程序框架来降低用户的使用门槛,后端使用Spring Boot框架构建稳定的高效服务接口,数据库使用MySQL来保证数据的可靠存储和高效检索。系统实现阶段按照模块化开发思想,分别实现了用户端的智能推荐浏览、新闻资讯查询、叫车服务、通知中心等功能,司机端的派单信息查询、路线地图导航、到达信息查询、账单费用查询等功能,管理端的系统用户管理、叫车服务管理、派单信息管理、到达信息管理、账单费用管理、系统管理、网站公告管理、资源管理等模块的编码实现。测试验证阶段使用黑盒测试的方法,设计出包含核心业务流程的测试用例,检验系统的功能是否正确、数据是否一致、操作是否方便。本文主要对平台核心业务功能进行完整的实现,对三种角色的权限进行了合理的分配,没有涉及高并发场景下的性能优化以及分布式部署架构。预期成果为可以运行的微信小程序端、配套的后端服务以及完整的技术文档,整个研究采用软件工程的方法论进行开发,保证系统的开发过程有条理且成果质量高。
Spring Boot框架是后端服务的主要支撑技术,本系统中的业务逻辑处理和数据交互都依靠它来完成。该框架使用Spring生态系统创建,依靠自动配置来简化传统Spring应用开发中繁杂的XML配置任务,让开发者可以更加专注于业务逻辑的实现。Spring Boot用约定优于配置的思想设计,内置了许多生产级特性,包括嵌入式Web服务器、健康检查、指标监控等,给应用的部署和运维提供方便[13]。本系统在实现的过程中,使用Spring Boot框架去接收微信小程序端发出的HTTP请求,调用业务逻辑层进行数据校验、处理以及持久化操作,最后返回给前端以JSON的形式显示出来。框架给出的依赖注入机制很好地削减了各个模块之间的耦合程度,让服务层、数据访问层可以自由地发展和测试。周德伟在MySQL数据库基础实例教程中给出数据库同后端框架合作模式的参考,给系统数据访问层的设计提供一种实践上的参照。Spring Boot框架自带的自动配置可以省去项目搭建时环境配置的工作量,在内部就已包含Tomcat服务器,直接将整个应用程序打包成一个JAR文件,大大简化了部署的过程。框架给出的统一异常处理机制可以保证系统对于非预期的输入给出规范的错误信息,从而提高了系统的健壮性以及可维护性。
微信小程序开发框架给前端应用赋予了全部的界面创建和交互实现办法。该框架使用了类似于Web开发的模式,把视图层和逻辑层进行了分离的设计,视图层用WXML和WXSS来定义页面的结构和样式,逻辑层用JavaScript来处理用户的交互以及数据的请求[14]。小程序框架本身就具有了微信生态的特性,用户不需要再额外下载安装应用就可以通过微信的发现入口来访问服务,从而降低了使用门槛。框架所给予的组件化开发方式,可以把界面拆分成可以被重复利用的组件单元,从而提高开发效率并加强代码的复用程度。本系统中微信小程序框架主要用来呈现用户端、司机端所有的操作界面,即智能推荐页面、新闻资讯详情页、叫车服务表单、派单信息列表、账单费用展示等。框架封装位置服务接口,使系统可以方便地得到用户的当前位置信息,从而快速填充出发地址、推荐附近的车辆。小程序框架提供的本地存储可以保存一些用户偏好的数据,在没有网络的时候也可以使用。埃德·耶伯格在对vue.js应用进行测试的时候指出的前端测试方法,对于小程序代码质量的保证有借鉴意义。框架自带的调试工具集可以实现真机预览以及远程调试,使开发人员可以在开发的过程中迅速找到界面渲染或者逻辑执行方面的问题。微信小程序开发框架的云开发能力给小型应用提供了一个后端服务的替代方案,但是由于本系统业务数据的安全性和可控性要求较高,所以仍然采用自建后端服务的方式。
MySQL数据库属于开源的关系型数据库管理系统,本文系统中主要的数据持久化存储工作是由它来完成的。该数据库可以支持多线程、多用户同时访问,具有较好的查询处理能力和数据吞吐量,可以满足出行服务平台日常运营的数据存取要求。MySQL支持标准的SQL语言,有事务处理、数据索引、视图、存储过程等特性来保证数据操作的正确性、一致性。本系统数据存储使用MySQL数据库来保存用户信息、叫车订单、派单记录、账单数据、新闻资讯、系统公告等各种业务数据。数据库设计符合第三范式,用合理的主键、外键约束保证数据间的参照完整性,用索引来提高高频查询操作的响应速度。王希、戴靓婕在MySQL数据库技术在Web动态网页设计中的应用研究中对数据库和Web应用的集成方式进行了研究[15],给本系统数据访问层的设计提供实践指导。数据库事务支持功能对于订单创建、支付状态更新等重要操作来说具有十分重要的作用,保证业务操作的原子性。MySQL提供的备份和恢复机制给系统数据安全提供基本保障,配合定期的数据备份策略可以大大降低数据丢失的风险。数据库存储引擎的选择上,系统使用InnoDB引擎来保证事务和外键约束,保证多表关联操作的数据一致性。MySQL数据库的查询优化器可以依据数据分布以及索引状况来挑选出最合适的执行计划,从而保证平台在用户访问高峰期时的响应速度。
前后端分离架构是现代Web应用的主要开发方式,在本系统中明确了前后端各方面的职责以及交互规范。该架构把前端应用和后端服务分离开来,使它们分别独立地工作,在前端主要是用户界面展示和交互反应,在后端主要是业务逻辑处理和数据服务供给。两者之间采用HTTP接口进行通讯。采用前后端分离架构之后,开发进程可以同时进行,前端团队依照接口文档就可以开始界面开发,而后端团队只负责服务接口的实现和改进,从而削减了开发过程中互相等待的时间[16]。在本系统实现过程中,微信小程序前端和Spring Boot后端使用RESTful风格的API来完成数据交互,通信的数据格式都用JSON表示。前端完成用户输入的采集、页面上显示后端返回的数据、处理页面跳转和状态保存等工作,后端完成请求参数的接收、权限校验、业务逻辑的调用、数据库的操作以及返回处理结果的工作。胡劲在数据库信息管理系统逻辑架构及功能设计研究中对分层架构的实现方式进行了分析[17],给本系统前后端职责划分提供设计思路。前后端分离架构减小了系统之间的耦合程度,前端界面的变动不会干扰到后端代码,后端服务的更新也不会对前端已有的功能造成影响。该架构模式使得系统具有较好的可扩展性,将来如果需要增加Web管理端或者第三方服务的接入,只需要复用现有的后端接口就可以实现。
系统开发所用到的技术栈都是成熟的、稳定的主流技术方案。Spring Boot框架经过大量的企业级应用验证,有完整的开发文档和活跃的技术社区,开发中遇到的技术问题可以很快得到解决。微信小程序开发框架给出完备的开发工具以及调试环境,支持代码实时预览和真机调试,削减了前端开发的技术门槛。MySQL数据库属于关系型数据库的一种,事务支持、索引优化、数据备份等功能可以满足出行平台的数据管理要求。技术选型时各个组件之间具有较好的兼容性,Spring Boot 对于 MySQL JDBC 驱动的原生支持、小程序对于 RESTful 接口的调用标准都能够得到保证,从而保证前后端数据交互的顺畅。开发环境上使用的是IntelliJ IDEA和微信开发者工具这两种成熟的集成开发环境,可以满足整个开发周期的工作需求。现有的技术储备和开发工具的齐全程度,从技术角度来说,保证了系统可以实现。
系统开发所用到的大部分软件资源都是开源或者免费的,从而降低了软件采购成本。Spring Boot框架采用Apache 2.0协议开源,MySQL数据库提供社区版免费使用,微信开发者工具免费向开发者开放。从硬件资源上来说,在系统开发阶段可以利用个人计算机来完成编码和调试工作,在测试阶段可以申请免费或者低成本的云服务器来进行部署验证。开发过程主要的人力、时间成本,对本科毕业设计项目来说,开发周期、工作强度都在可控制的范围之内。系统上线后运行成本主要是云服务器租赁费和域名维护费,根据目前的市场价格标准,小型应用基础配置就可以满足初期运营需要。从投入产出角度来说,系统建设所需经费投入同产生的社会效益相比处在合理范围之内,具备较好的经济可行性。
系统分别设计出三个不同的用户群体的界面,根据各个用户群体的使用习惯和操作频率来设计。普通用户可以通过微信小程序直接使用服务,不需要学习就可以使用熟悉过的交互方式完成叫车、浏览资讯等操作。司机端界面主要显示订单信息和状态变化,重要信息用较大的字体和鲜艳的颜色来表现,在驾驶场景下可以迅速阅读和操作。管理端使用后台管理方式,功能菜单分门别类,数据列表具有筛选和批量操作的功能,适合管理人员高效的工作需要。简化系统交互流程,用户发出叫车请求之后,系统会自动填入常用的地址,降低用户的输入操作。司机接收到派单之后,系统会给出导航入口,从而免去手动输入地址的麻烦。各个功能模块的入口明确,操作路径简短,用户的学习成本低,从操作角度保证了系统的可用性。
普通用户在平台中能够完成智能推荐浏览、新闻资讯查询、评论、叫车服务、通知中心等操作。智能推荐浏览提供个性化内容展示,新闻资讯查询支持信息检索与详情阅读,评论功能允许对资讯内容发表观点,叫车服务用于提交出行需求,通知中心展示系统推送的消息。

图3-1 普通用户用例图
司机用户在平台中能够完成派单信息查询、路线地图导航、到达信息查询、账单费用查询等操作。派单信息查询用于查看分配给自己的订单,路线地图导航提供行车路径指引,到达信息查询用于确认行程完成状态,账单费用查询用于核对收入明细。

图3-2 司机用户用例图
管理员用户在平台中能够完成系统用户管理、叫车服务管理、派单信息管理、到达信息管理、账单费用管理、系统管理、网站公告管理、资源管理等操作。系统用户管理用于审核司机资质与用户账户状态,叫车服务管理处理订单审核与派单,派单信息管理跟踪订单分配情况,到达信息管理核实行程完成记录,账单费用管理监控支付状态,系统管理维护轮播图等展示内容,网站公告管理发布平台通知,资源管理维护新闻资讯内容。

图3-3 管理员用例图
系统使用前后端分离的分层架构模式,总体上分为用户界面层、应用服务层和数据持久层这三个主要层次。用户界面层用微信小程序框架来创建,主要功能有接收用户的输入、显示业务数据、控制页面的跳转和状态的保存。应用服务层使用Spring Boot框架做主要的实现框架,部署业务逻辑组件、服务控制器等来完成对请求的处理工作,将收到的数据通过对应的组件或者控制器来处理,并且按照一定的格式返回给客户端。数据持久层使用MySQL数据库来存储业务数据,利用MyBatis框架完成对象关系映射,把数据库操作封装成数据访问接口供上层调用。用户界面层和应用服务层之间采用HTTP协议进行通信,数据交换格式统一使用JSON,这样就实现了松耦合的设计,各个层次可以独立发展和维护。系统架构图如下图4-1所示。

图4-1 系统架构图
系统以普通用户、司机用户、管理员三种角色为依托,形成功能模块体系。普通用户端包括智能推荐浏览、新闻资讯查询、评论互动、叫车服务、通知中心等功能,可以满足用户日常生活出行和信息获取等需求。司机用户端集成派单信息查询、路线地图导航、到达信息查询、账单费用查询等功能,支持行程执行和收入管理。管理员端包含系统用户管理、叫车服务管理、派单信息管理、到达信息管理、账单费用管理、系统管理、网站公告管理、资源管理等模块,完成平台的运营和数据控制。三类角色的功能模块互相联系,普通用户提交叫车订单之后,管理员可以进行派单操作,司机接收到派单之后完成行程,从而形成一个完整的业务闭环。该系统的功能结构如图4-2所示。

图4-2 系统功能结构图
用户发起叫车请求后,系统首先校验用户身份与基本信息,确认用户登录状态后接收出发地址与终点地址输入。系统对地址信息进行有效性校验,通过后生成叫车订单并提交管理员审核。管理员审核通过后进入派单环节,系统根据司机位置与服务状态分配订单。叫车服务流程图如图4-3所示。

图4-3 叫车服务流程图
司机登录系统后进入派单信息查询模块,系统展示待接单列表与已接单列表。司机可选择查看订单详情,系统从数据库获取订单完整信息并呈现。司机根据自身情况决定是否接单,接单后订单状态更新为已派单,系统同步通知用户。派单信息查询流程图如图4-4所示。

图4-4 派单信息查询流程图
司机到达目的地后,在系统中填写到达备注信息并提交到达确认。系统记录到达时间与备注内容,将行程状态更新为已完成,并生成待审核记录。管理员对到达信息进行审核,确认行程真实性后,触发费用结算流程。到达信息确认流程图如图4-5所示。

图4-5 到达信息确认流程图
账单费用查询流程设计
用户或司机进入账单费用模块后,系统根据当前登录角色筛选对应的账单数据。用户可查看个人出行费用明细,司机可查看收入记录。用户选择待支付账单后,系统调起支付接口完成费用支付,支付成功后更新账单状态。账单费用查询流程图如图4-6所示。

图4-6 账单费用查询流程图
管理员进入系统用户管理模块后,可查看所有注册用户与司机信息列表。系统提供按昵称、手机号码、审核状态等条件筛选用户的功能。管理员选择待审核用户后,查看用户提交的资质证明材料,决定是否通过审核。审核结果通过系统通知发送给相应用户。系统用户管理流程图如图4-7所示。

图4-7 系统用户管理流程图
概念模型设计主要对系统内各个核心业务实体间的关系进行抽象。叫车服务是平台的主要业务之一,用户发起订单、管理员审核派单、司机完成行程等环节都涉及到用户、订单、派单、到达、账单等实体之间的关系。从设计过程的角度来看,概念模型的建立是从对需求规格说明书进行详细的分析开始的,把文本描述的业务场景转变为结构化的数据蓝图。识别出关键实体之后才开始模型的建立,普通用户和司机用户都是服务的主体,叫车服务记录着乘客的出行需求,派单信息记录着订单的分配关系,到达信息记录着行程的完成情况,账单费用体现着服务的结算结果。实体间的联系是业务规则的约束,普通用户和叫车服务是一对多的提交关系,叫车服务和派单信息是一对一或者一对多的分配关系,司机用户和派单信息是一对多的承接关系,到达信息和账单费用是一对一的结算关系。全局的E-R模型如图4-8所示。

图4-8 全局ER图
根据系统分析,系统的主要实体有:普通用户、司机用户、管理员、叫车服务、派单信息、到达信息、账单费用、资源管理、系统用户、评论,各个实体具体的属性如下图所示。
(一)普通用户实体属性图
普通用户主要包括普通用户id、用户姓名、用户性别、用户年龄、联系电话等属性。如图4-9所示。

图4-9 普通用户实体属性图
(二)司机用户实体属性图
司机用户主要包括司机用户id、司机姓名、司机性别、司机年龄、车牌号码、手机号码、资质证明等属性。如图4-10所示。

图4-10 司机用户实体属性图
(三)管理员实体属性图
管理员主要包括管理员id、用户名、密码、角色类型等属性。如图4-11所示。

图4-11 管理员实体属性图
(四)叫车服务实体属性图
叫车服务主要包括叫车服务id、叫车编号、联系电话、出发地址、终点地址、备注信息、审核状态等属性。如图4-12所示。

图4-12 叫车服务实体属性图
(五)派单信息实体属性图
派单信息主要包括派单信息id、叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码、手机号码、审核状态等属性。如图4-13所示。

图4-13 派单信息实体属性图
(六)到达信息实体属性图
到达信息主要包括到达信息id、叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码、手机号码、到达时间、到达备注、审核状态等属性。如图4-14所示。

图4-14 到达信息实体属性图
(七)账单费用实体属性图
账单费用主要包括账单费用id、叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码、费用金额、支付状态等属性。如图4-15所示。

图4-15 账单费用实体属性图
(八)资源管理实体属性图
资源管理主要包括资源id、标题、封面图、文章分类、标签、正文内容等属性。如图4-16所示。

图4-16 资源管理实体属性图
(九)系统用户实体属性图
系统用户主要包括系统用户id、用户名、用户组、账户状态、手机号码等属性。如图4-17所示。

图4-17 系统用户实体属性图
(十)评论实体属性图
评论主要包括评论id、评论内容、评论人、评论时间、来源信息等属性。如图4-18所示。

图4-18 评论实体属性图
数据库逻辑设计将概念模型中的实体与关系转化为数据库管理系统支持的表结构,明确各字段的数据类型、长度与约束条件。逻辑设计阶段需要确定每个表的物理存储结构,为主键选择合适的索引策略以优化查询性能,依据业务操作模式设计合理的字段组合。窦万峰等人在软件工程实验教程中阐述了数据库设计在软件开发过程中的作用[18],为系统数据库构建提供了方法论支持。本系统的数据库设计遵循第三范式规范,通过外键约束维护数据间的参照完整性,利用事务机制保障订单创建与支付状态更新等关键操作的原子性。对于叫车服务、派单信息、到达信息等业务流程关联紧密的表,通过公共字段实现数据串联,确保业务链条的可追溯性。数据库表的命名采用业务含义明确的英文词汇,字段类型根据存储内容合理选择,字符型字段长度依据业务场景设置,时间字段统一使用datetime或timestamp类型以支持时间范围查询。
叫车服务表主要是用来存储用户提交的打车请求信息。主要包括叫车编号、联系电话、出发地址、终点地址等字段。如表4-1所示。
表4-1 叫车服务表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | ruser_ide_hailing_service_id | int | 11 | 叫车服务id |
| 2 | call_number | varchar | 64 | 叫车编号 |
| 3 | contact_phone_number | varchar | 64 | 联系电话 |
| 4 | departure_address | varchar | 255 | 出发地址 |
| 5 | end_address | varchar | 255 | 终点地址 |
| 6 | remark_information | text | 65535 | 备注信息 |
| 7 | examine_state | varchar | 16 | 审核状态 |
| 8 | create_time | datetime | - | 创建时间 |
| 9 | regular_user | int | 11 | 普通用户 |
派单信息表主要是用来存储订单分配给司机的记录。主要包括叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码等字段。如表4-2所示。
表4-2 派单信息表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | dispatch_information_id | int | 11 | 派单信息id |
| 2 | call_number | varchar | 64 | 叫车编号 |
| 3 | contact_phone_number | varchar | 64 | 联系电话 |
| 4 | departure_address | varchar | 255 | 出发地址 |
| 5 | end_address | varchar | 255 | 终点地址 |
| 6 | driver_user | int | 11 | 司机用户 |
| 7 | license_plate_number | varchar | 64 | 车牌号码 |
| 8 | mobile_phone_number | varchar | 64 | 手机号码 |
| 9 | examine_state | varchar | 16 | 审核状态 |
到达信息表主要是用来存储司机完成行程的记录。主要包括叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码、到达时间、到达备注等字段。如表4-3所示。
表4-3 到达信息表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | arrival_information_id | int | 11 | 到达信息id |
| 2 | call_number | varchar | 64 | 叫车编号 |
| 3 | contact_phone_number | varchar | 64 | 联系电话 |
| 4 | departure_address | varchar | 64 | 出发地址 |
| 5 | end_address | varchar | 64 | 终点地址 |
| 6 | driver_user | int | 11 | 司机用户 |
| 7 | license_plate_number | varchar | 64 | 车牌号码 |
| 8 | mobile_phone_number | varchar | 64 | 手机号码 |
| 9 | arrival_time | datetime | - | 到达时间 |
| 10 | arrival_notes | text | 65535 | 到达备注 |
账单费用表主要是用来存储行程费用结算信息。主要包括叫车编号、联系电话、出发地址、终点地址、司机用户、车牌号码、费用金额、支付状态等字段。如表4-4所示。
表4-4 账单费用表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | billing_charges_id | int | 11 | 账单费用id |
| 2 | call_number | varchar | 64 | 叫车编号 |
| 3 | contact_phone_number | varchar | 64 | 联系电话 |
| 4 | departure_address | varchar | 64 | 出发地址 |
| 5 | end_address | varchar | 64 | 终点地址 |
| 6 | driver_user | int | 11 | 司机用户 |
| 7 | license_plate_number | varchar | 64 | 车牌号码 |
| 8 | amount_of_expense | double | - | 费用金额 |
| 9 | pay_state | varchar | 16 | 支付状态 |
普通用户表主要是用来存储乘客用户的基本信息。主要包括用户姓名、用户性别、用户年龄、联系电话等字段。如表4-5所示。
表4-5 普通用户表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | regular_user_id | int | 11 | 普通用户id |
| 2 | user_name | varchar | 64 | 用户姓名 |
| 3 | user_gender | varchar | 64 | 用户性别 |
| 4 | user_age | varchar | 64 | 用户年龄 |
| 5 | contact_phone_number | varchar | 16 | 联系电话 |
| 6 | examine_state | varchar | 16 | 审核状态 |
| 7 | user_id | int | 11 | 用户id |
司机用户表主要是用来存储司机的详细信息。主要包括司机姓名、司机性别、司机年龄、车牌号码、手机号码、资质证明等字段。如表4-6所示。
表4-6 司机用户表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | driver_user_id | int | 11 | 司机用户id |
| 2 | drivers_name | varchar | 64 | 司机姓名 |
| 3 | driver_gender | varchar | 64 | 司机性别 |
| 4 | drivers_age | varchar | 64 | 司机年龄 |
| 5 | license_plate_number | varchar | 64 | 车牌号码 |
| 6 | mobile_phone_number | varchar | 16 | 手机号码 |
| 7 | qualification_certificate | varchar | 255 | 资质证明 |
| 8 | examine_state | varchar | 16 | 审核状态 |
用户账户表主要是用来存储系统登录账户信息。主要包括用户名、密码、用户组、账户状态、手机号码等字段。如表4-7所示。
表4-7 用户账户表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | user_id | int | 11 | 用户id |
| 2 | username | varchar | 16 | 用户名 |
| 3 | password | varchar | 64 | 密码 |
| 4 | user_group | varchar | 32 | 用户组 |
| 5 | state | smallint | 6 | 账户状态 |
| 6 | phone | varchar | 11 | 手机号码 |
文章表主要是用来存储新闻资讯内容。主要包括标题、封面图、文章分类、标签、正文内容、来源等字段。如表4-8所示。
表4-8 文章表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | article_id | mediumint | 9 | 文章id |
| 2 | title | varchar | 125 | 标题 |
| 3 | img | varchar | 255 | 封面图 |
| 4 | type | varchar | 64 | 文章分类 |
| 5 | tag | varchar | 255 | 标签 |
| 6 | content | longtext | 4294967295 | 正文 |
| 7 | source | varchar | 255 | 来源 |
评论表主要是用来存储用户对资讯内容的评价。主要包括评论内容、评论人、评论时间、来源信息等字段。如表4-9所示。
表4-9 评论表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | comment_id | int | 11 | 评论id |
| 2 | content | longtext | 4294967295 | 内容 |
| 3 | user_id | int | 11 | 评论人id |
| 4 | create_time | timestamp | - | 评论时间 |
| 5 | source_id | int | 11 | 来源id |
| 6 | source_table | varchar | 255 | 来源表 |
轮播图表主要是用来存储首页轮播展示内容。主要包括标题、轮播图、链接等字段。如表4-10所示。
表4-10 轮播图表
| 序号 | 字段名 | 类型 | 长度 | 备注 |
| 1 | slides_id | int | 11 | 轮播图id |
| 2 | title | varchar | 64 | 标题 |
| 3 | img | varchar | 255 | 轮播图 |
| 4 | url | varchar | 255 | 链接 |
智能推荐浏览模块通过分析用户的历史浏览记录与资讯分类偏好,从资源库中筛选匹配度较高的文章内容进行展示。该功能由ArticleController控制层提供支持,调用get_list方法获取推荐文章列表,系统根据用户行为数据动态调整推荐策略,将排序后的结果返回前端进行渲染。智能推荐浏览界面如图5-1所示。

图5-1 智能推荐浏览界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
新闻资讯查询模块为用户提供文章检索与分类筛选能力。用户进入资讯页面后可按分类标签筛选文章,或在搜索框输入关键词进行模糊匹配。ArticleController中的get_list方法接收前端传递的查询条件,调用数据访问层执行条件查询,返回符合条件的文章列表,按发布时间倒序排列展示。新闻资讯查询界面如图5-2所示。

图5-2 新闻资讯查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
评论模块支持用户对资讯内容发表观点并进行互动。用户进入资讯详情页后填写评论内容并提交,CommentController中的add方法接收评论数据,完成内容校验后将评论与当前资讯关联存储。用户浏览评论时可对认可的评论执行点赞操作,系统记录点赞状态并更新评论的点赞计数。评论界面如图5-3所示。

图5-3 评论界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
叫车服务模块负责处理用户的出行需求提交与订单管理。用户进入叫车页面后,系统尝试获取当前地理位置并填充出发地址,用户补充终点地址与备注信息后提交订单。RuserIdeHailingServiceController中的add方法接收订单数据,生成叫车编号并设置初始审核状态为待审核,将订单信息持久化存储。叫车服务界面如图5-4所示。

图5-4 叫车服务界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
RuserIdeHailingService ruser_ide_hailing_service = new RuserIdeHailingService();
ruser_ide_hailing_service.setCall_number(paramMap.get("call_number")==null?null:String.valueOf(paramMap.get("call_number")));
this.addEntity(ruser_ide_hailing_service);
return success(1);
}
通知中心模块集中展示系统推送的各类消息。用户登录后若存在未读通知,系统在入口处显示未读数量标识。用户进入通知中心后,MessageInformController中的get_list方法查询当前用户的所有通知记录,按照时间倒序排列展示。用户点击单条通知后,系统调用set方法将该通知标记为已读状态。通知中心界面如图5-5所示。

图5-5 通知中心界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
派单信息查询模块为司机提供待接单订单与已接单订单的查看能力。司机登录后进入派单列表页面,系统根据司机身份筛选对应的派单记录。DispatchInformationController中的get_list方法接收前端请求,返回派单信息列表,司机可选择查看订单详情并执行接单操作,接单后订单状态更新为已派单。派单信息查询界面如图5-6所示。

图5-6 派单信息查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
路线地图导航模块为司机提供行程路线的可视化展示。司机接单后进入导航页面,系统在地图上标注出发位置与终点位置,绘制最优行车路线。该功能通过调用第三方地图服务SDK实现,前端接收起点与终点坐标后请求地图服务获取路线数据,计算路线距离与预计行驶时间后展示在页面顶部。路线地图导航界面如图5-7所示。

图5-7 路线地图导航界面
核心代码实现如下:
@RequestMapping("/get_obj")
public Map<String, Object> obj(HttpServletRequest request) {
Map<String, String> query = service.readQuery(request);
List resultList = service.selectBaseList(service.select(query, new HashMap<>()));
JSONObject jsonObject = new JSONObject();
jsonObject.put("obj",resultList.get(0));
return success(jsonObject);
}
到达信息查询模块支持司机提交行程完成记录。司机到达目的地后进入到达信息页面,系统自动填充乘客信息与行程信息,司机填写到达备注内容后提交确认。ArrivalInformationController中的add方法接收到达信息,记录到达时间并设置审核状态为待审核,将行程状态更新为已完成。到达信息查询界面如图5-8所示。

图5-8 到达信息查询界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String,Object> paramMap = service.readBody(request.getReader());
ArrivalInformation arrival_information = new ArrivalInformation();
arrival_information.setArrival_notes(paramMap.get("arrival_notes")==null?null:String.valueOf(paramMap.get("arrival_notes")));
this.addEntity(arrival_information);
return success(1);
}
账单费用查询模块为司机提供收入明细的查看与核对能力。司机进入账单页面后,系统展示收入汇总信息及账单列表。BillingChargesController中的get_list方法根据司机身份筛选对应的账单记录,按照时间倒序排列展示,司机可点击任意账单查看费用明细与计算依据。账单费用查询界面如图5-9所示。

图5-9 账单费用查询界面
核心代码实现如下:
@RequestMapping("/get_list")
public Map<String, Object> getList(HttpServletRequest request) {
Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));
return success(map);
}
系统用户管理模块为管理员提供用户信息审核与维护能力。管理员进入用户管理页面后,系统展示用户列表,可按用户类型或审核状态进行筛选。RegularUserController与DriverUserController分别提供普通用户与司机用户的查询接口,管理员选择待审核用户后调用update_examine_state方法更新审核状态,审核结果通过通知中心发送给相应用户。系统用户管理界面如图5-10所示。

图5-10 系统用户管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
@Transactional
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
DriverUser driver_user = service.findOne(queryMap);
driver_user.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),driver_user);
return "审核成功";
}
叫车服务管理模块为管理员提供订单审核与派单处理功能。管理员进入叫车服务页面后,系统展示待审核订单列表,可查看订单详情后决定是否通过审核。RuserIdeHailingServiceController中的update_examine_state方法处理审核操作,审核通过的订单进入派单环节,管理员可选择司机执行派单操作。叫车服务管理界面如图5-11所示。

图5-11 叫车服务管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
@Transactional
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
RuserIdeHailingService ruser_ide_hailing_service = service.findOne(queryMap);
ruser_ide_hailing_service.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),ruser_ide_hailing_service);
return "审核成功";
}
派单信息管理模块为管理员提供已派发订单的状态跟踪与调整能力。管理员进入派单信息页面后,系统展示所有派单记录,可查看派单详情了解司机接单状态与行程进度。DispatchInformationController中的get_list方法返回派单信息列表,对于异常情况,管理员可调用set方法更新派单状态或重新分配订单。派单信息管理界面如图5-12所示。

图5-12 派单信息管理界面
核心代码实现如下:
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
Map<String,String> queryMap = service.readQuery(request);
Map<String,String> configMap = service.readConfig(request);
Map<String,Object> paramMap = service.readBody(request.getReader());
DispatchInformation dispatch_information = new DispatchInformation();
this.setEntity(queryMap,configMap,dispatch_information);
return success(1);
}
到达信息管理模块为管理员提供行程到达记录的审核与费用核算能力。管理员进入到达信息页面后,系统展示待审核到达记录,核实行程真实性后调用update_examine_state方法进行审核。审核通过的到达信息触发费用结算流程,系统根据行程距离与计价规则生成账单费用记录。到达信息管理界面如图5-13所示。

图5-13 到达信息管理界面
核心代码实现如下:
@GetMapping("/update_examine_state")
@Transactional
public String updateExamineState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
ArrivalInformation arrival_information = service.findOne(queryMap);
arrival_information.setExamine_state(newState);
this.setEntity(queryMap,new HashMap<>(),arrival_information);
return "审核成功";
}
账单费用管理模块为管理员提供账单数据的监控与异常处理能力。管理员进入账单页面后,系统展示所有账单记录,可按支付状态筛选。BillingChargesController中的get_list方法返回账单列表,对于支付状态异常的账单,管理员调用update_pay_state方法进行手动修正,确保账单数据准确性。账单费用管理界面如图5-14所示。

图5-14 账单费用管理界面
核心代码实现如下:
@GetMapping("/update_pay_state")
@Transactional
public String updatePayState(Long id, String newState) throws IOException {
Map<String,String> queryMap = new HashMap<>();
queryMap.put("id",String.valueOf(id));
BillingCharges billing_charges = service.findOne(queryMap);
billing_charges.setPay_state(newState);
this.setEntity(queryMap,new HashMap<>(),billing_charges);
return "支付成功";
}
系统管理模块为管理员提供平台展示内容的配置与维护功能。管理员进入系统管理页面后,可对首页轮播图进行添加、删除、排序操作。SlidesController中的add方法接收轮播图数据,set方法用于修改现有轮播图配置,del方法删除指定轮播图,前端首页通过get_list方法获取最新轮播图列表进行同步展示。系统管理界面如图5-15所示。

图5-15 系统管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String, Object> addMap = service.readBody(request.getReader());
checkParameter(addMap, "title", "标题不能为空");
addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time"));
this.service.insert(addMap);
return success(1);
}
网站公告管理模块为管理员提供公告信息的发布与维护功能。管理员进入公告管理页面后,可查看已发布公告列表,点击添加公告按钮填写标题与正文内容后发布。NoticeController中的add方法接收公告数据并持久化存储,set方法用于编辑已有公告,del方法删除公告,系统将公告推送至用户端通知中心。网站公告管理界面如图5-16所示。

图5-16 网站公告管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String, Object> addMap = service.readBody(request.getReader());
checkParameter(addMap, "title", "标题不能为空");
addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time"));
this.service.insert(addMap);
return success(1);
}
资源管理模块为管理员提供新闻资讯内容的维护与发布功能。管理员进入资源管理页面后,系统展示文章列表,可添加新文章或对已发布文章进行编辑删除操作。ArticleController中的add方法接收文章数据,set方法更新文章内容,del方法删除文章,get_list方法返回文章列表供前端展示,用户评论通过CommentController进行管理。资源管理界面如图5-17所示。

图5-17 资源管理界面
核心代码实现如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
Map<String, Object> addMap = service.readBody(request.getReader());
checkParameter(addMap, "type", "分类不能为空");
checkParameter(addMap, "title", "标题不能为空");
addMap.keySet().removeIf(key -> key.equals("create_time") || key.equals("update_time"));
this.service.insert(addMap);
return success(1);
}
系统测试是检验智能打车平台功能实现是否符合设计规格的过程。测试过程主要是对业务逻辑进行正确的校验,保证叫车订单从提交、派单、完成等整个流程的数据流转没有出错[19]。测试用例设计包括各个用户角色主要的操作场景,即普通用户叫车、资讯浏览、司机派单接收、行程确认、管理员审核、配置等。测试阶段主要对边界条件处理情况进行检验,即地址信息缺失时系统会给出怎样的响应,重复提交订单数据是否会被自动去重,未登录状态下操作权限如何控制。数据一致性测试检验订单状态在各个角色的操作下是否一致,保证用户提交订单之后管理员可以及时收到审核请求,司机接单之后用户端可以正确显示派单状态。系统测试结果会为之后的上线运行提供质量保证,保证平台在真实使用场景中可以稳定可靠地支撑业务运转。
系统测试使用黑盒测试法,根据需求规格说明书编写测试用例,只对输入输出、功能表现进行检验。功能测试包含所有已经实现的功能模块,根据角色分类设计测试场景,保证每一个类别的用户可以使用到所有的功能[20]。集成测试主要对模块间交互的正确性进行检验,主要检验叫车订单从用户端提交之后,经过管理员审核、司机接单、行程完成、费用结算等整个过程中数据传递和状态更新是否准确。测试数据采取模拟数据和真实场景数据相融合的方法,模拟数据用作边界条件的测试,真实场景数据用作系统在实际应用中表现的检验。缺陷管理采取分类登记和优先级划分的方式,严重问题先修复,一般问题按照计划修复后再做回归测试,保证修复过程中没有产生新的缺陷。
叫车服务功能测试
叫车服务测试主要验证用户提交出行需求的功能正确性。测试覆盖正常提交场景、地址信息缺失场景、重复提交场景等。叫车服务测试如表6-1所示。
表6-1 叫车服务测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
| 正常提交叫车订单 | 填写出发地址、终点地址、备注信息后提交 | 系统保存订单,状态为待审核,用户可在列表中查看 | 符合预期 |
| 地址信息缺失提交 | 出发地址或终点地址为空时提交订单 | 系统提示地址信息不完整,拒绝提交 | 符合预期 |
| 重复提交相同订单 | 连续两次提交相同地址的订单 | 系统正常处理两次请求,生成不同订单编号 | 符合预期 |
派单信息功能测试
派单信息测试主要验证司机查询与接收订单的功能正确性。测试覆盖待接单列表展示、接单操作、已接单状态更新等场景。派单信息测试如表6-2所示。
表6-2 派单信息测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
| 查看待接单列表 | 司机登录后进入派单页面 | 系统展示已派发但未接单的订单列表 | 符合预期 |
| 司机接单操作 | 在待接单列表中选择订单并确认接单 | 订单状态更新为已派单,用户端同步更新 | 符合预期 |
| 已接单订单查看 | 接单后查看已接单列表 | 系统展示已接单订单信息,包含行程状态 | 符合预期 |
到达信息功能测试
到达信息测试主要验证司机提交行程完成记录的功能正确性。测试覆盖到达信息填写、审核状态变更、费用触发等场景。到达信息测试如表6-3所示。
表6-3 到达信息测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
| 提交到达信息 | 司机到达目的地后填写备注并提交 | 系统记录到达时间与备注,状态为待审核 | 符合预期 |
| 到达信息审核 | 管理员对到达信息进行审核通过 | 状态更新为已通过,触发费用结算 | 符合预期 |
| 到达信息驳回 | 管理员审核不通过并填写意见 | 状态更新为未通过,司机收到驳回通知 | 符合预期 |
账单费用功能测试
账单费用测试主要验证费用结算与支付的功能正确性。测试覆盖费用生成、账单展示、支付操作等场景。账单费用测试如表6-4所示。
表6-4 账单费用测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
| 费用自动生成 | 到达信息审核通过后 | 系统根据行程信息计算费用,生成账单 | 符合预期 |
| 用户查看账单 | 用户进入账单页面 | 系统展示个人未支付账单列表与历史账单 | 符合预期 |
| 账单支付操作 | 用户选择账单进行支付 | 系统调起支付接口,成功后更新支付状态 | 符合预期 |
系统用户管理功能测试
系统用户管理测试主要验证管理员对用户审核的功能正确性。测试覆盖用户列表查看、资质审核、通知发送等场景。系统用户管理测试如表6-5所示。
表6-5 系统用户管理测试表
| 测试内容 | 测试步骤 | 预期结果 | 实际结果 |
| 查看待审核用户 | 管理员进入用户管理,筛选待审核状态 | 系统展示所有待审核用户信息 | 符合预期 |
| 司机资质审核通过 | 查看司机资质证明,点击审核通过 | 用户状态更新为已通过,系统发送通知 | 符合预期 |
| 用户资质审核驳回 | 审核不通过并填写驳回理由 | 用户状态更新为未通过,用户收到驳回通知 | 符合预期 |
智能打车平台的设计和实现以城市出行服务数字化转型的现实需求为出发点,用信息化手段提高乘客和司机之间信息匹配的效率。系统采用微信小程序和Spring Boot技术架构,创建起普通用户、司机用户、管理员三种角色的综合服务平台,完成了从叫车请求提出到行程结束结算的全部数字化管理工作。经过需求分析、系统设计、编码实现和测试验证等过程之后,平台主要的功能模块都达到了设计的要求,可以满足出行服务基本的业务场景。
系统采用前后端分离架构,前端用微信小程序降低用户的使用门槛,后端用Spring Boot框架提供稳定的后台服务支持,数据库用MySQL进行数据的可靠保存。功能模块按照角色权限来划分,普通用户端具有智能推荐浏览、新闻资讯查询、评论互动、叫车服务、通知中心等主要功能,司机用户端具备派单信息查询、路线地图导航、到达信息查询、账单费用查询等主要功能,管理员端涵盖系统用户管理、叫车服务管理、派单信息管理、到达信息管理、账单费用管理、系统管理、网站公告管理、资源管理等内容。测试结果说明各个模块的功能满足了需求规格的要求,数据的传递准确,操作的响应及时。
系统还存在着一定的不足。订单派发策略采取人工审核和手动派单的形式,并没有形成智能化的自动派单算法,在订单高峰期会致使响应速度受到影响。地图导航功能只实现了路线的显示和距离的估算,并没有加入实时路况信息以及动态路径的调节。平台没有接入真实的支付接口,账单支付用模拟的方式进行验证,和实际的商业应用存在差距。数据统计分析功能比较弱,不能对用户的动作、订单趋势、司机绩效等做深入的分析。
后续改进方向为智能化调度算法的加入,根据司机位置和订单分布数据,完成自动派单和动态定价,提高订单响应速度。地图导航模块可对接第三方地图SDK的实时路况服务,为司机提供实时路线规划建议。支付功能要对接真实的支付渠道,完善资金结算流程。数据分析模块可以使用数据可视化技术给管理者提供运营看板和决策支持,使平台由基本的功能支撑向数据驱动的运营发展。该平台应用前景广阔,可以给城市出行服务提供技术方案的借鉴,促进传统出行行业信息化的发展。
- 刘洋, 梁发周, 赖华琪, 等. 自走式草方格铺设车系统设计与沙地试验[J]. 南方农机, 2025, 56(24): 116-119.
- 李科蕊, 周燕云, 孙睿, 等. 基于计算机视觉的智能跟踪车系统设计[J]. 物联网技术, 2025, 15(21): 18-21.
- 丰文东, 肖永远, 成勇, 等. 基于智能控制与传感技术的火车车厢智能清车系统设计与实现[J]. 现代信息科技, 2024, 8(24): 175-181.
- 孙宇舸, 叶柠, 周孜耕. 信息采集智能车系统设计与实现[J]. 科技创新与应用, 2024, 14(31): 42-45.
- 李艳红. 新时代背景下嵌入式系统的智能泊车系统设计与应用分析[J]. 物联网技术, 2024, 14(7): 81-83.
- 麻吉辉, 王丽杰, 赵原真, 等. 智能停车场反向寻车系统设计[J]. 哈尔滨理工大学学报, 2023, 28(4): 23-32.
- 张安莉, 王娟, 袁安中, 等. 基于平行泊车路径规划的智能泊车系统设计[J]. 计算机测量与控制, 2023, 31(6): 168-175.
- Chen L, Yang H, Chen Z, et al. Research on Intelligent Disinfection-Vehicle System Design and Its Global Path Planning[J]. Electronics, 2023, 12(7): 1514.
- Dewangan, Kumar D, Sahu, et al. Towards the Design of Vision-Based Intelligent Vehicle System: Methodologies and Challenges[J]. Evolutionary Intelligence, 2022, 16(3): 855-896.
- Jie Y, Jinbao H, Xiongwei W. Design of Intelligent Parking System Based on Internet of Things and Cloud Platform[J]. International Journal of Grid and High Performance Computing, 2023, 15(2): 1-18.
- Sahraei A M. Design and Implementation of a Smart Parking System with Real-Time Slot Detection and Automated Gate Access[J]. Technologies, 2025, 13(11): 503.
- Sharma, Richa, Singh, et al. Fuzzy Based Energy Efficient Clustering for Designing WSN-Based Smart Parking Systems[J]. International Journal of Information Technology, 2021, 13(6): 2253-2259.
- 朱智胜.Spring Boot技术内幕[M].北京:机械工业出版社,2021:613.
- 埃德·耶伯格.Vue.js应用测试[M].北京:机械工业出版社,2022:405.
- 周德伟.MySQL数据库基础实例教程[M].北京:人民邮电出版社,2024:222.
- 温彩玲.基于Vue.js和Spring Boot的开放式实训基地管理平台的设计与开发[J].太原城市职业技术学院学报,2025,23(3):60-62.
- 朱书彪.中职《Java程序设计》项目课程开发与实践[D].桂林:广西师范大学,2025:1-120.
- 王希,戴靓婕.MySQL数据库技术在Web动态网页设计中的运用研究[J].软件,2024,45(7):77-79.
- 胡劲.数据库信息管理系统的逻辑架构与功能设计探析[J].电脑知识与技术,2023,19(19):96-98.
- 窦万峰,蒋锁良,杨俊.软件工程实验教程[M].北京:机械工业出版社,2023:624.
这篇论文的完成,意味着学生生涯即将画上句号。回想从选题到最终成稿的这段时光,每一次面对技术难题时的焦灼与解决后的释然,都成为成长路上清晰的印记。从最初对Spring Boot框架的陌生,到能够独立搭建完整后端服务,从微信小程序开发的懵懂,到完成三端功能模块的联调测试,这个过程不仅提升了技术能力,更磨练了面对复杂问题时的耐心与韧性。
父母多年来的支持是我能够安心完成学业的根基。他们从不施加过多压力,只是在每次通话中叮嘱注意身体,在每次回家时准备好可口的饭菜。这种平实而持久的关爱,让我在遇到困难时始终保有前行的底气。老师们的指导让我少走了许多弯路,课堂上学到的理论知识在项目实践中找到了应用场景,这种知行合一的过程加深了对专业的理解。同学之间的交流与互助,让许多技术难点在讨论中变得清晰,彼此在代码调试中的相互帮助,让这段求学时光多了几分温暖。
大学时光即将结束,但学习之路不会就此停止。这段项目经历让我明白,技术永远在演进,唯有保持学习的习惯,才能跟上发展的步伐。希望未来能在专业领域持续深耕,将所学知识应用于解决实际问题,不负这段求学岁月。
请关注点赞+私信博主,免费领取项目源码
更多推荐
所有评论(0)