IB智慧公交系统的设计与实现
目录
1 绪论
2 相关技术与工具
2.1技术架构和设计:
2.2编程语言和开发环境:
2.3数据库和数据管理:
2.4部署和运行环境:
2.5测试与质量保证:
2.6文档和支持:
3 需求分析
3.1系统目标
3.2角色分析
3.3系统功能分析
4 系统设计
4.1系统功能模块设计
4.2数据库设计
4.2.1 数据库实体设计
4.2.2 数据库表设计
5 系统实现
5.1界面设计实现
5.2功能代码实现
5.3模块页面展示
6 总结
6.1收获和体会
6.2对课程的意见和建议
6.3对老师的意见和建议
6.4总结和展望
6.5致谢
附录
1 绪论
智慧公交项目(简称IB)是湖北师范大学人工智能与计算机学院实训期间开发的应用软件。旨在提高员工的日常工作便捷性、工作效率,降低管理及运营成本。本软件系统将为该公司提供车辆信息管理、员工信息管理、线路信息管理、站点信息管理、排班方案管理等功能。利用这些功能充分满足该公交公司日常工作中的管理及信息同步需求。
2 相关技术与工具
2.1技术架构和设计:
系统架构:智慧公交系统采用前后端分离架构,实现前端与后端的解耦,提升系统的可维护性和开发效率。前端基于 Vue.js 框架构建用户界面,利用其组件化开发模式和响应式设计特性,为管理员、调度员和驾驶员提供流畅交互体验;后端采用 Spring Boot 框架搭建服务端,借助其快速开发、自动配置和微服务整合能力,高效处理业务逻辑与数据交互;数据库服务器则负责存储和管理系统各类数据,三者通过标准化 API 接口进行通信,形成高效协作的系统架构。
设计原则:系统遵循前后端分离的设计原则,前端专注于用户界面展示与交互逻辑实现,通过 Vue 组件实现视图层的灵活渲染;后端依托 Spring Boot 构建业务逻辑与数据处理模块,提供稳定可靠的 API 服务。这种分离模式有效降低了系统耦合度,使前后端开发团队可并行工作,同时便于后续功能扩展与技术升级,极大提高了代码的可维护性和系统的可扩展性。
数据流图:展示不同用户(管理员、调度员和驾驶员)对智慧公交系统中各个板块信息管理相关操作的数据流程。
2.2编程语言和开发环境:
编程语言:
前端:JavaScript(Vue 3)
后端:Java(Spring Boot)
集成开发环境(IDE):IntelliJ IDEA(后端)、VS Code(前端)
版本控制工具:Git + Gitee(代码托管与协作)
构建工具:Maven(后端)、npm(前端)
2.3数据库和数据管理:
数据库系统:使用MySQL作为主要的关系型数据库管理系统,用于存储车辆信息、站点信息、路线信息、排班信息和员工信息等。
数据模型:定义站点、线路、排班等核心数据的关系模型,确保数据的一致性和完整性。
数据备份和恢复:定期对数据库进行备份,并设立紧急恢复计划以应对意外情况。
2.4部署和运行环境:
部署环境:推荐在Linux服务器上部署。
运行时依赖:要求运行环境中安装Java 21和MySQL8.0数据库环境。
2.5测试与质量保证:
测试策略:采用分层测试,包含单元、集成、系统及用户验收测试。单元测试用 JUnit验证代码逻辑,集成测试关注前后端交互,系统测试验证性能与安全性,用户验收测试确保功能符合需求。引入自动化测试进行持续集成与回归测试。
质量保证措施:实施代码审查、持续集成和自动化部署,保证每次更新的稳定性和可靠性。
2.6文档和支持:
用户文档:用户文档主要包含系统使用手册与操作指南,详细介绍智慧公交系统各功能模块的操作流程。涵盖车辆、员工、线路、站点等信息的录入、查询、修改与删除操作,排班方案制定与调整步骤,以及系统设置、权限管理等内容。同时,通过图文结合的方式,直观展示系统界面交互细节,帮助管理员、调度员和驾驶员快速熟悉和高效使用系统。
技术支持:提供多渠道技术支持服务,用户可通过热线电话、企业邮箱、在线工单系统提交技术问题。技术支持团队 7×12 小时在线响应,对于紧急故障,确保 1 小时内给出解决方案,普通问题 24 小时内完成响应处理。此外,定期对系统进行巡检与维护,根据用户反馈及时优化系统功能,发布版本更新,保障系统稳定运行。
3 需求分析
智慧公交系统是现代城市交通管理的重要组成部分,旨在通过先进的信息技术手段,提高公共交通的运营效率、安全性和便捷性。本需求分析旨在明确智慧公交系统的功能、性能、可靠性、安全性等关键需求,为系统的设计与实施提供基础。
3.1系统目标
智慧公交系统致力于打造高效、智能、安全的公交管理平台。通过信息化手段实现车辆、员工、线路、站点等全要素数字化管理,提升公交公司运营效率,降低管理成本;利用智能排班、实时调度等功能优化资源配置,减少人工操作误差;构建安全可靠的数据体系,保障运营数据和乘客隐私安全;同时,为管理员、调度员、驾驶员提供便捷易用的操作界面,提高日常工作协同效率,最终推动公交服务向智能化、精细化方向升级,助力城市公共交通高质量发展。
3.2角色分析
为实现城市公交业务的智能化,对如何实时动态排班进行合理安排,本系统的主要使用角色为管理员、调度员和驾驶员,如表3-1所示。
用户角色 | 平台中用户的角色描述 | |
内部用户 | 管理员 | 平台最大的权限角色,可以进行平台管理 |
调度员 | 可以管理排班方案 | |
驾驶员 | 只能够查询排班方案 |
表3-1 角色分析表
3.3系统功能分析
管理员是系统中最大的权限角色,可以进行平台管理,包括各个模块的操作;调度员仅有排班信息管理模块的功能和查询其它模块的权限;驾驶员仅能登录用户而后查询自己的排班信息。
下面附上三级数据流图,分析系统的功能需求,理清数据的输入、处理和输出过程,帮助识别系统中的各种功能和子功能,以及它们之间的关系。
图3-2 智慧公交系统顶层流图
图3-3 智慧公交系统0级流图
图3-4 智慧公交系统1级流图
图3-5 智慧公交系统2级流图
4 系统设计
4.1系统功能模块设计
结构功能图能够清晰地展示智慧公交系统的整体架构和组成部分,包括各个模块、子系统以及它们之间的关系和依赖,如图4-1所示为智慧公交系统结构功能图。
图4-1 智慧公交系统结构功能图
在智慧公交系统的建立过程中,概念模型,如图4-2所示,为系统架构的设计提供了指导。它帮助确定系统的主要组成部分、模块之间的关系和依赖,以及数据的流动路径。这种清晰的指导有助于设计出高效、可扩展和易于维护的系统结构。
图4-2 智慧公交系统概念模型
智慧公交系统建立逻辑模型的作用是将概念模型中的高层抽象转化为具体的实现路径和操作细节,为系统开发提供详细的设计和实施指南,确保系统能够有效地满足业务需求并符合技术规范,如图4-3所示。
图4-3 智慧公交系统逻辑模型
智慧公交系统建立物理模型的作用是将逻辑设计具体化为实际的部署方案和操作指南,确保系统能够有效地在现实环境中运行和维护,同时为未来的扩展和优化提供可行性和支持,如图4-4所示。
图4-4 智慧公交系统物理模型
4.2数据库设计
4.2.1 数据库实体设计
图4-5 用户管理局部ER图
图4-6 线路与站点关系局部ER图
图4-7排班管理局部ER图
图4-8 总体ER图
4.2.2 数据库表设计
数据字典记录了系统中使用的所有数据对象(如数据表、字段、数据元素)的详细定义和描述,并对应着每张数据库表。这包括每个数据项的名称、类型、长度、格式、含义等信息,帮助确保所有参与开发和维护系统的人员对数据结构和含义有一致的理解。
图4-9 智慧公交系统数据字典
5 系统实现
5.1界面设计实现
界面设计实现以用户需求为核心,采用分层设计原则,通过 Vue 3 组件化开发构建多角色适配界面。管理员界面集成数据看板与表格管理功能,支持车辆、员工信息的批量操作;调度员界面以日历式排班看板为核心,通过颜色标识直观展示资源占用状态;驾驶员界面聚焦任务卡片与状态反馈按钮,简化操作流程。前端基于 Element Plus 组件库统一视觉风格,采用卡片式布局与抽屉式顶边栏优化信息层级,交互上添加按钮加载动效与表单校验提示。界面色彩以蓝色为主色调传递科技感,搭配绿色与红色区分正常 / 异常状态,同时通过响应式布局适配 PC 端与车载终端,确保多场景下操作流畅与信息清晰呈现。登录方式采用MD5加密算法进行加密,登录界面展示如图5-1所示。
图5-1 智慧公交系统登录界面图
成功登录后进入模块管理界面,如图5-2所示,可根据需要自行选择各个板块进行相关操作,不同的用户角色拥有不同的访问权限及不同界面展示。
图5-2 管理员,调度员和驾驶员界面区别
5.2功能代码实现
Idea与MySQL数据库连接,包括yaml配置文件和SQL脚本导入运行生成bus数据库。
图5-3 智慧公交系统yaml配置文件图
图5-4 SQL脚本导入运行生成bus数据库
登录功能的拦截器,解析用户携带的JWT令牌,将role权限字段存入ThreadLocal,在用户的会话过程中,随时可以取出来用于判断用户的权限。
图5-5 登录拦截器实现
5.3模块页面展示
车辆信息管理:根据车牌号查询,根据车辆编号删除,修改需要提供所有信息,添加车辆的所有信息。
图5-6 车辆信息管理操作界面
站点信息管理:根据站点名称查询,根据站点编号删除,修改需要提供所有信息,添加站点的所有信息。
图5-7 站点信息管理操作界面
线路信息管理:根据线路名称和方向查询,根据线路编号删除,修改需要提供所有信息,添加线路的所有信息。
图5-8 线路信息管理操作界面
排班信息管理:根据排班编号查询和删除,添加和修改皆需提供所有信息。
图5-9 排班信息管理操作界面
员工信息管理:根据登录名查询,根据员工编号删除,修改需要提供所有信息,添加需要除编号以外的所有信息。
图5-10 员工信息管理操作界面
修改密码:需要输入当前用户的旧密码,和两次一样的新密码才可更改密码,更改后下次登录需要使用新密码登录。
图5-11 修改密码操作界面
6 总结
6.1收获和体会
设计智慧公交系统是一个涉及多方面知识和技能的综合性项目,它不仅考验了技术实现能力,还让我对公共交通系统的运作有了更深入的理解。以下是我在这个过程中的一些主要收获和体会:
学到的知识:
前后端分离架构的实战应用:通过 Vue 3 与 Spring Boot 的技术栈组合,深刻理解了前后端解耦的优势:前端专注于 UI 交互与组件化开发(如 Element Plus 组件库的高效复用),后端聚焦业务逻辑与 API 设计(如 RESTful 接口规范)。这种模式不仅提升了开发并行效率,也让代码维护性显著增强。
数据库设计的系统性思维:从 ER 图建模到数据表结构设计(如车辆、线路、排班等实体关系),体会到数据模型对业务流程的支撑作用。特别是在处理多表关联(如线路与站点的 “一对多” 关系)时,需兼顾数据完整性与查询效率,例如通过索引优化提升复杂查询性能,通过主从备份策略保障数据安全性,这些实践让理论层面的数据库知识转化为可落地的解决方案。
角色权限与业务场景的深度绑定:通过管理员、调度员、驾驶员三类角色的用例分析,体会到 “需求源于场景” 的核心原则。例如调度员需要日历式排班看板与资源冲突可视化,而驾驶员仅需简化的任务接收界面,这种差异化设计必须基于对用户实际工作流程的调研(如调度员每日排班的高频操作场景),而非单纯的技术实现。
本次实训项目将理论知识(如 MVC 设计模式、数据库范式)与工程实践深度结合,不仅掌握了 Vue3+Spring Boot 技术栈的落地能力,更培养了从需求分析到系统实现的全流程思维。最大的体会在于:软件开发不仅是代码的堆砌,更是对用户需求的精准理解、对技术方案的权衡取舍、对质量与效率的持续追求 —— 这些认知将成为未来技术实践的重要基石。
6.2对课程的意见和建议
该实训整体节奏把控较为平稳,但是由于没有提前接触过相关知识,大部分同学直接接触该项目工程代码可能会一脸茫然,会感觉这次实训难度较高、任务较重,而且开发网站一般是多人合作比较好,即使是学过相关技术的同学,有的是偏向于前端,有的是偏向于后端,但是实训的要求是一个人做一整个网站出来,这种全栈式要求开发,无法让同学们专注于如何优化网站性能和使用更佳的技术栈,仅仅只是要求做出来即可。所以我觉得可以改成多人合作,按个人职责答辩,按个人完成给分,按权重评分,也可以很好的防止有人摸鱼。
6.3对老师的意见和建议
有时候老师的教学方法和知识点可能偏向传统,而未充分利用现代教学技术和比较新的知识点和技术。可以在传统教学上拓展性的讲讲目前比较新的一些技术,引导同学们来了解一下,拓宽同学们的知识面。
6.4总结和展望
总结:参与智慧公交系统实训项目,我在技术应用与工程实践中实现了从理论到实操的跨越。通过搭建 Vue 3 前端界面与 Spring Boot 后端服务,深刻理解了前后端分离架构的协作逻辑,尤其是在处理车辆管理模块的表单验证与数据交互时,学会了用组件化思维拆解复杂功能(如将排班日历封装为可复用组件)。数据库设计中,从 ER 图建模到 SQL 脚本优化的全过程实践,让我掌握了多表关联查询与索引优化的技巧,也意识到数据安全不仅是技术规范,更是业务持续运行的生命线(如每日备份演练的必要性)。最深刻的体会是需求分析的重要性 —— 当发现调度员实际操作中更依赖可视化排班看板而非传统表格时,我学会了从用户场景倒推界面设计,而非单纯按技术逻辑实现功能。
展望:未来我将从三个方向深化实训所得:一是深入学习微服务架构,尝试用 Spring Cloud 重构后端服务,结合 Docker 容器化部署解决单体架构的高并发性能瓶颈。同时重点引入 Redis 分布式缓存,将车辆实时位置、高频查询的排班信息等热数据存入 Redis,通过 LRU 缓存淘汰策略和定时失效机制优化访问效率,预计可降低 30% 的数据库查询压力。二是探索 Redis 在实时数据交互中的应用,利用其 Pub/Sub 发布订阅机制实现驾驶员任务状态的毫秒级推送(如排班变更实时通知),并基于 Redis 的 List 结构构建高效任务队列,优化调度员的派单流程。三是在前端集成 Redis.js 实现本地缓存,减少车载终端的网络请求频率,结合 Vue 3 的响应式特性实现弱网环境下的界面流畅交互。
针对 Redis 与业务的深度整合,我计划重点解决数据一致性问题:通过RabbitMQ消息队列,实现数据库与 Redis 缓存的异步同步;在高并发场景下采用 “缓存击穿预防” 策略(如互斥锁 + 随机过期时间),避免热点数据失效导致的数据库压力。这些实践不仅能提升智慧公交系统的实时性与稳定性,也能让我系统掌握分布式缓存的设计与调优,为后续拓展动态调度、客流预测等功能奠定技术基础。
6.5致谢
非常感谢童老师在这次数据库实训中的悉心指导和辛勤付出。老师不仅在课堂上教授了我们丰富的数据库知识,还在实践交流中耐心解答了我们的问题,让我们能够真正理解和应用所学内容。作为本次参与实训的学生之一,我衷心感谢老师的教导和支持。
附录
1.实训验收答辩时,老师所提问题:
①如何实现排班信息管理中,任意一条线路的起始站和终点站的设置,要求起始站点的选择固定只能为一条线路,终点站可以选择线路上所有的站点;
②如何实现进行线路设置时,查看每个站点之间的距离远近,使得线路设计更加合理
2.问题回答:
①排班中起始站点的下拉框只回显该线路中站点顺序为第一个的站点,即可完成起始站的设置;
②两种方法,一种是引入Redis,使用Redis中的GEO,将每个站点的经度和纬度坐标放入缓存中,Redis可根据坐标来计算两个点之间的坐标,得到距离,再让前端进行渲染即可;另一种方法则是直接调用百度地图或者高德地图等现有的API,直接计算两个站点之间的距离,还可以在地图上显示坐标。
说明:
该报告的设计部分模型图以及概念图都有两份,一份为实训要求的角色权限模式,一种是我个人的实现方式。
项目的前端工程地址为:https://github.com/liangkingjin/IB-
项目的后端工程地址为:https://gitee.com/jin-xiao-liang/SqlServerTest
感兴趣的宝子可以关注一波,后续会更新更多有用的知识!!!