感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以关注一下,希望帮助更多的人顺利毕业~
汽车修理管理系统
摘 要:随着汽车保有量的持续增长,汽车修理行业的管理需求日益凸显。本研究旨在通过开发一套汽车修理管理系统来提升维修企业的运营效率和服务质量。
系统实现了针对普通用户、维修人员和管理员的多种功能模块。普通用户可以进行汽车登记、预约服务和维修订单查询等操作;维修人员能够处理预约请求、审核维修任务以及管理零件库存;管理员则负责系统的全面管理,包括用户权限设置、数据统计分析等。技术上采用了Spring Boot框架以简化开发流程,并利用MySQL数据库保证了数据的安全性和稳定性。整个系统界面友好、操作简便,支持高并发访问。
本研究的价值在于提供了一种有效的解决方案,帮助汽车修理企业实现信息化管理,从而降低运营成本、提高工作效率和服务满意度。此外,系统的灵活性和扩展性也使得其能够根据企业发展的不同阶段进行相应的调整和优化,具有广泛的应用前景和推广价值。
关键词: 汽车修理管理系统;Spring Boot;MySQL;Java
Automotive repair management system
Abstract:With the continuous growth of car ownership, the management needs of the automobile repair industry are becoming increasingly prominent. The purpose of this study is to improve the operational efficiency and service quality of maintenance enterprises by developing an automobile repair management system.
The system realizes a variety of functional modules for ordinary users, maintenance personnel and administrators. Ordinary users can carry out operations such as car registration, appointment service and maintenance order inquiry; Maintenance personnel are able to handle appointment requests, review repair tasks, and manage parts inventory; The administrator is responsible for the overall management of the system, including user permission settings, data statistical analysis, etc. Technically, the Spring Boot framework is used to simplify the development process, and the MySQL database is used to ensure the security and stability of the data. The whole system has a friendly interface and easy operation, and supports high-concurrency access.
The value of this study is that it provides an effective solution to help auto repair enterprises realize information management, so as to reduce operating costs, improve work efficiency and service satisfaction. In addition, the flexibility and scalability of the system also enable it to be adjusted and optimized accordingly according to the different stages of enterprise development, and has a wide range of application prospects and promotion value.
Keywords:Automotive Repair Management System; Spring Boot; MySQL; Java
目 录
第1章绪 论
1.1研究背景
随着全球经济的发展和人民生活水平的提高,汽车已经成为许多家庭不可或缺的交通工具,导致汽车保有量逐年递增。随之而来的是汽车修理行业规模的不断扩大以及业务复杂度的显著增加。然而,目前多数汽车修理企业仍在使用传统的管理方式,如纸质记录、手工报表等,这些方法不仅效率低下,而且容易出错,难以满足现代企业管理的需求。此外,不同角色之间信息共享不畅,进一步加剧了管理上的混乱,使得服务质量难以得到有效保障。
在此背景下,本研究旨在通过信息化手段改善汽车修理企业的管理现状。现有的管理模式已无法适应快速发展的市场需求,急需一种能够整合预约登记、维修任务分配、订单管理和零件库存等功能于一体的管理系统来提升工作效率和服务质量。因此,开发一套基于Spring Boot、Java和MySQL技术栈的汽车修理管理系统显得尤为必要,以期解决上述问题并推动行业的数字化转型。
1.2研究目的和意义
本研究的目的在于设计并实现一个高效、可靠的汽车修理管理系统,通过集成现代化的信息技术手段如Spring Boot、Java和MySQL,解决当前汽车修理行业普遍存在的管理不善、信息共享困难及工作效率低下等问题。该系统旨在为不同用户提供定制化的功能模块,包括汽车登记管理、预约信息处理、维修任务分配与跟踪以及零件库存管理等,从而实现对汽车修理业务全流程的数字化管理。
本研究的意义在于推动汽车修理行业的信息化转型,不仅能够帮助企业提升内部管理效率和服务质量,还能增强客户满意度和企业竞争力。通过建立这样一个系统,可以显著减少人工操作带来的错误和成本,促进信息流通和资源共享,进而支持企业做出更加精准的业务决策。此外,系统的灵活性和扩展性也为未来进一步的功能拓展和技术升级提供了可能,对于行业的长远发展具有重要参考价值。
1.3国内外研究现状
在国内,随着汽车保有量的快速增长以及信息技术的发展,汽车修理管理系统的研发逐渐受到重视。早期的研究多集中在如何将传统的手工管理模式转变为电子化记录,如利用简单的数据库系统进行客户信息和维修记录的管理。近年来,随着互联网技术的进步,尤其是云计算、大数据及移动互联网的应用,越来越多的企业开始采用集成度更高的管理系统,实现在线预约、远程诊断等功能。然而,整体而言,国内的汽车修理管理系统在智能化、自动化方面仍有较大提升空间,特别是在用户体验、系统集成度和数据安全性上还有待加强。
在国外,特别是欧美发达国家,汽车修理管理系统的发展起步较早,且技术相对成熟。自上世纪末以来,随着计算机技术的普及,国外企业就开始探索使用计算机辅助管理系统来优化内部流程。进入21世纪后,随着物联网、人工智能等新兴技术的兴起,国外的汽车修理管理系统逐步向智能化方向发展,实现了从车辆故障自动诊断到智能调度的一体化服务。如今,国外的一些领先系统不仅能够支持高效的维修任务分配和零件库存管理,还能通过数据分析预测潜在的维修需求,极大地提升了工作效率和服务质量。同时,这些系统普遍注重用户隐私保护和数据安全,为全球同行树立了标杆。
1.4论文结构与章节安排
本文的结构按逻辑顺序分为以下几个章节:
第1章绪论,本章节介绍研究背景和目的意义,回顾当前研究现状,并阐明本文主要组织结构。
第2章系统关键技术,本章节将对汽车修理管理系统的实现关键技术进行简要介绍。
第3章系统分析,本章节基于市场调研,分析汽车修理管理系统的可行性、功能、角色、性能等需求,明确各模块的业务需求。
第4章系统设计,本章节详细阐述系统的整体架构设计,包括前后端结构、数据库设计及功能模块的设计思路。
第5章系统实现,本章节介绍系统各主要模块的具体实现,包括代码示例、业务逻辑及界面设计等。
第6章系统测试,本章节描述系统的测试方法及结果,分析系统的性能、稳定性及用户反馈。
第7章结论,本章节对主要对研究成果进行总结。
第2章
关键技术介绍
2.1Java语言
Java作为一种广泛使用的面向对象编程语言[1],为本系统提供了强大的开发基础。它具备跨平台特性、丰富的类库和稳定的安全性能,能够确保系统的高效运行和良好的扩展性。在汽车修理管理系统中,Java[2]用于编写后端业务逻辑,处理包括用户管理、信息管理在内的各种复杂操作,同时支持高并发访问,保证了系统的响应速度和稳定性。
2.2Spring Boot框架
Spring Boot是基于Spring框架的快速开发平台[3],极大地简化了基于Java的应用程序构建过程。它通过自动配置和约定优于配置的原则,减少了繁琐的设置工作,使开发者可以更专注于业务逻辑的实现。在本系统中,Spring Boot[4]不仅用于搭建RESTful API服务,提供前后端数据交互的接口,还集成了安全认证、事务管理和缓存等功能,以提升系统的整体性能和安全性,确保汽车修理管理系统的稳定性和可维护性。
2.3MySQL数据库
作为一款流行的开源关系型数据库管理系统,MySQL[5]以其高性能、可靠性和易于使用的特点成为本系统的数据存储解决方案。它支持复杂的查询和事务处理,适用于存储和管理大量的功能模块信息、用户数据以及交互记录。通过优化表结构设计和索引策略,MySQL能够快速响应系统的读写请求,保障数据的一致性和完整性,同时为数据分析和报表生成提供了坚实的基础[6]。
2.4B/S体系结构
B/S体系,即Browser/Server体系[7],是一种常见的网络应用程序架构。其工作原理基于客户端与服务器之间的请求-响应模型。用户通过浏览器向服务器发送请求,服务器接收到请求后进行处理,并生成相应的响应结果,最终将响应返回给客户端。浏览器接收到服务器返回的响应后,解析其中的标记语言(如HTML[8]),并根据CSS样式表和JavaScript脚本来渲染页面,呈现给用户。用户可以与页面进行交互,例如点击链接、填写表单等操作,这些操作会触发新的请求,循环执行上述过程。
第3章
系统分析
3.1可行性分析
3.1.1技术可行性
系统基于SpringBoot框架开发,采用Java语言实现业务逻辑,搭配MySQL数据库进行数据存储与管理,技术方案成熟稳定。通过集成Redis缓存优化数据访问性能,提升开发与维护效率。由于本系统专注于后端服务,提供标准化的RESTful API接口,支持与其他前端应用或第三方系统无缝对接,具备良好的扩展性与兼容性,完全满足开发需求。
3.1.2经济可行性
系统开发成本可控,主要涉及开发人员薪资、服务器部署及软硬件投入,费用相对较低。借助开源技术和云计算资源,可显著降低初期投入与后续运维成本。系统投入使用后,通过提升管理效率和服务质量,能够为企业创造可观的经济效益,具备良好的投资回报潜力。
3.1.3操作可行性
系统设计注重用户友好性,提供直观的操作界面和清晰的功能模块划分,便于不同角色快速上手。同时,多角色权限管理和流程化任务分配机制,简化了日常操作步骤。完善的帮助文档和培训支持,进一步降低了使用门槛,确保系统在实际应用中的高效运行。
3.2系统功能需求分析
本汽车修理管理系统旨在为普通用户、维修人员和管理员提供全面的在线服务与管理功能。系统需支持汽车登记、预约信息管理、维修任务分配与跟踪、维修订单处理以及零件库存管理等核心业务流程,同时确保数据的安全性和操作的便捷性,以提高整体工作效率和服务质量。具体功能描述如下:
(1)普通用户模块:
后台首页:展示用户的基本信息和最新通知,提供快捷入口访问其他功能模块。
汽车登记管理:允许用户添加车辆的基本信息进行登记,以便后续的服务预约。
预约信息管理:用户可以查看并管理自己的预约记录,包括取消或修改预约时间。
维修任务管理:用户能够跟踪已提交维修任务的状态更新,了解维修进度。
维修订单管理:查看所有相关维修订单的详细信息,包括费用明细和状态更新。
(2)维修人员模块:
后台首页:显示维修订单和零件使用情况的统计数据,帮助快速掌握工作重点。
汽车登记管理:与普通用户类似,但具有更多权限,如编辑汽车登记。
预约信息管理:审核和处理用户的预约请求,根据实际情况调整预约安排。
维修任务管理:负责审核维修任务,并实时更新维修订单的状态和详情。
维修订单管理:详细管理和监控每个维修订单的进展,确保按时完成。
零件信息管理:监控和维护零件库存信息,保证维修工作的顺利进行。
员工信息管理:查看和管理员工的基本信息,便于内部管理和调度。
发放工资管理:查看自己的发放工资信息。
(3)管理员模块:
后台首页:提供详细的维修订单和零件库存统计,辅助决策制定。
系统用户管理:创建、删除和管理系统的各类用户账户及其权限。
汽车登记管理:不仅可添加新车辆登记信息,还能审核其准确性。
预约信息管理:审核所有预约请求,并合理分配维修任务给合适的维修人员。
维修任务管理:全面监督维修任务的执行情况,确保每项任务按计划进行。
维修订单管理:直接在系统中创建新的维修订单,记录必要的维修细节。
零件信息管理:新增零件信息到数据库,确保库存信息准确无误。
零件入库管理:处理新进货的零件入库流程,更新库存数量。
员工信息管理:增加新员工的信息资料,完善企业人力资源库。
发放工资管理:准备和添加工资发放的相关记录,确保薪资支付流程顺畅。
3.3系统用例分析
3.3.1普通用户用例分析
普通用户主要通过系统进行汽车的在线登记,以便于后续服务。他们能够轻松管理自己的预约信息,包括查看、修改和取消预约。此外,用户可以跟踪维修任务的状态,了解维修进度,并查看所有相关的维修订单详情。普通用户角色用例图如下所示。

