搭建一个基于Spring Boot的驾校管理系统可以涵盖多个功能模块,例如学员管理、教练管理、课程管理、考试管理、车辆管理等。以下是一个简化的步骤指南,帮助你快速搭建一个基础的系统。
1. 项目初始化
使用 Spring Initializr 生成一个Spring Boot项目:
- 访问 Spring Initializr。
- 选择以下依赖:
- Spring Web(用于构建RESTful API或MVC应用)
- Spring Data JPA(用于数据库操作)
- Spring Security(用于用户认证和授权)
- Thymeleaf(可选,用于前端页面渲染)
- MySQL Driver(或其他数据库驱动)
- Lombok(简化代码)
- 点击"Generate"下载项目。
2. 项目结构
项目结构大致如下:
src/main/java/com/example/drivingschool
├── controller
├── service
├── repository
├── model
├── config
└── DrivingSchoolApplication.java
src/main/resources
├── static
├── templates
└── application.properties
3. 配置数据库
在application.properties
中配置数据库连接:
properties
spring.datasource.url=jdbc:mysql://localhost:3306/driving_school
spring.datasource.username=root
spring.datasource.password=yourpassword
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
4. 创建实体类
在model
包中创建实体类,例如Student
、Instructor
、Course
、Exam
、Vehicle
等。
学员实体类 (Student
)
java
package com.example.drivingschool.model;
import javax.persistence.*;
import java.util.Set;
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
private String phoneNumber;
@OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
private Set<Course> courses;
@OneToMany(mappedBy = "student", cascade = CascadeType.ALL)
private Set<Exam> exams;
// Getters and Setters
}
教练实体类 (Instructor
)
java
package com.example.drivingschool.model;
import javax.persistence.*;
import java.util.Set;
@Entity
public class Instructor {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
private String phoneNumber;
@OneToMany(mappedBy = "instructor", cascade = CascadeType.ALL)
private Set<Course> courses;
// Getters and Setters
}
课程实体类 (Course
)
java
package com.example.drivingschool.model;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "student_id")
private Student student;
@ManyToOne
@JoinColumn(name = "instructor_id")
private Instructor instructor;
@ManyToOne
@JoinColumn(name = "vehicle_id")
private Vehicle vehicle;
private LocalDateTime startTime;
private LocalDateTime endTime;
// Getters and Setters
}
考试实体类 (Exam
)
java
package com.example.drivingschool.model;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Exam {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "student_id")
private Student student;
private LocalDateTime examDate;
private String result;
// Getters and Setters
}
车辆实体类 (Vehicle
)
java
package com.example.drivingschool.model;
import javax.persistence.*;
import java.util.Set;
@Entity
public class Vehicle {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String make;
private String model;
private String licensePlate;
@OneToMany(mappedBy = "vehicle", cascade = CascadeType.ALL)
private Set<Course> courses;
// Getters and Setters
}
5. 创建Repository接口
在repository
包中创建JPA Repository接口。
java
package com.example.drivingschool.repository;
import com.example.drivingschool.model.Student;
import org.springframework.data.jpa.repository.JpaRepository;
public interface StudentRepository extends JpaRepository<Student, Long> {
}
6. 创建Service层
在service
包中创建服务类。
java
package com.example.drivingschool.service;
import com.example.drivingschool.model.Student;
import com.example.drivingschool.repository.StudentRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class StudentService {
@Autowired
private StudentRepository studentRepository;
public List<Student> getAllStudents() {
return studentRepository.findAll();
}
public Student getStudentById(Long id) {
return studentRepository.findById(id).orElse(null);
}
public Student saveStudent(Student student) {
return studentRepository.save(student);
}
public void deleteStudent(Long id) {
studentRepository.deleteById(id);
}
}
7. 创建Controller层
在controller
包中创建控制器类。
java
package com.example.drivingschool.controller;
import com.example.drivingschool.model.Student;
import com.example.drivingschool.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping("/students")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping
public String listStudents(Model model) {
model.addAttribute("students", studentService.getAllStudents());
return "students";
}
@GetMapping("/new")
public String showStudentForm(Model model) {
model.addAttribute("student", new Student());
return "student-form";
}
@PostMapping
public String saveStudent(@ModelAttribute Student student) {
studentService.saveStudent(student);
return "redirect:/students";
}
@GetMapping("/edit/{id}")
public String showEditForm(@PathVariable Long id, Model model) {
model.addAttribute("student", studentService.getStudentById(id));
return "student-form";
}
@GetMapping("/delete/{id}")
public String deleteStudent(@PathVariable Long id) {
studentService.deleteStudent(id);
return "redirect:/students";
}
}
8. 创建前端页面
在src/main/resources/templates
目录下创建Thymeleaf模板文件。
students.html
html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Students</title>
</head>
<body>
<h1>Students</h1>
<a href="/students/new">Add New Student</a>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th>Phone Number</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<tr th:each="student : ${students}">
<td th:text="${student.id}"></td>
<td th:text="${student.name}"></td>
<td th:text="${student.email}"></td>
<td th:text="${student.phoneNumber}"></td>
<td>
<a th:href="@{/students/edit/{id}(id=${student.id})}">Edit</a>
<a th:href="@{/students/delete/{id}(id=${student.id})}">Delete</a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
student-form.html
html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Student Form</title>
</head>
<body>
<h1>Student Form</h1>
<form th:action="@{/students}" th:object="${student}" method="post">
<input type="hidden" th:field="*{id}" />
<label>Name:</label>
<input type="text" th:field="*{name}" /><br/>
<label>Email:</label>
<input type="text" th:field="*{email}" /><br/>
<label>Phone Number:</label>
<input type="text" th:field="*{phoneNumber}" /><br/>
<button type="submit">Save</button>
</form>
</body>
</html>
9. 运行项目
在IDE中运行DrivingSchoolApplication.java
,访问http://localhost:8080/students
即可看到学员列表页面。
---帮助链接:通过网盘分享的文件:share
链接: https://pan.baidu.com/s/1Vu-rUCm2Ql5zIOtZEvndgw?pwd=5k2h 提取码: 5k2h
10. 进一步扩展
- 教练管理:实现教练的增删改查功能。
- 课程管理:允许学员预约课程,并记录课程时间。
- 考试管理:记录学员的考试时间和成绩。
- 车辆管理:管理驾校的车辆信息。
- 搜索功能:实现学员、教练、课程的搜索功能。
- 分页功能:对学员列表进行分页显示。
通过以上步骤,你可以搭建一个基础的驾校管理系统,并根据需求进一步扩展功能。