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利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法