You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
2.8 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.studentmanagement.model;
import java.util.HashMap;
import java.util.Map;
/**
* 学生实体类
* 表示系统中的学生对象,包含基本信息和课程成绩
*/
public class Student {
private String id; // 学生ID
private String name; // 学生姓名
private int age; // 学生年龄
private String gender; // 学生性别
private Map<String, Double> courseGrades; // 课程成绩映射
/**
* 构造函数
* @param id 学生ID
* @param name 学生姓名
* @param age 学生年龄
* @param gender 学生性别
*/
public Student(String id, String name, int age, String gender) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.courseGrades = new HashMap<>();
}
// Getters and Setters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Map<String, Double> getCourseGrades() {
return courseGrades;
}
public void setCourseGrades(Map<String, Double> courseGrades) {
this.courseGrades = courseGrades;
}
/**
* 添加课程成绩
* @param course 课程名称
* @param grade 成绩
*/
public void addCourseGrade(String course, double grade) {
courseGrades.put(course, grade);
}
/**
* 获取特定课程的成绩
* @param course 课程名称
* @return 成绩如果课程不存在返回null
*/
public Double getCourseGrade(String course) {
return courseGrades.get(course);
}
/**
* 计算平均成绩
* @return 平均成绩如果没有课程成绩返回0
*/
public double calculateAverageGrade() {
if (courseGrades.isEmpty()) {
return 0.0;
}
double sum = 0.0;
for (double grade : courseGrades.values()) {
sum += grade;
}
return sum / courseGrades.size();
}
@Override
public String toString() {
return "Student{" +
"id='" + id + "'" +
", name='" + name + "'" +
", age=" + age +
", gender='" + gender + "'" +
", averageGrade=" + String.format("%.2f", calculateAverageGrade()) +
"}";
}
}