图3-1 普通用户用例图
3.3.2维修人员用例分析
维修人员利用系统高效地处理日常工作任务。他们首先审核并处理来自用户的预约请求,然后根据实际情况安排维修任务。维修过程中,维修人员实时更新维修订单状态,并管理零件库存以保证维修工作的顺利进行。此外,还涉及员工信息管理和工资发放等内部事务。维修人员角色用例图如下所示。

图3-2 维修人员用例图
3.3.3管理员用例分析
作为系统的最高权限持有者,管理员负责全面管理系统的各个方面。这包括对用户账户及其权限的管理、汽车登记信息的审核、预约信息的分配与管理、监督维修任务执行情况以及维护零件库存信息。同时,管理员还需处理员工信息录入及工资发放事宜。管理员角色用例图如下所示。

图3-3 管理员用例图
3.4非功能需求分析
系统非功能需求指的是性能需求,即对一个系统的性能需求进行分析和定义的过程。在进行性能需求分析时,因此汽车修理管理系统的设计与实现主要需要考虑以下几个方面的性能需求:
响应时间:响应时间是指系统在接收到请求后,作出响应的时间。根据具体的业务需求和用户体验要求,可以确定系统在不同场景下的响应时间要求。
吞吐量:吞吐量是指系统在一定时间内处理的事务或请求的数量。根据业务需求和用户量的估计,可以确定系统需要支持的最大吞吐量。
并发用户数:并发用户数是指系统在同时使用的用户数量。根据预期的用户量和并发访问需求,可以确定系统需要支持的最大并发用户数。
可扩展性:可扩展性是指系统在面对用户量增加或并发访问需求增加时,能否通过增加硬件资源或调整系统架构来满足需求。根据预期的用户增长和扩展计划,可以确定系统需要具备的可扩展性要求。
故障处理能力:系统对故障的处理能力是指在出现错误或故障时,系统能够快速、准确地识别、定位并处理故障的能力。根据业务的重要性和对故障处理的要求,可以确定系统需要具备的故障处理能力。
安全性:系统在性能需求分析中,也需考虑安全方面的需求,如数据的保密性、完整性和可用性等。根据具体的安全需求和合规要求,可以确定系统需要满足的安全性需求。
通过对这些性能需求进行详细分析和定义,可以为汽车修理管理系统的设计和开发提供指导,确保系统在满足预期的性能需求的同时,具备良好的性能和可靠性。
3.5系统流程分析
3.5.1程序操作流程
用户访问平台网站,可以选择进行注册或登录操作。注册成功后,用户可以使用注册的账号登录平台。登录后的用户可以进入系统功能界面,使用自己权限内的功能操作。程序操作流程图如下图所示。

