Java项目:122SpringBoot驾校预约管理系统

2024-01-17 19:04

本文主要是介绍Java项目:122SpringBoot驾校预约管理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博主主页:Java旅途
简介:分享计算机知识、学习路线、系统源码及教程
文末获取源码

一、项目介绍

驾校预约管理系统使用SpringBoot+Mybatis进行开发,系统提供三种角色,功能如下:

管理员:

  • 学员管理
  • 教练管理
  • 车辆管理
  • 教练车辆绑定
  • 车辆维修

教练:

  • 我的课程
  • 我的学员
  • 车辆报修

学员:

  • 预约练车
  • 我的预约
  • 取消预约
  • 练车记录

二、技术框架

  • 后端:SpringBoot,Mybatis
  • 前端:layui

三、安装教程

  1. 用idea打开项目
  2. 在idea中配置jdk环境
  3. 配置maven环境并下载依赖
  4. 新建数据库,导入数据库文件
  5. 在application.yml文件中将数据库账号密码改成自己本地的
  6. 启动运行。管理员账号密码 18811111111/123456,教练账号密码 15712345678/123456,学员账号密码 18888888888/123456

四、项目截图

image-20230720151747612

image-20230720151716684

image-20230720151804573

image-20230720152328820

五、相关代码

LoginController

