简单学生管理系统

This commit is contained in:
origin 2024-10-27 20:09:39 +08:00
parent 2833d5e64c
commit db9198a49e
11 changed files with 135 additions and 109 deletions

View File

@ -1,6 +1,8 @@
package edu.gjq.controller;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Score;
import edu.gjq.pojo.StudentScore;
import edu.gjq.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -64,10 +66,8 @@ public class CourseController {
// 查询课程学生选课情况
@GetMapping("/enrollments/{courseId}")
public String getEnrollments(@PathVariable String courseId, Model model) {
// 假设有一个方法 getEnrollmentsByCourseId 来获取选课情况
// 这里需要根据实际的业务逻辑来实现
List<?> enrollments = courseService.getEnrollmentsByCourseId(courseId);
model.addAttribute("enrollments", enrollments);
return "enrollments";
List<StudentScore> scores = courseService.getStudentScoresByCourseId(courseId);
model.addAttribute("scores", scores);
return "scores";
}
}

View File

@ -1,7 +1,8 @@
package edu.gjq.mapper;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment;
import edu.gjq.pojo.Score;
import edu.gjq.pojo.StudentScore;
import java.util.List;
@ -21,7 +22,7 @@ public interface CourseMapper {
// 删除课程
void deleteById(String id);
// 查询课程学生选课情况
List<Enrollment> getEnrollmentsByCourseId(String courseId);
// 查询某个课程学生选课情况
List<StudentScore> getStudentScoresByCourseId(String courseId);
}

View File

@ -21,4 +21,5 @@ public interface ScoreMapper {
// 根据no查询成绩
List<Score> getAll();
}

View File

@ -1,11 +0,0 @@
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

@ -15,4 +15,14 @@ public class Score extends BaseEntity{
// 学生和课程是一的一方
private Student student;
private Course course;
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public void setCourseId(String courseId) {
this.courseId = courseId;
}
}

View File

@ -8,4 +8,13 @@ import java.util.List;
public class StudentScore {
private Student student;
private List<Score> scores;
public Student getStudent() {
return student;
}
public List<Score> getScore() {
return scores;
}
}

View File

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

View File

@ -2,7 +2,7 @@ package edu.gjq.service.impl;
import edu.gjq.mapper.CourseMapper;
import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment;
import edu.gjq.pojo.StudentScore;
import edu.gjq.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -43,7 +43,7 @@ public class CourseServiceImpl implements CourseService {
}
@Override
public List<Enrollment> getEnrollmentsByCourseId(String courseId) {
return (List<Enrollment>) courseMapper.getEnrollmentsByCourseId(courseId);
public List<StudentScore> getStudentScoresByCourseId(String courseId) {
return courseMapper.getStudentScoresByCourseId(courseId);
}
}

View File