图3-5 程序操作流程图
3.5.2登录流程
用户访问平台的网站,进入登录页面页面,输入其用户名和密码,后端服务接收登录请求,验证用户提供的用户名和密码是否匹配数据库中存储的信息,验证通过即可登录成功。登录流程图如下图所示。

图3-6 登录流程图
3.5.3注册流程
未有账号的用户可进入注册界面进行注册操作,填写注册表格,包括用户名、密码、电子邮件等必要信息。后台系统验证并保存用户提交的信息。分配唯一用户标识符。注册成功后,用户可以使用账号密码进行登录。用户注册流程图如下图所示。

图3-7 注册流程图
第4章系统设计
4.1系统架构设计
从技术角度来看,汽车修理管理系统的架构设计至关重要。我们将采用MVC架构,包括表现层、业务逻辑层和数据访问层。表现层负责用户界面展示,业务逻辑层处理核心功能逻辑,数据访问层负责数据库交互。通过三层架构模式,确保系统的可靠性和可扩展性。
系统架构图如图4-1所示。

图4-1 系统架构图
4.2功能模块设计
通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。系统总体功能模块图如下图所示。

图4-2 系统功能模块图
4.3数据库设计
4.3.1概念设计
借助先进的系统,E-R图使其他用户可以快速轻松地了解系统的功能以及他们之间的关系。根据汽车修理管理系统分析结果,本汽车修理管理系统总体E-R图如下图所示。

