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

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B