共享车位|基于SpringBoot+vue+node共享车位平台的设计与实现
作者主页:编程千纸鹤
作者简介:Java、前端、Pythone开发多年,做过高程,项目经理,架构师
主要内容:Java项目开发、毕业设计开发、面试技术整理、最新技术分享
收藏点赞不迷路 关注作者有好处
文末获得源码
项目编号:BS-PT-075
前言:
现如今,私家车辆数量越来越多,方便了人们出行的同时,也带来了很多问题。其中,停车成了最大的难题,本平台的前台帮助用户快速查找空闲车位,做到高效停车,后台帮助停车场管理员管理有限的车位资源。
本文针对上述问题,设计开发出一个B/S架构的基于SpringBoot框架技术的共享车位平台。在整个平台的开发周期中,开发选用SpringBoot框架,选用MYSQL数据库和Redis数据库来实现。主要完成以下几个方面的研究:
1.分析在SpringBoot应用程序开发过程中所采用的C/S结构和B/S结构的优缺点,提出了基于SpringBoot共享车位平台的基本实行方案;
2.对功能需求详细分析,并且也对非功能需求以及系统运行环境进行简单分析,分析各个功能模块的设计和实现,分析寻找车位流程以及实现方案。
3.实现了登录注册、用户管理、停车场管理、车位管理、车位和车辆状态监控、查看用户留言、查看附近停车场、查看车位信息、在线留言等功能。
本平台UI简洁美观,极易使用,功能完善。为用户提供停车场、车位等信息,方便用户快速寻找空闲的停车位;方便管理员高效管理车位资源,及时查看用户反馈信息,快速了解车位情况。
一,项目简介
本平台包括前台系统和后台管理系统,前台系统供用户使用,后台管理系统供管理员使用。管理员又分为超级管理员和普通管理员两个角色,超级管理员除了拥有普通管理员的所有权限外,还能对普通管理员进行管理。用户可以进行登录注册、找回密码、查看附近停车场、查看车位信息、在线留言。管理员可以进行登录注册、管理用户信息、管理停车场信息、管理停车场车位信息、状态监控、查看用户在线留言。
前台系统
用户对象:
(1)用户可以登录、通过手机验证码辅助注册账号、找回密码。
(2)用户可以在个人中心完善个人信息、修改个人信息、修改密码等操作。
(3)用户可以查看附近停车场信息。
(4)用户可以查看指定停车场内车位的信息,使用空闲车位,并支持一键快速查找空闲车位。
(5)用户可以在线留言,通过发表留言及时向管理员反馈遇到的问题。
(6)用户可以通过地图查看公司所在地理位置,以及公司地址、联系方式等信息。
后台管理系统
超级管理员对象:
(1)超级管理员对普通管理员进行管理,可以新增管理员、删除管理员、修改管理员信息、查看管理员列表、重置管理员密码。
(2)超级管理员拥有普通管理员的所有权限。
普通管理员对象(以下统称为“管理员”):
(1) 管理员可以在个人中心完善个人信息、修改个人信息、修改密码等操作。
(2) 管理员对用户信息进行管理,可以停用/启用、新增、删除、条件查询用户,修改用户信息、导出用户信息。
(3) 管理员对停车场信息进行管理,可以停用/启用、新增、删除、条件查询停车场,修改停车场信息、导出停车场信息。
(4) 管理员对停车场车位信息进行管理,可以新增、删除、条件查询车位,修改车位信息。
(5) 管理员可以监控所有的车辆状态和指定停车场内的车位状态,生成统计数据后通过饼状图和柱状图进行数据展示。
(6) 用户留言后,管理员可以在用户在线留言中查看留言内容和留言人信息,并可以调整留言处理进度。
二,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
后台开发技术:Springboot+Mybatis
前端开发技术:Vue+ElementUI+Nodejs
三,系统展示
5.1 用户停放车辆实现
四,核心代码展示
package com.znz.web.controller.car;import com.znz.car.domain.CarCar;
import com.znz.car.domain.vo.QueryCarListVo;
import com.znz.car.service.ICarCarService;
import com.znz.common.annotation.Log;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;
import java.util.List;/*** 车辆Controller** @author znz* @date 2022-10-15*/
@Api(tags = "车辆状态")
@RestController
@RequestMapping("/car/car")
public class CarCarController extends BaseController {@Autowiredprivate ICarCarService carCarService;/*** 查询车辆列表*/@ApiOperation("查询车辆列表")@PreAuthorize("@ss.hasPermi('car:carSta:list')")@GetMapping("/list")public TableDataInfo list(CarCar carCar) {startPage();List<QueryCarListVo> list = carCarService.selectCarCarList(carCar);return getDataTable(list);}/*** 导出车辆列表*/@PreAuthorize("@ss.hasPermi('car:carSta:export')")@Log(title = "车辆", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, CarCar carCar) {List<QueryCarListVo> list = carCarService.selectCarCarList(carCar);ExcelUtil<QueryCarListVo> util = new ExcelUtil<QueryCarListVo>(QueryCarListVo.class);util.exportExcel(response, list, "车辆数据");}/*** 获取车辆详细信息*/@PreAuthorize("@ss.hasPermi('car:carSta:query')")@GetMapping(value = "/{carId}")public AjaxResult getInfo(@PathVariable("carId") Long carId) {return AjaxResult.success(carCarService.selectCarCarByCarId(carId));}/*** 新增车辆*/@PreAuthorize("@ss.hasPermi('car:carSta:add')")@Log(title = "车辆", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody CarCar carCar) {return toAjax(carCarService.insertCarCar(carCar));}/*** 修改车辆状态*/@PreAuthorize("@ss.hasPermi('car:carSta:edit')")@Log(title = "车辆", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestParam("carId") Long carId,@RequestParam("carStatus")String carStatus) {CarCar carCar = new CarCar();carCar.setCarId(carId);carCar.setStatus(carStatus);return toAjax(carCarService.updateCarCar(carCar));}/*** 删除车辆*/@PreAuthorize("@ss.hasPermi('car:carSta:remove')")@Log(title = "车辆", businessType = BusinessType.DELETE)@DeleteMapping("/{carIds}")public AjaxResult remove(@PathVariable Long[] carIds) {return toAjax(carCarService.deleteCarCarByCarIds(carIds));}
}
package com.znz.web.controller.car;import com.znz.car.domain.CarCarpark;
import com.znz.car.service.ICarCarparkService;
import com.znz.common.annotation.Log;
import com.znz.common.constant.Constants;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;
import java.util.List;/*** 停车场Controller** @author znz* @date 2022-10-14*/
@Api(tags = "停车场表")
@RestController
@RequestMapping("/car/carpark")
public class CarCarparkController extends BaseController {@Autowiredprivate ICarCarparkService carCarparkService;/*** 查询所有数据*/@ApiOperation("查询所有停车场数据")@GetMapping("/getAll")public AjaxResult getAll() {List<CarCarpark> carParkList = carCarparkService.getAll();for (CarCarpark carCarpark : carParkList) {String photo = carCarpark.getPhoto();photo = Constants.PHOTO_PREFIX + photo;carCarpark.setPhoto(photo);}return AjaxResult.success().put("carParkList", carParkList);}/*** 查询停车场列表(带分页-后台)*/@PreAuthorize("@ss.hasPermi('car:carpark:list')")@GetMapping("/list")public TableDataInfo list(CarCarpark carCarpark) {startPage();List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);return getDataTable(list);}/*** 导出停车场列表*/@PreAuthorize("@ss.hasPermi('car:carpark:export')")@Log(title = "停车场", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, CarCarpark carCarpark) {List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);ExcelUtil<CarCarpark> util = new ExcelUtil<CarCarpark>(CarCarpark.class);util.exportExcel(response, list, "停车场数据");}/*** 获取停车场详细信息*/@PreAuthorize("@ss.hasPermi('car:carpark:query')")@GetMapping(value = "/{carparkId}")public AjaxResult getInfo(@PathVariable("carparkId") Long carparkId) {return AjaxResult.success(carCarparkService.selectCarCarparkByCarparkId(carparkId));}/*** 新增停车场*/@PreAuthorize("@ss.hasPermi('car:carpark:add')")@Log(title = "停车场", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody CarCarpark carCarpark) {return toAjax(carCarparkService.insertCarCarpark(carCarpark));}/*** 修改停车场*/@PreAuthorize("@ss.hasPermi('car:carpark:edit')")@Log(title = "停车场", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody CarCarpark carCarpark) {return toAjax(carCarparkService.updateCarCarpark(carCarpark));}/*** 删除停车场*/@PreAuthorize("@ss.hasPermi('car:carpark:remove')")@Log(title = "停车场", businessType = BusinessType.DELETE)@DeleteMapping("/{carparkIds}")public AjaxResult remove(@PathVariable Long[] carparkIds) {return toAjax(carCarparkService.deleteCarCarparkByCarparkIds(carparkIds));}/*** 分页查询停车场数据(前台)*/@ApiOperation("前台-分页查询停车场列表")@GetMapping("/pageList")public TableDataInfo pageList(CarCarpark carCarpark) {startPage();List<CarCarpark> list = carCarparkService.selectCarCarparkList(carCarpark);for (CarCarpark carpark : list) {String photo = carpark.getPhoto();photo = Constants.PHOTO_PREFIX + photo;carpark.setPhoto(photo);}return getDataTable(list);}}
package com.znz.web.controller.car;import com.znz.car.domain.CarMessage;
import com.znz.car.service.ICarMessageService;
import com.znz.common.annotation.Log;
import com.znz.common.core.controller.BaseController;
import com.znz.common.core.domain.AjaxResult;
import com.znz.common.core.page.TableDataInfo;
import com.znz.common.enums.BusinessType;
import com.znz.common.utils.poi.ExcelUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletResponse;
import java.util.List;/*** 留言Controller** @author znz* @date 2022-10-17*/
@RestController
@RequestMapping("/car/message")
public class CarMessageController extends BaseController {@Autowiredprivate ICarMessageService carMessageService;/*** 查询留言列表*/@PreAuthorize("@ss.hasPermi('car:message:list')")@GetMapping("/list")public TableDataInfo list(CarMessage carMessage) {startPage();List<CarMessage> list = carMessageService.selectCarMessageList(carMessage);return getDataTable(list);}/*** 导出留言列表*/@ApiOperation("导出留言列表")@PreAuthorize("@ss.hasPermi('car:message:export')")@Log(title = "留言", businessType = BusinessType.EXPORT)@PostMapping("/export")public void export(HttpServletResponse response, CarMessage carMessage) {List<CarMessage> list = carMessageService.selectCarMessageList(carMessage);ExcelUtil<CarMessage> util = new ExcelUtil<CarMessage>(CarMessage.class);util.exportExcel(response, list, "留言数据");}/*** 获取留言详细信息*/@PreAuthorize("@ss.hasPermi('car:message:query')")@GetMapping(value = "/{messageId}")public AjaxResult getInfo(@PathVariable("messageId") Long messageId) {return AjaxResult.success(carMessageService.selectCarMessageByMessageId(messageId));}/*** 新增留言*/@PreAuthorize("@ss.hasPermi('car:message:add')")@Log(title = "留言", businessType = BusinessType.INSERT)@PostMappingpublic AjaxResult add(@RequestBody CarMessage carMessage) {return toAjax(carMessageService.insertCarMessage(carMessage));}/*** 修改留言*/@PreAuthorize("@ss.hasPermi('car:message:edit')")@Log(title = "留言", businessType = BusinessType.UPDATE)@PutMappingpublic AjaxResult edit(@RequestBody CarMessage carMessage) {return toAjax(carMessageService.updateCarMessage(carMessage));}/*** 删除留言*/@PreAuthorize("@ss.hasPermi('car:message:remove')")@Log(title = "留言", businessType = BusinessType.DELETE)@DeleteMapping("/{messageIds}")public AjaxResult remove(@PathVariable Long[] messageIds) {return toAjax(carMessageService.deleteCarMessageByMessageIds(messageIds));}
}
五,项目总结
共享车位|基于SpringBoot+vue+node共享车位平台的设计与实现相关推荐
- 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付
演示视频: 基于SpringBoot vue的电脑商城平台源码和论文含支付宝沙箱支付演示视频 支付宝沙箱: package com.java.controller;import java.util.* ...
- 基于SpringBoot vue的茶叶商城平台源码和论文含支付宝沙箱支付
此项目是前后端分离的 后台项目:shop 前端项目:Vue-shop 后端项目启动步骤: 1.先把sql导入数据库 2.把后台项目导入编辑器 3.修改数据库配置 4.启动项目 前端项目启动步骤: ...
- 计算机毕业设计及论文-原创(基于SpringBoot的奥运村服务管理平台的设计与实现)
计算机毕业设计及论文-基于SpringBoot的运动员服务管理平台的设计与实现 前言(说明及本人联系方式) 介绍 主要技术介绍 整体架构图 功能架构图 部分页面展示 主要的组织结构 结语 前言(说明及 ...
- 基于springboot+vue的“考研资讯平台”程序设计实现【毕业论文,源码】
摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个电商的服务,随之就产生了"考研资讯平台",这样就让学生考研资讯平台更加 ...
- 基于SpringBoot+VUE的酒店管理信息系统的设计思路
技术栈包含SpringBoot+IDEA+SSM+MYSQL+Maven+VUE等 部分功能简述如下(需要源码私信沟通): 1.注册会员 用户可以通过页面右上角的注册按钮进入会员注册页面,之后根据提示 ...
- 游戏道具平台|基于Springboot+Vue实现游戏道具平台系统
作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...
- 基于Springboot+vue的大学生心理健康平台 elementui
1管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员来管理后台系统.主要功能有:首页.个人中心.系统公告管理.用户管理.心理咨询师管理.心灵专栏管理.压力测试管理.测试数据管理.咨询师预约 ...
- 杨校老师课堂之基于SpringBoot + Vue 的智能停车场平台设计
1. 获取代码: 自助获取:https://download.csdn.net/download/kese7952/84988573 点我去下载 2. 技术栈 后端 SpringBoot + Spri ...
- java基于Springboot+Vue的校园兼职平台大学生求职招聘系统 elementui前后端分离
本文从学生的功能要求出发,建立了校园兼职系统 ,系统中的功能模块主要是实现管理员:首页.个人中心.专业管理.商家管理.热门兼职管理.学生管理.兼职接单管理.学生咨询管理.兼职任务管理.完成评价管理.管 ...
最新文章
- 深入浅出Unix IO模型
- 基于BCH的SLP代币超过1000种,探秘SLP的内部生态
- leetcode算法题--K 次串联后最大子数组之和★
- Linux wget 命令详解
- 分析mysql日志文件_MySQL日志文件与分析
- 持续集成:部署发布篇
- 10以内数的组成分解图_大班数学教案《10以内数的组成》
- Git之HEAD和origin
- input内的字体颜色_嘉兴市硅胶喷涂颜色油订制
- Python-100 练习题 02
- win10浏览器闪退_Win10系统Edge浏览器闪退问题的解决方法
- python课程思维导图_零基础Python学习思维导图,记得收藏
- JavaWeb知识总结
- 使用hiredis接口(Synchronous API)编写redis流水线客户端
- 掌握QCC推行方法,为企业创造经济效益
- 孙玄:微服务架构何去何从?
- Ubuntu 关闭服务详解
- 神州三号开发板stm32 f103ze jlink连接失败拜求高手指点
- BZOJ4049][CERC2014]Mountainous landscape-[线段树+凸包+二分]
- Java Annotation自定义注解详解
热门文章
- vc打印机相关设置和pos打印机
- 用服务器和共享服务器?
- dds是c语言吗,基于单片机的DDS算法的实现
- android 国密签名,关于国密 (sm2,sm3,sm4)在Linux、python、Android、java、ios中的...
- PHP_EOL不起作用或者无效的原因
- Java文本文件切割
- IDEA学习篇——findbugs 插件 下载、安装、使用详解
- Python手记:global 和 nonlocal的区别
- 樱桃键盘驱动在哪下_Ins风深空灰白光限定版-杜伽K310机械键盘上手
- 用户故事(三):用户故事该怎么写?