图4-3 系统总体E-R图
4.3.2逻辑设计
所有系统的应用数据相互区分。一旦在相应的系统中实现,它们将与自己相应的网络和服务器通信。所以这个系统可以连接这些数据。当我们选择桥梁截面时,以下将简要介绍如何建立系统。在单击上一个按键的时候,就会自动在对话框中弹出数据源的名字,之后再单击下一个按键时,就在填写相对应的身份验证和登录信息。按照系统功能设计的特点与职能模块的分类,汽车修理管理系统的总体设计和实施过程一共涉及到了几个资料表格。
以下就介绍了一些根据各类别主要数据库表的设计结构以及基本功能建立数据库表:
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | token_id | int | 是 | 是 | 临时访问牌ID | |
| 2 | token | varchar | 64 | 否 | 否 | 临时访问牌 |
| 3 | info | text | 65535 | 否 | 否 | 信息 |
| 4 | maxage | int | 是 | 否 | 最大寿命:默认2小时 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | user_id | int | 是 | 否 | 用户编号 |
表 4-2-auth(用户权限管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | auth_id | int | 是 | 是 | 授权ID | |
| 2 | user_group | varchar | 64 | 否 | 否 | 用户组 |
| 3 | mod_name | varchar | 64 | 否 | 否 | 模块名 |
| 4 | table_name | varchar | 64 | 否 | 否 | 表名 |
| 5 | page_title | varchar | 255 | 否 | 否 | 页面标题 |
| 6 | path | varchar | 255 | 否 | 否 | 路由路径 |
| 7 | parent | varchar | 64 | 否 | 否 | 父级菜单 |
| 8 | parent_sort | int | 是 | 否 | 父级菜单排序 | |
| 9 | position | varchar | 32 | 否 | 否 | 位置 |
| 10 | mode | varchar | 32 | 是 | 否 | 跳转方式 |
| 11 | add | tinyint | 是 | 否 | 是否可增加 | |
| 12 | del | tinyint | 是 | 否 | 是否可删除 | |
| 13 | set | tinyint | 是 | 否 | 是否可修改 | |
| 14 | get | tinyint | 是 | 否 | 是否可查看 | |
| 15 | field_add | text | 65535 | 否 | 否 | 添加字段 |
| 16 | field_set | text | 65535 | 否 | 否 | 修改字段 |
| 17 | field_get | text | 65535 | 否 | 否 | 查询字段 |
| 18 | table_nav_name | varchar | 500 | 否 | 否 | 跨表导航名称 |
| 19 | table_nav | varchar | 500 | 否 | 否 | 跨表导航 |
| 20 | option | text | 65535 | 否 | 否 | 配置 |
| 21 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 22 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-3-car_registration(汽车登记)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | car_registration_id | int | 是 | 是 | 汽车登记ID | |
| 2 | license_plate_number | varchar | 64 | 是 | 是 | 车牌号 |
| 3 | vehicle_cover | varchar | 255 | 否 | 否 | 车辆封面 |
| 4 | vehicle_name | varchar | 64 | 否 | 否 | 车辆名称 |
| 5 | vehicle_specifications | varchar | 64 | 否 | 否 | 车辆规格 |
| 6 | vehicle_model | varchar | 64 | 否 | 否 | 车辆型号 |
| 7 | owner_user | int | 否 | 否 | 车主用户 | |
| 8 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 9 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 10 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 11 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 12 | reservation_information_limit_times | int | 是 | 否 | 维修预约限制次数 | |
| 13 | create_time | datetime | 是 | 否 | 创建时间 | |
| 14 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-4-code_token(验证码)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | code_token_id | int | 是 | 是 | 验证码ID | |
| 2 | token | varchar | 255 | 否 | 否 | 令牌 |
| 3 | code | varchar | 255 | 否 | 否 | 验证码 |
| 4 | expire_time | timestamp | 是 | 否 | 失效时间 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-5-employee_information(员工信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | employee_information_id | int | 是 | 是 | 员工信息ID | |
| 2 | employee_user | int | 否 | 否 | 员工用户 | |
| 3 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 4 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 5 | basic_salary | double | 否 | 否 | 基本工资 | |
| 6 | hourly_wage | double | 否 | 否 | 小时工资 | |
| 7 | payment_of_wages_limit_times | int | 是 | 否 | 发放工资限制次数 | |
| 8 | create_time | datetime | 是 | 否 | 创建时间 | |
| 9 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-6-employee_user(员工用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | employee_user_id | int | 是 | 是 | 员工用户ID | |
| 2 | employee_id | varchar | 64 | 是 | 是 | 员工工号 |
| 3 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 5 | user_id | int | 是 | 否 | 用户ID | |
| 6 | create_time | datetime | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-7-hits(用户点击)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | hits_id | int | 是 | 是 | 点赞ID | |
| 2 | user_id | int | 是 | 否 | 点赞人 | |
| 3 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 4 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID |
表 4-8-maintenance_task(维修任务)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | maintenance_task_id | int | 是 | 是 | 维修任务ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | license_plate_number | varchar | 64 | 否 | 否 | 车牌号 |
| 4 | vehicle_cover | varchar | 255 | 否 | 否 | 车辆封面 |
| 5 | vehicle_name | varchar | 64 | 否 | 否 | 车辆名称 |
| 6 | vehicle_specifications | varchar | 64 | 否 | 否 | 车辆规格 |
| 7 | vehicle_model | varchar | 64 | 否 | 否 | 车辆型号 |
| 8 | owner_user | int | 否 | 否 | 车主用户 | |
| 9 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 10 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 11 | assignment_date | date | 否 | 否 | 分配日期 | |
| 12 | car_problems | text | 65535 | 否 | 否 | 汽车问题 |
| 13 | repairman | int | 否 | 否 | 维修员 | |
| 14 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 15 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 16 | repair_order_limit_times | int | 是 | 否 | 维修项目限制次数 | |
| 17 | create_time | datetime | 是 | 否 | 创建时间 | |
| 18 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 19 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 20 | source_id | int | 否 | 否 | 来源ID | |
| 21 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-9-ordinary_user(普通用户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | ordinary_user_id | int | 是 | 是 | 普通用户ID | |
| 2 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 3 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 4 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 5 | user_id | int | 是 | 否 | 用户ID | |
| 6 | create_time | datetime | 是 | 否 | 创建时间 | |
| 7 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-10-parts_in_stock(零件入库)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | parts_in_stock_id | int | 是 | 是 | 零件入库ID | |
| 2 | receipt_no | varchar | 64 | 否 | 否 | 入库编号 |
| 3 | part_name | varchar | 64 | 否 | 否 | 零件名称 |
| 4 | part_specifications | varchar | 64 | 否 | 否 | 零件规格 |
| 5 | purchase_unit_price | double | 否 | 否 | 采购单价 | |
| 6 | purchase_quantity | double | 否 | 否 | 采购数量 | |
| 7 | receipt_date | date | 否 | 否 | 入库日期 | |
| 8 | total_amount_of_procurement | double | 否 | 否 | 采购总额 | |
| 9 | create_time | datetime | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-11-part_information(零件信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | part_information_id | int | 是 | 是 | 零件信息ID | |
| 2 | part_name | varchar | 64 | 是 | 是 | 零件名称 |
| 3 | part_specifications | varchar | 64 | 否 | 否 | 零件规格 |
| 4 | unit_price_of_parts | double | 否 | 否 | 零件单价 | |
| 5 | parts_inventory | double | 否 | 否 | 零件库存 | |
| 6 | applicable_vehicles | text | 65535 | 否 | 否 | 适用车辆 |
| 7 | create_time | datetime | 是 | 否 | 创建时间 | |
| 8 | update_time | timestamp | 是 | 否 | 更新时间 |
表 4-12-payment_of_wages(发放工资)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | payment_of_wages_id | int | 是 | 是 | 发放工资ID | |
| 2 | salary_no | varchar | 64 | 否 | 否 | 工资编号 |
| 3 | employee_user | int | 否 | 否 | 员工用户 | |
| 4 | employee_id | varchar | 64 | 否 | 否 | 员工工号 |
| 5 | employee_name | varchar | 64 | 否 | 否 | 员工姓名 |
| 6 | basic_salary | double | 否 | 否 | 基本工资 | |
| 7 | hourly_wage | double | 否 | 否 | 小时工资 | |
| 8 | working_hours | double | 否 | 否 | 工作时长 | |
| 9 | deduction_amount | double | 否 | 否 | 扣除金额 | |
| 10 | reward_amount | double | 否 | 否 | 奖励金额 | |
| 11 | actual_issuance | double | 否 | 否 | 实际发放 | |
| 12 | release_date | date | 否 | 否 | 发放日期 | |
| 13 | remarks | text | 65535 | 否 | 否 | 备注 |
| 14 | create_time | datetime | 是 | 否 | 创建时间 | |
| 15 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 16 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 17 | source_id | int | 否 | 否 | 来源ID | |
| 18 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-13-repair_order(维修订单)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | repair_order_id | int | 是 | 是 | 维修订单ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | license_plate_number | varchar | 64 | 否 | 否 | 车牌号 |
| 4 | vehicle_cover | varchar | 255 | 否 | 否 | 车辆封面 |
| 5 | vehicle_name | varchar | 64 | 否 | 否 | 车辆名称 |
| 6 | vehicle_specifications | varchar | 64 | 否 | 否 | 车辆规格 |
| 7 | vehicle_model | varchar | 64 | 否 | 否 | 车辆型号 |
| 8 | owner_user | int | 否 | 否 | 车主用户 | |
| 9 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 10 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 11 | repairman | int | 否 | 否 | 维修员 | |
| 12 | maintenance_date | date | 否 | 否 | 维修日期 | |
| 13 | part_name | varchar | 64 | 否 | 否 | 零件名称 |
| 14 | part_specifications | varchar | 64 | 否 | 否 | 零件规格 |
| 15 | unit_price_of_parts | varchar | 64 | 否 | 否 | 零件单价 |
| 16 | quantity_used | double | 否 | 否 | 使用数量 | |
| 17 | total_payments | double | 否 | 否 | 支付总额 | |
| 18 | pay_state | varchar | 16 | 是 | 否 | 支付状态 |
| 19 | pay_type | varchar | 16 | 否 | 否 | 支付类型: 微信、支付宝、网银 |
| 20 | create_time | datetime | 是 | 否 | 创建时间 | |
| 21 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 22 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 23 | source_id | int | 否 | 否 | 来源ID | |
| 24 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-14-reservation_information(预约信息)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | reservation_information_id | int | 是 | 是 | 预约信息ID | |
| 2 | order_number | varchar | 64 | 否 | 否 | 订单编号 |
| 3 | license_plate_number | varchar | 64 | 否 | 否 | 车牌号 |
| 4 | vehicle_cover | varchar | 255 | 否 | 否 | 车辆封面 |
| 5 | vehicle_name | varchar | 64 | 否 | 否 | 车辆名称 |
| 6 | vehicle_specifications | varchar | 64 | 否 | 否 | 车辆规格 |
| 7 | vehicle_model | varchar | 64 | 否 | 否 | 车辆型号 |
| 8 | owner_user | int | 否 | 否 | 车主用户 | |
| 9 | user_name | varchar | 64 | 否 | 否 | 用户姓名 |
| 10 | phone_number | varchar | 16 | 否 | 否 | 手机号码 |
| 11 | appointment_date | date | 否 | 否 | 预约日期 | |
| 12 | car_problems | text | 65535 | 否 | 否 | 汽车问题 |
| 13 | examine_state | varchar | 16 | 是 | 否 | 审核状态 |
| 14 | examine_reply | varchar | 16 | 否 | 否 | 审核回复 |
| 15 | maintenance_task_limit_times | int | 是 | 否 | 分配任务限制次数 | |
| 16 | create_time | datetime | 是 | 否 | 创建时间 | |
| 17 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 18 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 19 | source_id | int | 否 | 否 | 来源ID | |
| 20 | source_user_id | int | 否 | 否 | 来源用户 |
表 4-15-schedule(日程管理)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | schedule_id | smallint | 是 | 是 | 日程ID | |
| 2 | content | varchar | 255 | 否 | 否 | 日程内容 |
| 3 | scheduled_time | datetime | 否 | 否 | 计划时间 | |
| 4 | user_id | int | 是 | 否 | 用户ID | |
| 5 | create_time | datetime | 否 | 否 | 创建时间 | |
| 6 | update_time | datetime | 否 | 否 | 更新时间 |
表 4-16-score(评分)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | score_id | int | 是 | 是 | 评分ID | |
| 2 | user_id | int | 是 | 否 | 评分人 | |
| 3 | nickname | varchar | 64 | 否 | 否 | 昵称 |
| 4 | score_num | double | 是 | 否 | 评分 | |
| 5 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 6 | update_time | timestamp | 是 | 否 | 更新时间 | |
| 7 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 8 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 9 | source_id | int | 是 | 否 | 来源ID |
表 4-17-upload(文件上传)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | upload_id | int | 是 | 是 | 上传ID | |
| 2 | name | varchar | 64 | 否 | 否 | 文件名 |
| 3 | path | varchar | 255 | 否 | 否 | 访问路径 |
| 4 | file | varchar | 255 | 否 | 否 | 文件路径 |
| 5 | display | varchar | 255 | 否 | 否 | 显示顺序 |
| 6 | father_id | int | 否 | 否 | 父级ID | |
| 7 | dir | varchar | 255 | 否 | 否 | 文件夹 |
| 8 | type | varchar | 32 | 否 | 否 | 文件类型 |
表 4-18-user(用户账户)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | user_id | int | 是 | 是 | 用户ID | |
| 2 | state | smallint | 是 | 否 | 账户状态:(1可用|2异常|3已冻结|4已注销) | |
| 3 | user_group | varchar | 32 | 否 | 否 | 所在用户组 |
| 4 | login_time | timestamp | 是 | 否 | 上次登录时间 | |
| 5 | phone | varchar | 11 | 否 | 否 | 手机号码 |
| 6 | phone_state | smallint | 是 | 否 | 手机认证:(0未认证|1审核中|2已认证) | |
| 7 | username | varchar | 16 | 是 | 否 | 用户名 |
| 8 | nickname | varchar | 16 | 否 | 否 | 昵称 |
| 9 | password | varchar | 64 | 是 | 否 | 密码 |
| 10 | | varchar | 64 | 否 | 否 | 邮箱 |
| 11 | email_state | smallint | 是 | 否 | 邮箱认证:(0未认证|1审核中|2已认证) | |
| 12 | avatar | varchar | 255 | 否 | 否 | 头像地址 |
| 13 | open_id | varchar | 255 | 否 | 否 | 针对获取用户信息字段 |
| 14 | create_time | timestamp | 是 | 否 | 创建时间 |
表 4-19-user_group(用户组)
| 编号 | 字段名 | 类型 | 长度 | 是否非空 | 是否主键 | 注释 |
| 1 | group_id | mediumint | 是 | 是 | 用户组ID | |
| 2 | display | smallint | 是 | 否 | 显示顺序 | |
| 3 | name | varchar | 16 | 是 | 否 | 名称 |
| 4 | description | varchar | 255 | 否 | 否 | 描述 |
| 5 | source_table | varchar | 255 | 否 | 否 | 来源表 |
| 6 | source_field | varchar | 255 | 否 | 否 | 来源字段 |
| 7 | source_id | int | 是 | 否 | 来源ID | |
| 8 | register | smallint | 否 | 否 | 注册位置 | |
| 9 | create_time | timestamp | 是 | 否 | 创建时间 | |
| 10 | update_time | timestamp | 是 | 否 | 更新时间 |
第5章
系统实现
5.1普通用户模块的实现
5.1.1用户注册界面
用户注册模块为新用户提供便捷的账户创建流程,用户需要填写必要的个人信息并选择合适的用户名和密码。通过简洁的表单设计,收集用户的必要信息,如用户名、密码、邮箱或手机号等,并进行输入验证以确保数据准确性。用户注册界面如下图所示。

图5-1 用户注册界面
5.1.2用户登录界面
用户登录模块为前台用户提供安全快捷的访问方式。登录页面设计简洁明了,用户只需输入用户名及密码即可完成身份验证。系统采用验证码进行用户认证,支持多因素认证增强安全性。登录成功后,用户将被重定向至系统首页页面。对于忘记密码的用户,提供了找回密码功能,通过邮箱或手机号接收重置链接,保障账户安全。用户登录界面如下图所示。

图5-2 用户登录界面
5.1.3汽车登记管理界面
汽车登记管理模块旨在提供一个用户友好的界面,使用户能够方便快捷地添加和管理自己的汽车信息。此外,用户还可以随时查看已登记的汽车详情,对信息进行修改更新,确保数据的准确性和及时性。汽车登记添加界面如下图所示。

图5-3 汽车登记添加界面
5.1.4维修订单管理界面
维修订单管理模块提供了一个透明且易于操作的平台来跟踪其维修服务的状态。用户可以通过此模块查看所有与自己相关的维修订单列表,每个订单条目清晰展示了维修项目的描述、预计费用、当前状态等关键信息。维修订单管理界面如下图所示。

图5-7 维修订单管理界面
5.2维修人员功能模块的实现
5.2.1维修任务管理界面
维修人员的维修任务管理模块专注于提供一个直观的工作平台,以有效处理和监控所有的维修任务。在此模块中,维修人员首先能查看分配给自己的所有维修任务列表,每个任务条目详细列出了车辆信息、客户要求及预计完成时间等。对于每个任务,维修人员可以更新其状态,并添加详细的维修记录和费用估算。维修任务审核界面如下图所示。

图5-9 维修任务审核界面
5.2.2零件信息管理界面
零件信息管理模块旨在简化和优化零件库存的操作流程。通过此模块,维修人员能够轻松查看现有零件的库存详情,包括零件名称、型号、数量及存放位置等信息。在需要时,他们可以直接从系统中申请零件补充或是调整库存数据,比如当有新的零件入库或旧零件被使用后减少库存量。零件信息管理界面如下图所示。

图5-9 零件信息管理界面
5.2.3发放工资管理界面
发放工资管理模块主要用于协助管理人员处理员工薪资相关事务。在这个模块中,维修人员可以查看个人的工资单详情,包括基本工资、加班费、奖金等各项明细,并对任何疑问发起查询请求。发放工资管理界面如下图所示。

图5-9 发放工资管理界面
5.3管理员模块的实现
5.3.1管理员后台首页界面
管理员的后台首页提供了全面的数据概览,帮助快速掌握企业的运营状况。该页面集成了维修订单统计、零件库存状态以及员工工作量等关键指标的可视化图表,使得管理员能够一目了然地了解各项业务的进展和效率。通过这种集中化的信息展示方式,管理员可以迅速做出决策,并对异常情况进行及时干预。管理员后台首页界面如下图所示。

图5-10 管理员后台首页界面
5.3.2系统用户界面
系统用户模块允许管理员对普通用户、维修人员和管理员的账户信息进行管理,包括新增、编辑或删除用户账号,调整用户权限等级等操作。设计时注重用户体验与安全性,提供了详细的用户资料视图和便捷的操作界面。技术实现方面,集成了强大的搜索和过滤功能,便于管理员高效地查找特定用户并执行相应管理任务。界面如下图所示。

图5-11 系统用户界面
5.3.3汽车登记管理界面
管理员可以通过汽车登记管理模块高效地添加和审核新车辆的登记信息。此模块支持录入详细的车辆资料,并提供审核功能来验证信息的真实性和完整性。一旦审核通过,相关信息将被正式记录在系统内,为后续服务预约及维修任务安排提供准确的数据支持。汽车登记审核界面如下图所示。

图5-12 汽车登记审核界面
5.3.4预约信息管理界面
预约信息管理模块使管理员能够全面控制客户的预约请求,包括审核、分配合适的维修人员以及调整预约时间。此模块不仅提高了预约处理的透明度和效率,还确保了资源的有效利用和服务质量的提升。管理员还可以监控所有预约的状态变化,以便及时响应任何变更或取消请求。预约信息管理界面如下图所示。

图5-14 预约信息管理界面
分配维修任务界面如下图所示。

图5-15 分配维修任务界面
5.3.5零件信息管理界面
零件信息管理模块为管理员提供了管理和更新零件数据库的功能。通过这个模块,管理员可以添加新的零件信息、修改现有记录或删除不再需要的条目。此外,还能查看每种零件的详细信息,如供应商、价格和库存数量,这对于保证维修工作的顺利进行至关重要。添加零件信息界面如下图所示。

图5-17 添加零件信息界面
5.3.6零件入库管理界面
零件入库管理模块专注于处理新进货零件的入库流程。管理员在这里可以记录每次入库的具体详情,包括零件名称、数量、采购日期等信息。添加零件入库界面如下图所示。

图5-18 添加零件入库界面
5.3.7员工信息管理界面
员工信息管理模块让管理员能够轻松管理公司内部的所有员工信息。从基础的个人信息录入到职位变动、绩效评估等高级功能,该模块覆盖了员工职业生涯的各个方面。管理员可以通过此模块快速查找员工资料,进行必要的更新或调整,同时也便于人力资源规划和管理决策的制定。添加员工信息界面如下图所示。

图5-18 添加员工信息界面
第6章
系统测试
6.1测试目的
测试是为了验证系统在功能、性能、安全性和用户体验等方面的表现。通过测试,可以发现并修复潜在的问题和缺陷,确保系统的正常运行和稳定性。功能验证确保各项功能按设计要求运行;性能评估评估系统的响应时间和并发处理能力;安全检测确保系统的身份认证和数据传输安全;用户体验评估提升界面友好性和操作流程;兼容性测试确保系统在不同设备和浏览器上的兼容性。通过全面的测试,系统将更可靠地支持用户需求,并提供优质的用户体验。
6.2测试用例
对以下功能进行测试,包括包括用户注册、用户登录、汽车登记添加、维修任务分配、零件信息添加,具体测试用例如下表所示。
表6-1 用户注册测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-1 | 用户注册 | 1. 输入有效注册信息,包括用户名、密码和联系方式。 | 注册成功,系统保存用户信息。 |
| 2. 点击注册按钮进行提交。 | 跳转至登录页面。 | ||
| 3. 检查是否成功注册并跳转至登录页面。 | 用户成功注册,可以登录使用。 |
表6-2 用户登录测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-2 | 用户登录 | 1. 输入正确用户名和密码。 | 登录成功,系统验证通过。 |
| 2. 点击登录按钮进行验证。 | 跳转至用户首页。 | ||
| 3. 检查是否成功登录并跳转至用户首页。 | 用户成功登录,进入用户首页。 |
表6-3 汽车登记添加测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-3 | 汽车登记添加 | 1. 点击汽车登记。 | 显示所有汽车登记列表。 |
| 2. 进入详情页浏览。 | 展示汽车登记详情页。 | ||
| 3. 检查是否显示汽车登记是否正常展示。 | 汽车登记展示正常。 |
表6-4 维修任务分配测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-4 | 维修任务分配 | 1. 点击维修任务管理。 | 显示所有维修任务列表。 |
| 2. 管理员进入详情页浏览,分配维修任务给维修人员。 | 展示维修任务详情页,成功分配。 | ||
| 3. 检查是否显示维修任务是否成功分配。 | 维修任务分配正常。 |
表6-5 零件信息添加测试用例表
| 用例编号 | 用例名称 | 测试步骤 | 测试结果 |
| 6-5 | 零件信息添加 | 1. 进入后台零件信息管理界面,点击添加按钮。 | 显示零件信息添加页面。 |
| 2. 正确填写并提交相关信息。 | 信息填写完整准确。 | ||
| 3. 检查是否提交成功,并检查零件信息是否成功添加至平台。 | 零件信息成功添加至平台。 |
6.3测试结果
经过对用户注册、用户登录、汽车登记添加、维修任务分配、零件信息添加等功能的测试,系统表现稳定,用户注册流程顺畅,登录验证准确,汽车登记添加、维修任务分配、零件信息添加功能有效。各项功能符合预期,用户可以顺利注册登录,选择所需汽车登记进行浏览。系统运行良好,用户体验良好,功能完善。
结 论
通过汽车修理管理系统的开发,本人巩固了之前学过的知识,如今将平时所学到的知识融合在设计中,在设计过程中,做了很多的准备,首先,在数据库系统的设计过程中,尤其是在数据库的工作原理、工作特点,对其深刻的讨论,与此同时,对于小型站点来说,最好服务器的选择,其次,利用所学的知识点分析所做的系统,并在此基础上设计。
目前本系统已经上线,正在试运行阶段,用户反馈良好,基本完成用户所需,试运行过程中没有出现阻断性问题,有一些不足和小问题也及时予以修正,系统上线后,为了保证数据的安全性,对系统进行了备份操作,系统备份是每两个月备份一次,数据库备份为每周备份一次,系统部署在租赁的云平台服务器中。
本次系统上线成功后,得到了用户的高度认可,但是在功能上和性能上还需做进一步的研究处理,使其有更高的性能和更好的用户体验。系统在以后的升级过程中,需要解决一系列用户所提出的问题,例如打印过程中如何避免浏览器的兼容性问题,大量用户访问时,如何保持较高的响应速度,在系统今后的升级过程中将着重解决这些安全性问题。
参考文献
- 陈敬宗.计算机软件Java编程特点与技术应用分析[J].中国信息界,2025,(01):162-164.
- 柯灵.Java编程语言在计算机软件开发中的应用与问题处理探析[J].电脑知识与技术,2024,20(27):45-47.
- 王志亮,纪松波.基于SpringBoot的Web前端与数据库的接口设计[J].工业控制计算机,2023,36(03):51-53.
- 李兴华,马云涛.Spring开发实战[M].人民邮电出版社:202303.381.
- 李艳杰.MySQL数据库下存储过程的综合运用研究[J].现代信息科技,2023,7(11):80-82+88.
- 肖睿,李鲲程,范效亮,等.MySQL数据库应用技术及实践[M].人民邮电出版社:202206.228.
- 黄维.基于B/S模式的虚拟网络实验室安全管理体系分析[J].信息系统工程,2024,(05):4-7.
- 张宇薇.HTML5在Web前端开发中的应用[J].集成电路应用,2024,41(04):274-276.
- NAPA AUTOPRO Advises on Streamlining the Vehicle Maintenance Process[J].M2 Presswire,2025,
- Li L .Study on optimization of water use efficiency in electric vehicle maintenance process in sustainable green environment[J].Journal of Sol-Gel Science and Technology,2024,(prepublish):1-9.
- 黄应杰.汽车4S店全面预算管理现存问题及对策探讨[J].中国乡镇企业会计,2024,(09):127-129.
- 马丕军,杜松旌.信息化管理在汽车维修保养中的应用探讨[J].汽车维护与修理,2024,(17):66-69.
- 潘星驰.基于业务内容的汽车故障诊断与作业系统研究[J].内燃机与配件,2024,(03):60-62.
- 黄晓东.汽车4S店配件库存管理的挑战与策略[J].汽车维修与保养,2024,(02):62-63.
- 蒋志林.汽车维修信息化平台的建设与应用研究[J].汽车画刊,2024,(01):125-127.
- 范良风.汽车维修企业如何提升客户预约成功率[J].汽车维护与修理,2023,(13):9-12.
- 何晨.H汽车维修企业的服务质量评价与提升策略研究[D].浙江工商大学,2023.
- 赵杰.“智慧车服平台”预约模块的设计与实现研究[J].装备制造技术,2022,(06):124-127.
- 刘宇菁.G汽车修理企业材料采购管理优化研究[D].中南财经政法大学,2022.
- 苏小伟.基于SpringBoot的汽车维修企业智能化管理系统的设计与实现[D].北京交通大学,2022.
眨眼之间,大学生活就要结束了。在本文的最后,我要感谢我和蔼可亲的导师、团结有爱的同学的帮助和鼓励。此刻,我找不到感谢之词可以用来表达我最深切的感激之情。尤其感谢我的指导老师,在选题的过程中与我进行了深入的交流,在毕业设计期间给我提供了一些指导。四年的学习生活让我受益良多,老师们的丰富的学术知识、认真负责的学习态度让我受益匪浅。在此,我深深地感谢那些曾经给予我帮助和指导的老师!
我的论文得益于许多学者的贡献,他们的研究成果为我提供了宝贵的指导,使我能够更好地完成这篇文章。感谢我的同学和朋友在我的写作以及排版过程中给予热情的帮助,才使得我比较顺利的完成了这篇论文。
感谢大学里遇见的朋友,你们在我这四年里留下无数的温暖和快乐,让我对这个校园多了一份留念。最后,感谢我的父母、辅导员、班长,以及室友们对我大学生活上的关心和理解,让我能保持乐观和追求我所热爱的。尽管我的能力有限,但我仍然尽力去完善这篇论文,并且诚挚地希望各位老师和学友能够给予宝贵的指导与意见!
登录代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.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());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
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, "账号或密码不正确");
}
}
注册代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
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);
}
找回密码代码如下:
/**
* 找回密码
* @param form
* @return
*/
@PostMapping("forget_password")
public Map<String, Object> forgetPassword(@RequestBody User form,HttpServletRequest request) {
JSONObject ret = new JSONObject();
String username = form.getUsername();
String code = form.getCode();
String password = form.getPassword();
// 判断条件
if(code == null || code.length() == 0){
return error(30000, "验证码不能为空");
}
if(username == null || username.length() == 0){
return error(30000, "用户名不能为空");
}
if(password == null || password.length() == 0){
return error(30000, "密码不能为空");
}
// 查询用户
Map<String, String> query = new HashMap<>();
query.put("username",username);
List list = service.selectBaseList(service.select(query, service.readConfig(request)));
if (list.size() > 0) {
User o = (User) list.get(0);
JSONObject query2 = new JSONObject();
JSONObject form2 = new JSONObject();
// 修改用户密码
query2.put("user_id",o.getUserId());
form2.put("password",service.encryption(password));
service.update(query, service.readConfig(request), form2);
return success(1);
}
return error(70000,"用户不存在");
}
修改密码代码如下:
/**
* 修改密码
* @param data
* @param request
* @return
*/
@PostMapping("change_password")
public Map<String, Object> change_password(@RequestBody Map<String, String> data, HttpServletRequest request){
// 根据Token获取UserId
String token = request.getHeader("x-auth-token");
Integer userId = tokenGetUserId(token);
// 根据UserId和旧密码获取用户
Map<String, String> query = new HashMap<>();
String o_password = data.get("o_password");
query.put("user_id" ,String.valueOf(userId));
query.put("password" ,service.encryption(o_password));
int count = service.selectBaseCount(service.count(query, service.readConfig(request)));
if(count > 0){
// 修改密码
Map<String,Object> form = new HashMap<>();
form.put("password",service.encryption(data.get("password")));
service.update(query,service.readConfig(request),form);
return success(1);
}
return error(10000,"密码修改失败!");
}
增删查改代码如下:
增
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
删
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
改
@PostMapping("/set")
@Transactional
public Map<String, Object> set(HttpServletRequest request) throws IOException {
service.update(service.readQuery(request), service.readConfig(request), service.readBody(request.getReader()));
return success(1);
}
图片/文件/视频等的上传方法通过MultipartFile,代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}

被折叠的 条评论
为什么被折叠?



