简单学生管理系统

This commit is contained in:
origin 2024-10-27 13:57:15 +08:00
commit 7ba4645883
7 changed files with 259 additions and 0 deletions

View File

@ -0,0 +1,73 @@
package edu.gjq.controller;
import edu.gjq.pojo.Course;
import edu.gjq.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
public class CourseController {
private final CourseService courseService;
@Autowired
public CourseController(CourseService courseService) {
this.courseService = courseService;
}
// 加载课程页面
@GetMapping("/coursepage")
public String getCoursePage(){
return "course";
}
// 处理数据
@GetMapping("/courses")
public String getAllCourses(Model model){
List<Course> courses = courseService.getAllCourses();
model.addAttribute("courses",courses);
return "course";
}
@GetMapping("/addcoursepage")
public String addCoursePage(){
return "addcourse";
}
@PostMapping("/addcourse")
public String addCourse(@ModelAttribute Course course) {
courseService.addCourse(course);
return "redirect:/courses";
}
@GetMapping("/updatecoursepage/{id}")
public String updateCoursePage(@PathVariable String id, Model model){
Course course = courseService.getCourseById(id);
model.addAttribute("course",course);
return "updatecourses";
}
@PostMapping("/updatecourse")
public String updateCourse(@ModelAttribute Course course) {
courseService.updateCourse(course);
return "redirect:/courses";
}
@GetMapping("/deletecourse/{id}")
public String deleteCourse(@PathVariable String id) {
courseService.deleteCourse(id);
return "redirect:/courses";
}
// 查询课程学生选课情况
@GetMapping("/enrollments/{courseId}")
public String getEnrollments(@PathVariable String courseId, Model model) {
// 假设有一个方法 getEnrollmentsByCourseId 来获取选课情况
// 这里需要根据实际的业务逻辑来实现
List<?> enrollments = courseService.getEnrollmentsByCourseId(courseId);
model.addAttribute("enrollments", enrollments);
return "enrollments";
}
}

View File

@ -0,0 +1,26 @@
package edu.gjq.mapper;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment;
import java.util.List;
public interface CourseMapper {
// 查询全部课程信息
List<Course> getAll();
// 根据id查询课程
Course getById(String id);
// 添加课程
void insertCourse(Course course);
// 更新课程
void update(Course course);
// 删除课程
void deleteById(String id);
// 查询课程学生选课情况
List<Enrollment> getEnrollmentsByCourseId(String courseId);
}

View File

@ -0,0 +1,11 @@
package edu.gjq.pojo;
import lombok.Data;
@Data
public class Enrollment {
private String studentId; // 学生ID
private String studentName; // 学生姓名
private Integer courseId; // 课程ID
private String courseName; // 课程名称
}

View File

@ -0,0 +1,15 @@
package edu.gjq.service;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment;
import java.util.List;
public interface CourseService {
List<Course> getAllCourses();
void addCourse(Course course);
Course getCourseById(String id);
void updateCourse(Course course);
void deleteCourse(String id);
List<Enrollment> getEnrollmentsByCourseId(String courseId);
}

View File

@ -0,0 +1,49 @@
package edu.gjq.service.impl;
import edu.gjq.mapper.CourseMapper;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment;
import edu.gjq.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class CourseServiceImpl implements CourseService {
private final CourseMapper courseMapper;
@Autowired
public CourseServiceImpl(CourseMapper courseMapper) {
this.courseMapper = courseMapper;
}
@Override
public List<Course> getAllCourses() {
return courseMapper.getAll();
}
@Override
public void addCourse(Course course) {
courseMapper.insertCourse(course);
}
@Override
public Course getCourseById(String id) {
return courseMapper.getById(id);
}
@Override
public void updateCourse(Course course) {
courseMapper.update(course);
}
@Override
public void deleteCourse(String id) {
courseMapper.deleteById(id);
}
@Override
public List<Enrollment> getEnrollmentsByCourseId(String courseId) {
return (List<Enrollment>) courseMapper.getEnrollmentsByCourseId(courseId);
}
}

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="edu.gjq.mapper.CourseMapper">
<!-- 通用查询语句 -->
<sql id="commonSelect">
select id, name
from course
</sql>
<!-- 查询所有课程 -->
<select id="getAll" resultType="Course">
<include refid="commonSelect"/>
</select>
<!-- 根据id查询课程 -->
<select id="getById" resultType="Course">
<include refid="commonSelect"/>
<where>
id = #{id}
</where>
</select>
<!-- 插入课程 -->
<insert id="insertCourse" parameterType="Course">
insert into course (id, name) values (#{id}, #{name})
</insert>
<!-- 更新课程 -->
<update id="update">
update course
<set>
<if test="name != null">name = #{name},</if>
</set>
where id = #{id}
</update>
<!-- 删除课程 -->
<delete id="deleteById">
delete from course where id = #{id}
</delete>
<!-- 查询课程学生选课情况 -->
<select id="getEnrollmentsByCourseId" resultType="Enrollment">
SELECT s.id as student_id, s.name as student_name, c.id as course_id, c.name as course_name
FROM student s
JOIN enrollment e ON s.id = e.student_id
JOIN course c ON e.course_id = c.id
WHERE c.id = #{courseId}
</select>
<!-- 定义Enrollment结果映射 -->
<resultMap id="EnrollmentResult" type="Enrollment">
<id column="student_id" property="studentId" />
<result column="student_name" property="studentName" />
<id column="course_id" property="courseId" />
<result column="course_name" property="courseName" />
</resultMap>
</mapper>

View File

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<body>
<meta charset="UTF-8">
<h1>教务系统</h1>
<h2>课程选课情况</h2>
<a th:href="@{/courses}">返回课程列表</a>
<table border="1">
<tr>
<td>学生ID</td>
<td>学生姓名</td>
<td>课程ID</td>
<td>课程名</td>
</tr>
<tr th:each="enrollment : ${enrollments}">
<td th:text="${enrollment.studentId}"></td>
<td th:text="${enrollment.studentName}"></td>
<td th:text="${enrollment.courseId}"></td>
<td th:text="${enrollment.courseName}"></td>
</tr>
</table>
</body>
</html>