• SpringBoot+Vue实现前后端分离的4S店车辆管理系统


    文末获取源码

    开发语言:Java
    开发工具:IDEA /Eclipse
    数据库:MYSQL5.7/8.0
    应用服务:Tomcat7/Tomcat8
    是否Maven项目:是
    后端框架:SpringBoot
    前端框架:vue+element等
    JDK版本:jdk1.8
    项目架构:B/S架构

    前言介绍

    任何系统都要遵循系统设计的基本流程,本系统也不例外,同样需要经过市场调研,需求分析,概要设计,详细设计,编码,测试这些步骤,基于java语言设计并实现了4S店车辆系统。该系统基于B/S即所谓浏览器/服务器模式,应用java技术,选择MySQL作为后台数据库。系统主要包括首页、个人中心、销售员管理、维修员管理、客户管理、供应商信息管理、保险公司管理、车辆信息管理、物资信息管理、车辆销售管理、车辆维修管理、营业统计管理、销售统计管理等功能模块。

    本文首先介绍了4S店车辆管理的技术发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是功能测试、单元测试和性能测试。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点 

    功能需求分析 

    系统功能需求分析是通过软件开发者在参与市场调研,与管理者及使用者交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能。这是开发的第一步,也是至关重要的一步,如果不在这个阶段制定系统所需模块,日后会带来不必要的麻烦。因此,必须严肃认真,全身心投入去做好这个步骤。

    本系统采用自上往下的方法开发,基本定位如下功能:

    本课题要求实现一套4S店车辆管理系统,系统主要包括管理员、销售员和维修员等功能模块。

    系统功能结构图 

    系统实现 

    系统登录

    用户通过填写注册时输入的用户名、密码、选择角色等信息进行登录操作,如图

    管理员功能模块

    管理员登录进入4S店车辆系统可以查看首页、个人中心、销售员管理、维修员管理、客户管理、供应商信息管理、保险公司管理、车辆信息管理、物资信息管理、车辆销售管理、车辆维修管理、营业统计管理、销售统计管理等功能进行详细操作,如图

     

    销售员管理

    在销售员管理页面中可以对索引、销售账号、销售姓名、性别、年龄、手机、住址等内容进行详情、修改和删除操作;如图 

    维修员管理

    在维修员管理页面中可以对索引、维修账号、维修姓名、性别、年龄、手机、住址等内容进行详情、修改和删除操作;如图 

    客户管理

    在客户管理页面中可以对索引、客户编号、客户姓名、联系方式、车辆品牌、购车方式、交车时间、保险年限等内容进行详情、修改和删除操作;如图 

    供应商信息管理

    在供应商信息管理页面中可以对索引、供应商名称、地址、负责人、联系方式、备注等内容进行详情、修改和删除操作;如图 

    保险公司管理

    在保险公司管理页面中可以对索引、公司编号、公司名称、地址、负责人、联系方式、备注等内容进行详情、修改和删除操作;如图 

    车辆信息管理

    在车辆信息管理页面中可以对索引、车辆编号、车辆品牌、座位数、换挡方式、数量、售价、供应商、车辆图片等内容进行详情、修改和删除操作;如图 

    物资信息管理

    在物资信息管理页面中可以对索引、物资编号、物资名称、规格、数量、单价、供应商、物资图片等内容进行详情、修改和删除操作;如图 

    车辆销售管理

    在车辆销售管理页面中可以对索引、订单编号、车辆编号、车辆品牌、数量、售价、是否支付、支付方式、客户姓名、预计交车时间、销售日期、销售账号、销售姓名等内容进行详情、修改操作;如图 

    车辆维修管理

    在车辆维修管理页面中可以对索引、维修单号、维修车辆、客户姓名、维修状态、维修费用、维修时间、结束时间、维修账号、维修姓名等内容进行详情、删除操作;如图

     

    营业统计管理

    在营业统计管理页面中可以对索引、统计月份、统计类型、总销额、备注等内容进行详情、修改和删除操作;如图

     

    销售员功能模块 

    销售员登录进入4S店车辆系统可以查看首页、个人中心、客户管理、供应商信息管理、保险公司管理、车辆信息管理、车辆销售管理等功能,并进行详细操作,如图

    个人中心

    在个人信息页面通过填写销售账号、性别、手机、销售姓名、年龄、住址等内容进行个人信息修改;如图 

    客户管理

    在客户管理页面中可以对索引、客户编号、客户姓名、联系方式、车辆品牌、购车方式、交车时间、保险年限等内容进行详情操作;如图 

    车辆信息管理

    在车辆信息管理页面中可以对索引、车辆编号、车辆品牌、座位数、换挡方式、数量、售价、供应商、车辆图片等内容进行详情、销售操作;如图 

    维修员功能模块

    维修员登录进入4S店车辆系统可以查看首页、个人中心、客户管理、供应商信息管理、保险公司管理、物资信息管理、车辆维修管理等功能,并进行详细操作,如图

     

    物资信息管理

    在物资信息管理页面中可以对索引、物资编号、物资名称、规格、数量、单价、供应商、物资图片等内容进行详情操作;如图 

    保险公司管理

    在保险公司管理页面中可以对索引、公司编号、公司名称、地址、负责人、联系方式、备注等内容进行详情操作;如图 

    部分核心代码:  

    1. /**
    2. * 车辆维修
    3. * 后端接口
    4. * @author
    5. * @email
    6. * @date 2022-05-06 18:06:12
    7. */
    8. @RestController
    9. @RequestMapping("/cheliangweixiu")
    10. public class CheliangweixiuController {
    11. @Autowired
    12. private CheliangweixiuService cheliangweixiuService;
    13. /**
    14. * 后端列表
    15. */
    16. @RequestMapping("/page")
    17. public R page(@RequestParam Map<String, Object> params,CheliangweixiuEntity cheliangweixiu,
    18. HttpServletRequest request){
    19. String tableName = request.getSession().getAttribute("tableName").toString();
    20. if(tableName.equals("weixiuyuan")) {
    21. cheliangweixiu.setWeixiuzhanghao((String)request.getSession().getAttribute("username"));
    22. }
    23. EntityWrapper<CheliangweixiuEntity> ew = new EntityWrapper<CheliangweixiuEntity>();
    24. PageUtils page = cheliangweixiuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheliangweixiu), params), params));
    25. return R.ok().put("data", page);
    26. }
    27. /**
    28. * 前端列表
    29. */
    30. @IgnoreAuth
    31. @RequestMapping("/list")
    32. public R list(@RequestParam Map<String, Object> params,CheliangweixiuEntity cheliangweixiu,
    33. HttpServletRequest request){
    34. EntityWrapper<CheliangweixiuEntity> ew = new EntityWrapper<CheliangweixiuEntity>();
    35. PageUtils page = cheliangweixiuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, cheliangweixiu), params), params));
    36. return R.ok().put("data", page);
    37. }
    38. /**
    39. * 列表
    40. */
    41. @RequestMapping("/lists")
    42. public R list( CheliangweixiuEntity cheliangweixiu){
    43. EntityWrapper<CheliangweixiuEntity> ew = new EntityWrapper<CheliangweixiuEntity>();
    44. ew.allEq(MPUtil.allEQMapPre( cheliangweixiu, "cheliangweixiu"));
    45. return R.ok().put("data", cheliangweixiuService.selectListView(ew));
    46. }
    47. /**
    48. * 查询
    49. */
    50. @RequestMapping("/query")
    51. public R query(CheliangweixiuEntity cheliangweixiu){
    52. EntityWrapper< CheliangweixiuEntity> ew = new EntityWrapper< CheliangweixiuEntity>();
    53. ew.allEq(MPUtil.allEQMapPre( cheliangweixiu, "cheliangweixiu"));
    54. CheliangweixiuView cheliangweixiuView = cheliangweixiuService.selectView(ew);
    55. return R.ok("查询车辆维修成功").put("data", cheliangweixiuView);
    56. }
    57. /**
    58. * 后端详情
    59. */
    60. @RequestMapping("/info/{id}")
    61. public R info(@PathVariable("id") Long id){
    62. CheliangweixiuEntity cheliangweixiu = cheliangweixiuService.selectById(id);
    63. return R.ok().put("data", cheliangweixiu);
    64. }
    65. /**
    66. * 前端详情
    67. */
    68. @IgnoreAuth
    69. @RequestMapping("/detail/{id}")
    70. public R detail(@PathVariable("id") Long id){
    71. CheliangweixiuEntity cheliangweixiu = cheliangweixiuService.selectById(id);
    72. return R.ok().put("data", cheliangweixiu);
    73. }
    74. /**
    75. * 后端保存
    76. */
    77. @RequestMapping("/save")
    78. public R save(@RequestBody CheliangweixiuEntity cheliangweixiu, HttpServletRequest request){
    79. cheliangweixiu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    80. //ValidatorUtils.validateEntity(cheliangweixiu);
    81. cheliangweixiuService.insert(cheliangweixiu);
    82. return R.ok();
    83. }
    84. /**
    85. * 前端保存
    86. */
    87. @RequestMapping("/add")
    88. public R add(@RequestBody CheliangweixiuEntity cheliangweixiu, HttpServletRequest request){
    89. cheliangweixiu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    90. //ValidatorUtils.validateEntity(cheliangweixiu);
    91. cheliangweixiuService.insert(cheliangweixiu);
    92. return R.ok();
    93. }
    94. /**
    95. * 修改
    96. */
    97. @RequestMapping("/update")
    98. @Transactional
    99. public R update(@RequestBody CheliangweixiuEntity cheliangweixiu, HttpServletRequest request){
    100. //ValidatorUtils.validateEntity(cheliangweixiu);
    101. cheliangweixiuService.updateById(cheliangweixiu);//全部更新
    102. return R.ok();
    103. }
    104. /**
    105. * 删除
    106. */
    107. @RequestMapping("/delete")
    108. public R delete(@RequestBody Long[] ids){
    109. cheliangweixiuService.deleteBatchIds(Arrays.asList(ids));
    110. return R.ok();
    111. }
    112. /**
    113. * 提醒接口
    114. */
    115. @RequestMapping("/remind/{columnName}/{type}")
    116. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    117. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    118. map.put("column", columnName);
    119. map.put("type", type);
    120. if(type.equals("2")) {
    121. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    122. Calendar c = Calendar.getInstance();
    123. Date remindStartDate = null;
    124. Date remindEndDate = null;
    125. if(map.get("remindstart")!=null) {
    126. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    127. c.setTime(new Date());
    128. c.add(Calendar.DAY_OF_MONTH,remindStart);
    129. remindStartDate = c.getTime();
    130. map.put("remindstart", sdf.format(remindStartDate));
    131. }
    132. if(map.get("remindend")!=null) {
    133. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    134. c.setTime(new Date());
    135. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    136. remindEndDate = c.getTime();
    137. map.put("remindend", sdf.format(remindEndDate));
    138. }
    139. }
    140. Wrapper<CheliangweixiuEntity> wrapper = new EntityWrapper<CheliangweixiuEntity>();
    141. if(map.get("remindstart")!=null) {
    142. wrapper.ge(columnName, map.get("remindstart"));
    143. }
    144. if(map.get("remindend")!=null) {
    145. wrapper.le(columnName, map.get("remindend"));
    146. }
    147. String tableName = request.getSession().getAttribute("tableName").toString();
    148. if(tableName.equals("weixiuyuan")) {
    149. wrapper.eq("weixiuzhanghao", (String)request.getSession().getAttribute("username"));
    150. }
    151. int count = cheliangweixiuService.selectCount(wrapper);
    152. return R.ok().put("count", count);
    153. }
    154. }

     

     

     

  • 相关阅读:
    Spring AOP 简介
    《数据可视化基础》读后感
    Vue基础5
    思维导图软件测评Draw、Gitmind、Xmind、Effie、Miro、Excalidraw
    计算机基本架构-时序逻辑电路回顾
    【C++入门】不能重载为友元函数的4个运算符(=, ->, [ ], ( ))
    Linux内核源码分析 (B.x)Linux内存布局
    Leetcode刷题75. 颜色分类
    JavaPTA练习题 7-3 打印99乘法表
    种类并查集(反集),学习T宝代码
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/125745467