ADD file via upload

main
pc9pizjb6 4 months ago
parent 2b509bbe49
commit 0646581917

@ -0,0 +1,155 @@
package com.studentmanagement.model;
import com.studentmanagement.exception.DuplicateStudentException;
import com.studentmanagement.exception.StudentNotFoundException;
import java.util.*;
import java.util.stream.Collectors;
/**
* 访
* 访使
*/
public class StudentDAO {
private static StudentDAO instance;
private Map<String, Student> students; // 存储学生对象的集合
/**
*
*/
private StudentDAO() {
students = new HashMap<>();
// 添加一些示例数据
initSampleData();
}
/**
*
* @return StudentDAO
*/
public static synchronized StudentDAO getInstance() {
if (instance == null) {
instance = new StudentDAO();
}
return instance;
}
/**
*
*/
private void initSampleData() {
Student s1 = new Student("001", "张三", 20, "男");
s1.addCourseGrade("数学", 85.5);
s1.addCourseGrade("英语", 92.0);
s1.addCourseGrade("计算机", 88.5);
Student s2 = new Student("002", "李四", 21, "女");
s2.addCourseGrade("数学", 90.0);
s2.addCourseGrade("英语", 88.0);
s2.addCourseGrade("计算机", 95.0);
Student s3 = new Student("003", "王五", 19, "男");
s3.addCourseGrade("数学", 78.5);
s3.addCourseGrade("英语", 82.0);
s3.addCourseGrade("计算机", 80.0);
try {
addStudent(s1);
addStudent(s2);
addStudent(s3);
} catch (DuplicateStudentException e) {
// 示例数据初始化不应抛出重复异常
System.err.println("示例数据初始化错误: " + e.getMessage());
}
}
/**
*
* @param student
* @throws DuplicateStudentException ID
*/
public void addStudent(Student student) throws DuplicateStudentException {
if (students.containsKey(student.getId())) {
throw new DuplicateStudentException("学生ID已存在: " + student.getId(), student.getId());
}
students.put(student.getId(), student);
}
/**
*
* @return
*/
public List<Student> getAllStudents() {
return new ArrayList<>(students.values());
}
/**
* ID
* @param id ID
* @return
* @throws StudentNotFoundException
*/
public Student getStudentById(String id) throws StudentNotFoundException {
Student student = students.get(id);
if (student == null) {
throw new StudentNotFoundException("未找到ID为" + id + "的学生", id);
}
return student;
}
/**
*
* @param student
* @throws StudentNotFoundException
*/
public void updateStudent(Student student) throws StudentNotFoundException {
if (!students.containsKey(student.getId())) {
throw new StudentNotFoundException("未找到ID为" + student.getId() + "的学生", student.getId());
}
students.put(student.getId(), student);
}
/**
*
* @param id ID
* @throws StudentNotFoundException
*/
public void deleteStudent(String id) throws StudentNotFoundException {
if (!students.containsKey(id)) {
throw new StudentNotFoundException("未找到ID为" + id + "的学生", id);
}
students.remove(id);
}
/**
*
* @param course
* @return
*/
public List<Student> getStudentsByCourse(String course) {
List<Student> result = new ArrayList<>();
for (Student student : students.values()) {
if (student.getCourseGrades().containsKey(course)) {
result.add(student);
}
}
return result;
}
/**
*
* @param minGrade
* @param maxGrade
* @return
*/
public List<Student> getStudentsByGradeRange(double minGrade, double maxGrade) {
List<Student> result = new ArrayList<>();
for (Student student : students.values()) {
double avgGrade = student.calculateAverageGrade();
if (avgGrade >= minGrade && avgGrade <= maxGrade) {
result.add(student);
}
}
return result;
}
}
Loading…
Cancel
Save