package com.singulee.carschool.controller;import com.singulee.carschool.pojo.Student;
import com.singulee.carschool.pojo.Teacher;
import com.singulee.carschool.pojo.User;
import com.singulee.carschool.service.StudentService;
import com.singulee.carschool.service.TeacherService;
import com.singulee.carschool.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;/*** Created with IntelliJ IDEA.* User: lishuai* Date: 2019/03/19* Description:* Version: V1.0*/
@Controller
@RequestMapping("/login")
public class LoginController {final private StudentService studentService;final private TeacherService teacherService;final private UserService userService;@Autowiredpublic LoginController(StudentService studentService, TeacherService teacherService, UserService userService) {this.studentService = studentService;this.teacherService = teacherService;this.userService = userService;}/*** 登录  返回格式** @param map* @param request* @return*/@RequestMapping(value = "/login", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> login(@RequestBody Map<String, String> map, HttpServletRequest request) {boolean flag = false;String phone = map.get("phone");String password = map.get("password");User user = userService.findByUsername(phone);if (null != user && user.getPassword().equals(password)) {Integer userType = user.getUserType();if (userType == 1) {Student student = studentService.getByPhone(phone);if (student != null) {flag = true;student.setStupwd(user.getPassword());request.getSession().setAttribute("user", student);}} else {Teacher teacher = new Teacher();teacher.setTeaphone(phone);Integer roleTmp = user.getUserType() == 3 ? 1 : 0;teacher.setTearole(roleTmp);Teacher teacherRe = teacherService.selectByPone(teacher);if (teacherRe != null) {flag = true;teacher.setTeapwd(user.getPassword());request.getSession().setAttribute("user", teacherRe);}}}Map<String, Object> mapjson = new HashMap<>();if (flag) {mapjson.put("code", 200);mapjson.put("role", user.getUserType());} else {mapjson.put("code", 201);}return mapjson;}/*** 教练 管理员的修改用户信息** @param request* @return*/@RequestMapping(value = "/teacherInfo", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> teacherInfo(HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();Teacher teacher = (Teacher) request.getSession().getAttribute("user");teacher.setTeapwd("");mapjson.put("code", 200);mapjson.put("data", teacher);return mapjson;}/*** 注销登录** @param request* @return*/@RequestMapping(value = "/logout")public String loginOut(HttpServletRequest request) {request.getSession().removeAttribute("user");return "/login.html";}/*** @param request* @return*/@RequestMapping(value = "/getStudentInfo", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> getStudentInfo(HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();Student student = (Student) request.getSession().getAttribute("user");student.setStupwd("");mapjson.put("code", 200);mapjson.put("data", student);return mapjson;}/*** 获得验证码** @param map* @param request* @return*/@RequestMapping(value = "/getCode", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> getCode(@RequestBody Map<String, String> map, HttpServletRequest request) {String phone = map.get("phone");Map<String, Object> mapCode = new HashMap<>();Map<String, Object> mapjson = new HashMap<>();int mobileCode = (int) ((Math.random() * 9 + 1) * 100000);mapCode.put("number", mobileCode + "");mapCode.put("phone", phone);boolean flag = false;User user = userService.findByUsername(phone);if (user != null) {flag = true;}
//        if (flag&& Send.sendCode(mobileCode,phone)){if (flag) {//发送手机号到手机mapjson.put("code", 200);mapjson.put("number", mobileCode);mapCode.put("time", System.currentTimeMillis());System.out.println(mobileCode);request.getSession().setAttribute("smscode", mapCode);} else {mapjson.put("code", 201);mapjson.put("msg", "手机号不存在,请查证");}return mapjson;}/*** 获得验证码 公用** @param map* @param request* @return*/@RequestMapping(value = "/getPhoneCode", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> getPhoneCode(@RequestBody Map<String, String> map, HttpServletRequest request) {String phone = map.get("phone");Teacher teacher = new Teacher();teacher.setTeaphone(phone);Map<String, Object> mapCode = new HashMap<>();Map<String, Object> mapjson = new HashMap<>();int mobileCode = (int) ((Math.random() * 9 + 1) * 100000);mapCode.put("number", mobileCode + "");mapCode.put("phone", phone);boolean flag = false;
//        if (flag&& Send.sendCode(mobileCode,phone)){mapCode.put("time", System.currentTimeMillis() + "");mapjson.put("code", 200);mapjson.put("number", mobileCode + "");request.getSession().setAttribute("smscode", mapCode);
//    }return mapjson;}@RequestMapping(value = "/updatePhone", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> updatePhone(@RequestBody Map<String, String> map, HttpServletRequest request) {String phone = map.get("phone");String number = map.get("number");Map<String, Object> mapjson = new HashMap<>();Object object = request.getSession().getAttribute("user");//判断验证码手机是否合法Map<String, Object> mapSession = (Map<String, Object>) request.getSession().getAttribute("smscode");System.out.println(mapSession);System.out.println(map);if (mapSession.get("phone").toString().equals(phone) && mapSession.get("number").toString().equals(number) &&System.currentTimeMillis() - Long.parseLong(mapSession.get("time").toString()) < 60 * 1000) {if (object instanceof Student) {Student student = (Student) object;Student studenttmp = studentService.getByPhone(student.getStuphone());studenttmp.setStuphone(phone);request.getSession().setAttribute("user", studenttmp);return studentService.updateStudent(studenttmp);} else {Teacher teacher = (Teacher) object;Teacher teachertmp = teacherService.selectByPone(teacher);teachertmp.setTeaphone(phone);request.getSession().setAttribute("user", teachertmp);return teacherService.updateTeacher(teachertmp);}} else {mapjson.put("code", 201);mapjson.put("msg", "时间超时重新发送");}return mapjson;}/*** 获得用户的信息** @param request* @return*/@RequestMapping(value = "/getUserInfo", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> updatePhone(HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();Object object = request.getSession().getAttribute("user");//判断验证码手机是否合法if (object instanceof Student) {Student student = (Student) object;mapjson.put("img", student.getStuimg());mapjson.put("name", student.getStuname());} else {Teacher teacher = (Teacher) object;mapjson.put("img", teacher.getTeaimg());mapjson.put("name", teacher.getTeaname());}return mapjson;}/*** 验证手机号和验证码** @param map* @param request* @return*/@RequestMapping(value = "/resetPassword", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> checkCode(@RequestBody Map<String, String> map, HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();String phone = map.get("phone");String number = map.get("number");String password = map.get("password");Map<String, Object> mapSession = (Map<String, Object>) request.getSession().getAttribute("smscode");if (mapSession.get("phone").equals(phone) && mapSession.get("number").equals(number) &&System.currentTimeMillis() - Long.parseLong(mapSession.get("time").toString()) < 60 * 1000) {boolean action;action = userService.updatePassword(phone, password);if (action) {mapjson.put("code", 200);} else {mapjson.put("code", 202);}} else {request.getSession().removeAttribute("smscode");mapjson.put("code", 201);}return mapjson;}@RequestMapping(value = "/updatePasswordTeacher", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> updatePasswordTeacher(@RequestBody Map map, HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();Teacher teacher = (Teacher) request.getSession().getAttribute("user");//判断原密码是否正确User user = userService.findByUsername(teacher.getTeaphone());System.out.println(user.getPassword());if (map.get("oldpassword").toString().equals(user.getPassword())) {//修改session的的密码teacher.setTeapwd(map.get("newpassword").toString());request.getSession().setAttribute("user", teacher);//修改数据库中的boolean flag = userService.updatePassword(user.getUsername(), teacher.getTeapwd());if (flag) {mapjson.put("code", 200);mapjson.put("msg", "修改成功!");return mapjson;} else {mapjson.put("code", 201);mapjson.put("msg", "修改失败!");return mapjson;}} else {mapjson.put("code", 201);mapjson.put("msg", "原密码错误");return mapjson;}}/*** 修改密码 学生** @param map* @param request* @return*/@RequestMapping(value = "/updatePasswordStudent", method = RequestMethod.POST)@ResponseBodypublic Map<String, Object> updatePasswordStudent(@RequestBody Map map, HttpServletRequest request) {Map<String, Object> mapjson = new HashMap<>();Student student = (Student) request.getSession().getAttribute("user");//判断原密码是否正确User user = userService.findByUsername(student.getStuphone());System.out.println(user.getPassword());if (map.get("oldpassword").toString().equals(user.getPassword())) {//修改session的的密码student.setStupwd(map.get("newpassword").toString());request.getSession().setAttribute("user", student);//修改数据库中的//修改数据库中的boolean flag = userService.updatePassword(user.getUsername(), student.getStupwd());if (flag) {mapjson.put("code", 200);mapjson.put("msg", "修改成功!");return mapjson;} else {mapjson.put("code", 201);mapjson.put("msg", "修改失败!");return mapjson;}} else {mapjson.put("code", 201);mapjson.put("msg", "原密码错误");return mapjson;}}@ResponseBody@RequestMapping(value = "/upload", method = RequestMethod.POST)public Map<String, Object> upload(HttpServletRequest request, @RequestParam("file") MultipartFile file) {Map<String, Object> map = new HashMap<>();//        String path=request.getSession().getServletContext().getRealPath("/");String path = request.getSession().getServletContext().getRealPath("/img");System.out.println(path);String fileName = UUID.randomUUID().toString().replaceAll("-", "") + file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));System.out.println(fileName);System.out.println(path);File targetFile = new File(path, fileName);if (!targetFile.exists()) {targetFile.mkdirs();}// 保存try {file.transferTo(targetFile);map.put("code", 200);map.put("data", fileName);} catch (Exception e) {e.printStackTrace();map.put("code", 201);}return map;}
}

大家点赞、收藏、关注、评论啦 、👇🏻点开下方卡片👇🏻关注后回复 105

这篇关于Java项目:122SpringBoot驾校预约管理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/616909

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd