用Java编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能: (1)列出某个学生的所有成绩; (2)列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分; (3)分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。
时间: 2024-02-09 18:09:42 浏览: 76
用java实现学生成绩管理
好的,根据您的要求,我为您设计了下面的类:
1. 学生类(Student):包含学号、姓名、年龄等属性,以及学生所选的课程列表。
2. 课程类(Course):包含课程名称、平时成绩列表、其中考试成绩、实习成绩、期末考试成绩等属性,以及选修该课程的学生列表。
3. 成绩类(Grade):包含平时成绩、其中考试成绩、实习成绩、期末考试成绩等属性,以及计算总评成绩的方法。
然后,我们可以设计以下程序实现您的功能需求:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
// 创建学生列表和课程列表
List<Student> students = new ArrayList<>();
List<Course> courses = new ArrayList<>();
// 添加学生和课程信息...
// 省略代码
// (1) 列出某个学生的所有成绩
Student student = students.get(0); // 假设要查询的学生是列表中的第一个
System.out.println(student.getName() + "的所有成绩:");
for (Course course : student.getCourses()) {
Grade grade = course.getGrade(student);
System.out.println(course.getName() + ":总评成绩为" + grade.getFinalGrade());
}
// (2) 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分
Course course = courses.get(0); // 假设要查询的课程是列表中的第一个
double totalFinalGrade = 0.0;
for (Student s : course.getStudents()) {
Grade grade = course.getGrade(s);
System.out.println(s.getName() + "的总评成绩为" + grade.getFinalGrade());
totalFinalGrade += grade.getFinalGrade();
}
System.out.println("所有学生的总评成绩总分为" + totalFinalGrade);
// (3) 分区段统计某门课程的学生总评成绩
Map<String, Integer> gradeCount = new HashMap<>();
for (Student s : course.getStudents()) {
Grade grade = course.getGrade(s);
double finalGrade = grade.getFinalGrade();
if (finalGrade < 60) {
gradeCount.put("60分以下", gradeCount.getOrDefault("60分以下", 0) + 1);
} else if (finalGrade < 70) {
gradeCount.put("60-70分", gradeCount.getOrDefault("60-70分", 0) + 1);
} else if (finalGrade < 80) {
gradeCount.put("70-80分", gradeCount.getOrDefault("70-80分", 0) + 1);
} else if (finalGrade < 90) {
gradeCount.put("80-90分", gradeCount.getOrDefault("80-90分", 0) + 1);
} else {
gradeCount.put("90分以上", gradeCount.getOrDefault("90分以上", 0) + 1);
}
}
for (String range : gradeCount.keySet()) {
int count = gradeCount.get(range);
System.out.println(range + "的学生人数为" + count);
}
}
}
```
上述代码中,我们通过调用各个类的方法实现了所需的功能。其中,(1) 需要遍历学生所选的课程列表,得到每门课程的总评成绩;(2) 需要遍历课程的学生列表,计算每个学生的总评成绩,并累加总分;(3) 需要遍历课程的学生列表,根据总评成绩分布计算各个分数段的学生人数。
阅读全文