基于springboot+html汽车维修系统汽车维修系统的设计与实现
✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取项目下载方式🍅
一、项目背景介绍:
目前,全国汽车维修行业有一二类企业30多万家,从业人员近300万人,每年都在以10%左右的速度快速增长。国营、集体、股份制、私营、个体、中 外合资等多种经济成分的汽车维修企业在共同发展,4S 店、特约维修服务站、 综合维修厂、快修连锁店、专项维修店等多样化的经营方式各展其长,形成了一个门类齐全、品种多样,分布广泛,服务方便,能够满足不同消费层次需求的汽车维修市场。中国汽车市场发展潜力巨大,特别是私人汽车消费,在未来20年将持续高速增长。中国汽车保有量的快速增长将直接带动国内汽车维修保养市的发展,中国的汽保行业在未来的5-10年中有着无限广阔的发展空间。
随着信息技术的不断革新和渗透,各行各业都在探索拥抱信息技术的合作方式,汽修行业也不例外。信息化的汽车维修管理系统能够实现在数秒钟内从上万份客户档案中找出你所需要的某个车的报修历史记录,能从上万个零配件中找出某个零配件的库存 情况及存放地点,更加方便快捷。
二、项目技术简介:
- JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
- Spring:Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。
- SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
- Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
- Jsp:JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。 - Spring-Mvc:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框。
- Html:HTML的全称为超文本标记语言,是一种标记语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字,图形、动画、声音、表格、链接等。
超文本是一种组织信息的方式,它通过超级链接方法将文本中的文字、图表与其他信息媒体相关联。这些相互关联的信息媒体可能在同一文本中,也可能是其他文件,或是地理位置相距遥远的某台计算机上的文件。这种组织信息方式将分布在不同位置的信息资源用随机方式进行连接,为人们查找,检索信息提供方便。
三、系统功能模块介绍:
四、数据库设计:
1:部门
(car_dept)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(50) | NULL | ID |
dept_name | varchar(100) | NULL | 部门名称 |
dept_location | varchar(100) | NULL | 部门地址 |
2:dictionary(dictionary)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(50) | NULL | |
dictionary_type | varchar(40) | NULL | 类别 |
code | varchar(40) | NULL | 编码key |
val | varchar(100) | NULL | 编码对应值 |
status | varchar(4) | NULL | 状态(1:启用[新建默认该状态],2:禁用) |
remake | varchar(100) | NULL | 备注 |
3:仓库
(house)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
house_name | varchar(255) | NULL | 仓库名 |
house_address | varchar(255) | NULL | 仓库地址 |
remark | varchar(255) | NULL | 备注 |
status | int(11) | NULL | 标记 |
4:用户菜单表
(menu)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
user_id | int(11) | NULL | 用户编号 |
menu | int(255) | NULL | 菜单名 |
5:订单
(orders)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(50) | NULL | |
registration_id | int(50) | NULL | 登记表编号 |
order_time | datetime | NULL | 下单时间 |
staff_id | int(50) | NULL | 下单员工id |
status | int(4) | NULL | 订单状态(0:未支付,1:已支付,2:维修中,3:质检中,4:已完成) |
repair_id | int(50) | NULL | 维修人员编号 |
quality_inspector_id | int(50) | NULL | 质检人编号 |
pay_money | varchar(100) | NULL | 支付金额 |
complete_time | datetime | NULL | 完成时间 |
6:配件
(parts)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
parts_type_id | varchar(255) | NULL | 配件类别编号 |
parts_name | varchar(255) | NULL | 配件名称 |
status | int(11) | NULL | 标记 |
parts_price | varchar(255) | NULL | 采购价格 |
parts_set_price | varchar(255) | NULL | 销售价格 |
parts_num | int(11) | NULL | 库存 |
parts_house_id | int(11) | NULL | 仓库编号 |
7:零件类别
(parts_type)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
type_name | varchar(255) | NULL | 类别名称 |
8:采购
(purchase)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
purchase_parts_id | int(11) | NULL | 零件编号 |
purchase_suppliers_id | int(11) | NULL | 供应商编号 |
purchase_num | int(11) | NULL | 需求量 |
purchase_start_time | datetime | NULL | 创建时间 |
purchase_end_time | datetime | NULL | 完成时间 |
status | int(11) | NULL | 标记 |
purchase_staff_id | int(11) | NULL | 采购员 |
9:测试
(registration)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(50) | NULL | ID |
visit_name | varchar(100) | NULL | 来访人姓名 |
visit_sex | varchar(100) | NULL | 来访人性别 |
visit_tel | varchar(100) | NULL | 来访人联系电话 |
visit_email | varchar(100) | NULL | 来访人邮箱 |
visit_time | datetime | NULL | 来访时间 |
car_model | varchar(100) | NULL | 车辆型号 |
car_license_plate | varchar(100) | NULL | 车辆牌照 |
staff_id | int(50) | NULL | 接待人id |
status | int(4) | NULL | 预约状态(0:预约,1:放弃预约,2:已下单 |
10:staff(staff)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(50) | NULL | |
user_name | varchar(100) | NULL | 用户名 |
user_pwd | varchar(100) | NULL | 密码 |
nick_name | varchar(100) | NULL | 昵称 |
head_img | varchar(100) | NULL | 头像 |
dept_id | int(50) | NULL | 部门编号 |
status | int(4) | NULL | 状态([0:可用1:禁用]) |
jurisdiction | int(4) | NULL | 权限[0:最高管理员,1:普通管理员] |
11:供应商管理
(suppliers)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
supplier_name | varchar(255) | NULL | 供应商名称 |
supplier_user | varchar(255) | NULL | 联系人 |
supplier_tel | varchar(255) | NULL | 联系方式 |
supplier_email | varchar(255) | NULL | 邮箱 |
supplier_address | varchar(255) | NULL | 地址 |
supplier_longitude | varchar(255) | NULL | 经度 |
supplier_latitude | varchar(255) | NULL | 纬度 |
supplier_code | varchar(255) | NULL | 邮政编码 |
supplier_card | varchar(255) | NULL | 银行卡号 |
status | int(11) | NULL | 标记 |
12:维修领料
(task)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
task_orders_id | int(11) | NULL | 订单编号 |
task_parts_id | int(11) | NULL | 零件编号 |
task_num | int(11) | NULL | 领取数量 |
task_staff_id | int(11) | NULL | 员工编号 |
task_time | datetime | NULL | 申请时间 |
task_really_num | int(11) | NULL | 实际领取数量 |
status | int(11) | NULL | 标记 |
13:结算
(wind_account)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
account_orders_id | int(11) | NULL | 订单编号 |
account_staff_id | int(11) | NULL | 结算人 |
account_time | datetime | NULL | 结算时间 |
status | int(11) | NULL | 支付状态 |
account_car_time | datetime | NULL | 取车时间 |
account_parts_money | varchar(255) | NULL | 用料费用 |
account_work_money | varchar(255) | NULL | 项目费用 |
account_money | varchar(255) | NULL | 实际支付 |
14:维修任务
(work)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | int(11) | NULL | ID |
work_orders_id | int(11) | NULL | 维修订单 |
work_staff_id | int(11) | NULL | 员工编号 |
start_time | datetime | NULL | 开始时间 |
end_time | datetime | NULL | 完成时间 |
status | int(11) | NULL | 标记 |
work_type | int(11) | NULL | 任务分类 |
work_time | int(11) | NULL | 维修工时 |
五、功能模块:
-
系统前台:系统首页展示了汽车维修收入折线图和系统人员的分布的分布图。
-
接待管理:接待管理用于来访客户的基本信息的展示与管理和订单信息的展示与管理的界面。
-
维修信息:维修信息包括维修器械信息的展示与管理和维修任务信息的展示与管理的界面。
-
质检信息:质检信息是对质检任务基本信息的展示与管理的界面。
-
财务信息:财务信息是对订单信息的展示与管理的界面。
-
仓库管理:仓库管理包括零件信息的展示与管理,供货商信息的展示与管理,仓库库存信息的展示与管理,采购信息的展示与管理,维修资料的展示与管理。
-
个人信息:个人信息是个人信息展示和操作的界面。
-
系统管理:系统管理是对部门信息、人员信息、字典信息进行展示和操作的界面。
六、代码示例:
系统前台
public ControllerResultData<Staff> updateById(Staff staff) {
ControllerResultData<Staff> controllerResultData = new ControllerResultData<>();
try {
int row = staffService.updateById(staff);
controllerResultData.setDefaultSuccess();
staff.setInfluenceRow(row);
controllerResultData.setData(staff);
} catch (Exception ex) {
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
接待管理
public ControllerResultData<Order> deleteById(Order order){
ControllerResultData<Order> controllerResultData = new ControllerResultData<>();
try{
int row = orderService.deleteById(order.getId());
controllerResultData.setDefaultSuccess();
order.setInfluenceRow(row);
controllerResultData.setData(order);
}catch(Exception ex){
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
维修信息
public ControllerResultData<Task> updateById(Task task){
ControllerResultData<Task> controllerResultData = new ControllerResultData<>();
try{
//通过id获取orderId
Task taskDaoById = taskDao.findById(task.getId());
//修改零件库存
Parts byId = partsDao.findById(Integer.parseInt(taskDaoById.getTaskPartsId()));
//判断审核数量不能大于库存数量
if (Integer.parseInt(task.getTaskReallyNum()) > Integer.parseInt(byId.getPartsNum())){
controllerResultData.setDefaultFail();
return controllerResultData.setMsg("库存数量不足!");
}
Parts parts = new Parts();
int partsNum = Integer.parseInt(byId.getPartsNum());
int taskNum = Integer.parseInt(task.getTaskReallyNum());
int num = partsNum - taskNum;
parts.setPartsNum(num+"");
parts.setId(Integer.parseInt(taskDaoById.getTaskPartsId()));
int row = taskService.updateById(task);
if (row > 0){
partsDao.updateById(parts);
}
controllerResultData.setDefaultSuccess();
task.setInfluenceRow(row);
controllerResultData.setData(task);
}catch(Exception ex){
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
质检信息
public ControllerResultData<String> delteByIds(String ids) throws Exception {
ControllerResultData<String> controllerResultData = new ControllerResultData<>();
try {
List<Integer> list = new ArrayList<>();
String[] ids1 = ids.split(",");
for (int i = 0; i < ids1.length; i++) {
list.add(Integer.parseInt(ids1[i]));
}
int id = workService.deleteByIds(list);
if (id > 0) {
controllerResultData.setDefaultSuccess();
} else {
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
} catch (Exception ex) {
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
财务信息
public ControllerResultData<Order> insert(Order order){
ControllerResultData<Order> controllerResultData = new ControllerResultData<>();
try {
int id = orderService.insert(order);
order.setId(id);
controllerResultData.setDefaultSuccess();
controllerResultData.setData(order);
}catch(Exception ex) {
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
仓库管理
public ControllerResultData<String> delteByIds(String ids) throws Exception {
ControllerResultData<String> controllerResultData = new ControllerResultData<>();
try {
List<Integer> list = new ArrayList<>();
String[] ids1 = ids.split(",");
for (int i = 0; i < ids1.length; i++) {
list.add(Integer.parseInt(ids1[i]));
}
int id = houseService.deleteByIds(list);
if(id > 0){
controllerResultData.setDefaultSuccess();
}else{
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
}catch(Exception ex) {
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
个人信息
public ControllerResultData<List<Staff>> findList(Staff staff) {
ControllerResultData<List<Staff>> controllerResultData = new ControllerResultData<>();
try {
staff.setPage((staff.getPage() - 1) * staff.getLimit());
List<Staff> list = staffService.findList(staff);
int count = staffService.findPageCount(staff);
controllerResultData.setCount(count);
controllerResultData.setData(list);
controllerResultData.setDefaultSuccess();
} catch (Exception ex) {
ex.printStackTrace();
controllerResultData.setDefaultFail();
}
return controllerResultData;
}
系统管理
public ControllerResultData<String> delteByIds(String ids) throws Exception {
ControllerResultData<String> controllerResultData = new ControllerResultData<>();
try {
List<Integer> list = new ArrayList<>();
String[] ids1 = ids.split(",");
for (int i = 0; i < ids1.length; i++) {
list.add(Integer.parseInt(ids1[i]));
}
int id = menuService.deleteByIds(list);
if(id > 0){
controllerResultData.setDefaultSuccess();
}else{
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
}catch(Exception ex) {
ex.printStackTrace();
controllerResultData.setCode(ResultConstant.CONTROLLER_RES_CODE_V1);
controllerResultData.setMsg(ResultConstant.DEFAULT_FAIL_MSG);
}
return controllerResultData;
}
七、论文参考:
八、项目总结:
随着汽车迅速进入千家万户,我国进入了发展的黄金时期,汽车维修业和汽车保修设备行业在市场的洗礼中开始由传统的劳动密集型向资金、技术密集型、由生产型向服务型过渡,形成了利润丰厚的汽车后市场。当前世界各大汽车生产厂商在汽车制造方面竞争其剧烈的情况下,己经越来越重视汽车服务产业,并得到了充分发展。在汽车维修已成为万众瞩目的行业这一背景之下,若仍然采用纯手工的管理方式,将会增加信息维护与查找的难度,对企业的市场核心竞争力以及服务质量均有着严重影响,基于这种大环境下,提出了汽车维修管理系统的设计框架,旨在减轻工作人员的重压、实现自动化、信息化、智能化管理。
本设计以IDEA为开发平台,后端使用Java、springboot、springMvc、Mybatis-plus等核心技术实现后台管理,前端使用Html、css、layui、Jquery等技术实现前台展示,数据管理mysql一个关系型数据管理系统。
系统可分为八大基础模板,分别是系统首页、接待管理、维修信息、质检信息、财务管理、仓库管理、个人中心、系统管理。其中首页又可以细分为收入折线图、系统人员分布图俩部分,接待管理又可以细分为信息登记、订单列俩部分,维修信息又可以分为维修资料、维修任务俩部分,仓库管理又可以细分为零件列表、供应商管理、仓库、采购、维修用料审核五部分,系统管理又可以细分为部门列表、人员列表、字典表管理三部分。
最后通过对整个系统的测试、数据库系统的读写以及多方面的测试操作,将系统完善放入服务器上启动,可以完成基本的设计任务。
九、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
本设计以IDEA为开发平台,后端使用Java、springboot、springMvc、Mybatis-plus等核心技术实现后台管理,前端使用Html、css、layui、Jquery等技术实现前台展示,数据管理mysql一个关系型数据管理系统。
系统可分为八大基础模板,分别是系统首页、接待管理、维修信息、质检信息、财务管理、仓库管理、个人中心、系统管理。其中首页又可以细分为收入折线图、系统人员分布图俩部分,接待管理又可以细分为信息登记、订单列俩部分,维修信息又可以分为维修资料、维修任务俩部分,仓库管理又可以细分为零件列表、供应商管理、仓库、采购、维修用料审核五部分,系统管理又可以细分为部门列表、人员列表、字典表管理三部分。
最后通过对整个系统的测试、数据库系统的读写以及多方面的测试操作,将系统完善放入服务器上启动,可以完成基本的设计任务。
九、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
链接点击直达:下载链接