@ -23,6 +23,7 @@
</where>
</select>
<!-- 插入课程 -->
<insert id="insertCourse" parameterType="Course">
insert into course (id, name) values (#{id}, #{name})
@ -42,21 +43,37 @@
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 id="getStudentScoresByCourseId" resultMap="StudentScoreResultMap">
SELECT
s.id as "student.id",
s.name as "student.name",
s.gender as "student.gender",
s.birthday as "student.birthday",
sc.id as "scores[0].id",
sc.student_id as "scores[0].studentId",
sc.course_id as "scores[0].courseId",
sc.score as "scores[0].score"
FROM
score sc
JOIN student s ON sc.student_id = s.id
WHERE
sc.course_id = #{courseId}
</select>
<!-- 定义Enrollment结果映射 -->
<resultMap id="EnrollmentResult" type="Enrollment">
<id column="student_id" property="studentId" />
<result column="student_name" property="studentName" />
<result column="course_id" property="courseId" />
<result column="course_name" property="courseName" />
<resultMap id="StudentScoreResultMap" type="edu.gjq.pojo.StudentScore">
<association property="student" javaType="edu.gjq.pojo.Student">
<id column="student.id" property="id"/>
<result column="student.name" property="name"/>
<result column="student.gender" property="gender"/>
<result column="student.birthday" property="birthday"/>
</association>
<collection property="scores" ofType="edu.gjq.pojo.Score">
<id column="scores[0].id" property="id"/>
<result column="scores[0].studentId" property="studentId"/>
<result column="scores[0].courseId" property="courseId"/>
<result column="scores[0].score" property="score"/>
</collection>
</resultMap>
</mapper>

View File

@ -11,12 +11,12 @@
<update id="update">
update grade
update score
<set>
<if test="grade != null">grade = #{grade},</if>
<if test="updateTime != null"> update_time = #{updateTime}</if>
<if test="score != null">score = #{score},</if>
<if test="updateTime != null">update_time = #{updateTime}</if>
</set>
where no = #{no}
where student_id = #{studentId} and course_id = #{courseId}
</update>
<!-- 删除一条成绩 -->
@ -37,6 +37,7 @@
FROM score, student as s, course as c
WHERE s.id = score.student_id and c.id = score.course_id
</select>
<resultMap id="ScoreWithName" type="Score">
<id column="id" property="id" />
<result column="score" property="score" />
@ -48,31 +49,6 @@
</association>
</resultMap>
<!-- <select id="getByNo" resultMap="GradeWithName">-->
<!-- SELECT-->
<!-- `no`,-->
<!-- student_id,-->
<!-- course_id,-->
<!-- grade,-->
<!-- g.create_time,-->
<!-- g.update_time,-->
<!-- s.id as uid,-->
<!-- s.`name` as student_name-->
<!-- FROM grade g-->
<!-- JOIN student s ON s.id = g.student_id-->
<!-- WHERE `no` = #{no}-->
<!-- </select>-->
<!-- <resultMap id="GradeWithName" type="Score">-->
<!-- <id column="no" property="no" />-->
<!-- <result column="student_id" property="studentID" />-->
<!-- <result column="course_id" property="courseID" />-->
<!-- <result column="grade" property="grade"></result>-->
<!-- <result column="creat_time" property="createTime" />-->
<!-- <result column="update_time" property="updateTime" />-->
<!-- <association property="student" javaType="Student">-->
<!-- <id column="uid" property="id" />-->
<!-- <result column="student_name" property="name" />-->
<!-- </association>-->
<!-- </resultMap>-->
</mapper>

View File

@ -51,39 +51,28 @@ class ApplicationTests {
public void testInsertAccount(){
// 新增账号
Account account = new Account();
account.setAccount("12143");
account.setAccount("12149");
account.setPassword("123456");
account.setCreateBy(1);
LocalDateTime now = LocalDateTime.now();
account.setCreateTime(now);
accountMapper.insertAccount(account);
}
// @Test
// public void testInsertStudent() {
// Student student = new Student();
// student.setId("12149");
// student.setName("小星星");
// student.setGender(0);
// student.setBirthday(LocalDate.of(2014, 6, 4));
// student.setCreateBy(1);
// LocalDateTime now = LocalDateTime.now();
// student.setCreateTime(now);
// studentMapper.insertStudent(student);
//
// }
@Test
public void testInsertScore(){
Score score = new Score();
score.setStudentId("12142");
score.setCourseId("106");
score.setScore(60);
score.setCreateBy(1);
public void testInsertStudent() {
Student student = new Student();
student.setId("12149");
student.setName("小星星");
student.setGender(0);
student.setBirthday(LocalDate.of(2014, 6, 4));
student.setCreateBy(1);
LocalDateTime now = LocalDateTime.now();
score.setCreateTime(now);
scoreMapper.insert(score);
System.out.println(score.getId());
student.setCreateTime(now);
studentMapper.insertStudent(student);
}
// 更新学生姓名
@Test
public void testUpdateStudent(){
Student student = new Student();
@ -145,31 +134,48 @@ class ApplicationTests {
System.out.println("课程:" + score.getCourse().getName() + ",成绩:" + score.getScore());
}
}
/*@Test
// 新增课程成绩
@Test
public void testInsertScore(){
Score score = new Score();
score.setStudentId("12142");
score.setCourseId("106");
score.setScore(60);
score.setCreateBy(1);
LocalDateTime now = LocalDateTime.now();
score.setCreateTime(now);
scoreMapper.insert(score);
System.out.println(score.getId());
}
@Test
public void testGradeUpdate(){
Score score = new Score();
score.setStudentID("12142");
score.setCourseID("101");
score.setGrade(90);
score.setStudentId("12142");
score.setCourseId("106");
score.setScore(100);
score.setUpdateTime(LocalDateTime.now());
gradeMapper.update(score);
scoreMapper.update(score);
System.out.println(score);
}
@Test
public void testGradeDelete(){
gradeMapper.deleteByNo(24);
}
@Test
public void testGetByNo(){
Score score = gradeMapper.getByNo(1);
System.out.println(score);
public void testGradeDelete(){
scoreMapper.deleteById(16);
}
*/
/*
* 课程管理
查询所有课程名
增加某个课程
更新某个课程
删除某个课程
*
*
* */
@Test
public void testGetAllCourses() {
List<Course> courses = courseMapper.getAll();
@ -196,5 +202,22 @@ class ApplicationTests {
public void testDeleteCourse() {
courseMapper.deleteById("107");
}
//查询这个课程学生选课情况
@Test
public void testGetStudentScoresByCourseId() {
List<StudentScore> studentScores = courseMapper.getStudentScoresByCourseId("101");
studentScores.forEach(studentScore -> {
Student student = studentScore.getStudent();
List<Score> scores = studentScore.getScore();
System.out.println("学生ID: " + student.getId());
System.out.println("学生姓名: " + student.getName());
scores.forEach(score -> {
System.out.println("课程ID: " + score.getCourseId());
System.out.println("成绩: " + score.getScore());
});
});
}
}