使用Java编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能: (1) 列出某个学生的所有成绩; (2) 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分; (3) 分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。
时间: 2024-02-12 21:06:48 浏览: 23
好的,我可以帮你设计一个学生成绩管理系统。我们可以先设计以下几个类:
1. `Student` 类:包含学生的学号、姓名、年龄等属性,以及一个 `List` 类型的成绩列表,存放学生所学的所有课程的成绩。
2. `Course` 类:包含课程的名称、平时成绩列表、其中考试成绩、实习成绩、期末考试成绩等属性。
3. `Score` 类:包含某门课程的一个学生的成绩,包括平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等属性。
接下来,我们可以设计一个 `ScoreSystem` 类来完成题目中要求的功能。这个类包含一个学生列表和一个课程列表,可以添加学生和课程,以及为学生添加成绩和为课程添加学生的成绩。
下面是这个类的代码实现:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class ScoreSystem {
private List<Student> students;
private List<Course> courses;
public ScoreSystem() {
students = new ArrayList<>();
courses = new ArrayList<>();
}
// 添加学生
public void addStudent(Student student) {
students.add(student);
}
// 添加课程
public void addCourse(Course course) {
courses.add(course);
}
// 添加某门课程的一个学生的成绩
public void addScore(String courseId, Score score) {
for (Course course : courses) {
if (course.getId().equals(courseId)) {
course.addScore(score);
break;
}
}
}
// 列出某个学生的所有成绩
public void listAllScoresByStudent(String studentId) {
for (Student student : students) {
if (student.getId().equals(studentId)) {
System.out.println("学生:" + student.getName() + ",学号:" + student.getId());
System.out.println("所有成绩:");
for (Score score : student.getScores()) {
System.out.println(score.getCourseName() + ":" + score.getTotalScore());
}
break;
}
}
}
// 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分
public void listAllTotalScoresByCourse(String courseId) {
double totalScore = 0;
int count = 0;
for (Course course : courses) {
if (course.getId().equals(courseId)) {
System.out.println("课程:" + course.getName());
for (Score score : course.getScores()) {
System.out.println(score.getStudentName() + ":" + score.getTotalScore());
totalScore += score.getTotalScore();
count++;
}
break;
}
}
System.out.println("所有学生总评成绩的总评分:" + totalScore / count);
}
// 分区段统计某门课程的学生总评成绩
public void countTotalScoresByCourse(String courseId) {
int[] counts = new int[11];
for (Course course : courses) {
if (course.getId().equals(courseId)) {
for (Score score : course.getScores()) {
int index = (int) Math.floor(score.getTotalScore() / 10);
if (index < 0) {
index = 0;
}
if (index > 10) {
index = 10;
}
counts[index]++;
}
break;
}
}
for (int i = 0; i < counts.length; i++) {
if (i == 0) {
System.out.println("60分以下的学生人数:" + counts[i]);
} else if (i == 10) {
System.out.println("100分以上的学生人数:" + counts[i]);
} else {
System.out.println((i * 10) + "至" + ((i + 1) * 10 - 1) + "分的学生人数:" + counts[i]);
}
}
}
// 测试方法
public static void main(String[] args) {
ScoreSystem system = new ScoreSystem();
// 添加学生
Student student1 = new Student("001", "张三", 18);
Student student2 = new Student("002", "李四", 19);
system.addStudent(student1);
system.addStudent(student2);
// 添加课程
Course course1 = new Course("001", "Java程序设计");
Course course2 = new Course("002", "数据结构与算法");
system.addCourse(course1);
system.addCourse(course2);
// 为学生添加成绩
Score score1 = new Score("001", "Java程序设计", 80, 90, 85, 90);
Score score2 = new Score("001", "数据结构与算法", 85, 90, 80, 85);
Score score3 = new Score("002", "Java程序设计", 75, 85, 80, 85);
Score score4 = new Score("002", "数据结构与算法", 80, 85, 75, 80);
system.addScore("001", score1);
system.addScore("001", score2);
system.addScore("002", score3);
system.addScore("002", score4);
// 列出某个学生的所有成绩
system.listAllScoresByStudent("001");
// 列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分
system.listAllTotalScoresByCourse("001");
// 分区段统计某门课程的学生总评成绩
system.countTotalScoresByCourse("001");
}
}
```
在这个程序中,我们先创建了一个 `ScoreSystem` 类,然后添加了两个学生和两门课程。接着,我们为每个学生添加了两门课程的成绩。最后,我们分别调用了 `listAllScoresByStudent`、`listAllTotalScoresByCourse` 和 `countTotalScoresByCourse` 方法,来列出某个学生的所有成绩、某门课程每个学生的总评成绩,以及分区段统计某门课程的学生总评成绩。