简单学生管理系统

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

View File

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

View File

@ -21,4 +21,5 @@ public interface ScoreMapper {
// 根据no查询成绩 // 根据no查询成绩
List<Score> getAll(); 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 Student student;
private Course course; 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 { public class StudentScore {
private Student student; private Student student;
private List<Score> scores; 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; package edu.gjq.service;
import edu.gjq.pojo.Course; import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment; import edu.gjq.pojo.StudentScore;
import java.util.List; import java.util.List;
@ -11,5 +11,5 @@ public interface CourseService {
Course getCourseById(String id); Course getCourseById(String id);
void updateCourse(Course course); void updateCourse(Course course);
void deleteCourse(String id); 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.mapper.CourseMapper;
import edu.gjq.pojo.Course; import edu.gjq.pojo.Course;
import edu.gjq.pojo.Enrollment; import edu.gjq.pojo.StudentScore;
import edu.gjq.service.CourseService; import edu.gjq.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -43,7 +43,7 @@ public class CourseServiceImpl implements CourseService {
} }
@Override @Override
public List<Enrollment> getEnrollmentsByCourseId(String courseId) { public List<StudentScore> getStudentScoresByCourseId(String courseId) {
return (List<Enrollment>) courseMapper.getEnrollmentsByCourseId(courseId); return courseMapper.getStudentScoresByCourseId(courseId);
} }
} }

View File

@ -23,6 +23,7 @@
</where> </where>
</select> </select>
<!-- 插入课程 --> <!-- 插入课程 -->
<insert id="insertCourse" parameterType="Course"> <insert id="insertCourse" parameterType="Course">
insert into course (id, name) values (#{id}, #{name}) insert into course (id, name) values (#{id}, #{name})
@ -42,21 +43,37 @@
delete from course where id = #{id} delete from course where id = #{id}
</delete> </delete>
<!-- 查询课程学生选课情况 -->
<select id="getEnrollmentsByCourseId" resultType="Enrollment"> <select id="getStudentScoresByCourseId" resultMap="StudentScoreResultMap">
SELECT s.id as student_id, s.name as student_name, c.id as course_id, c.name as course_name SELECT
FROM student s s.id as "student.id",
JOIN enrollment e ON s.id = e.student_id s.name as "student.name",
JOIN course c ON e.course_id = c.id s.gender as "student.gender",
WHERE c.id = #{courseId} 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> </select>
<!-- 定义Enrollment结果映射 --> <resultMap id="StudentScoreResultMap" type="edu.gjq.pojo.StudentScore">
<resultMap id="EnrollmentResult" type="Enrollment"> <association property="student" javaType="edu.gjq.pojo.Student">
<id column="student_id" property="studentId" /> <id column="student.id" property="id"/>
<result column="student_name" property="studentName" /> <result column="student.name" property="name"/>
<result column="course_id" property="courseId" /> <result column="student.gender" property="gender"/>
<result column="course_name" property="courseName" /> <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> </resultMap>
</mapper> </mapper>

View File

@ -11,12 +11,12 @@
<update id="update"> <update id="update">
update grade update score
<set> <set>
<if test="grade != null">grade = #{grade},</if> <if test="score != null">score = #{score},</if>
<if test="updateTime != null"> update_time = #{updateTime}</if> <if test="updateTime != null">update_time = #{updateTime}</if>
</set> </set>
where no = #{no} where student_id = #{studentId} and course_id = #{courseId}
</update> </update>
<!-- 删除一条成绩 --> <!-- 删除一条成绩 -->
@ -37,6 +37,7 @@
FROM score, student as s, course as c FROM score, student as s, course as c
WHERE s.id = score.student_id and c.id = score.course_id WHERE s.id = score.student_id and c.id = score.course_id
</select> </select>
<resultMap id="ScoreWithName" type="Score"> <resultMap id="ScoreWithName" type="Score">
<id column="id" property="id" /> <id column="id" property="id" />
<result column="score" property="score" /> <result column="score" property="score" />
@ -48,31 +49,6 @@
</association> </association>
</resultMap> </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> </mapper>

View File

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