java编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能: (1)列出某个学生的所有成绩; (2)列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分; (3)分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。
时间: 2024-02-13 12:02:48 浏览: 19
好的,这是一个比较复杂的程序,需要设计多个类和方法来实现。我们可以设计以下类:
1. Student类,包含学号、姓名、年龄等属性,以及一个List<Course>类型的属性courses,用来存放该学生学习的所有课程
2. Course类,包含课程名称、平时成绩、其中考试成绩、实习成绩、期末考试成绩等多个成绩属性,以及一个double类型的属性totalScore,用来存放总评成绩
3. Score类,包含成绩类型、成绩值等属性
接下来,我们可以设计以下方法:
1. addCourse()方法,用来为学生添加课程
2. addScore()方法,用来为学生的某门课程添加成绩
3. getTotalScore()方法,用来计算某门课程的总评成绩
4. printScores()方法,用来列出某个学生的所有成绩
5. printCourseScores()方法,用来列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分
6. printScoreRange()方法,用来分区段统计某门课程的学生总评成绩
下面是一个简单的实现示例:
```
public class Student {
private String id;
private String name;
private int age;
private List<Course> courses;
public Student(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
this.courses = new ArrayList<>();
}
public void addCourse(Course course) {
courses.add(course);
}
public void addScore(String courseName, String type, double value) {
for (Course course : courses) {
if (course.getName().equals(courseName)) {
course.addScore(type, value);
}
}
}
public void printScores() {
System.out.println(name + "的成绩:");
for (Course course : courses) {
System.out.println(course.getName() + ":");
for (Score score : course.getScores()) {
System.out.println(score.getType() + ": " + score.getValue());
}
System.out.println("总评成绩:" + course.getTotalScore());
}
}
public static void printCourseScores(List<Student> students, String courseName) {
double totalScore = 0;
int count = 0;
System.out.println(courseName + "总评成绩:");
for (Student student : students) {
for (Course course : student.courses) {
if (course.getName().equals(courseName)) {
double score = course.getTotalScore();
totalScore += score;
count++;
System.out.println(student.getName() + ": " + score);
}
}
}
System.out.println("所有学生总评分:" + totalScore / count);
}
public static void printScoreRange(List<Student> students, String courseName) {
int[] rangeCount = new int[6];
for (Student student : students) {
for (Course course : student.courses) {
if (course.getName().equals(courseName)) {
double score = course.getTotalScore();
if (score < 60) {
rangeCount[0]++;
} else if (score < 70) {
rangeCount[1]++;
} else if (score < 80) {
rangeCount[2]++;
} else if (score < 90) {
rangeCount[3]++;
} else if (score < 100) {
rangeCount[4]++;
} else {
rangeCount[5]++;
}
}
}
}
System.out.println(courseName + "总评成绩区间统计:");
System.out.println("60分以下:" + rangeCount[0] + "人");
System.out.println("60-70分:" + rangeCount[1] + "人");
System.out.println("70-80分:" + rangeCount[2] + "人");
System.out.println("80-90分:" + rangeCount[3] + "人");
System.out.println("90-100分:" + rangeCount[4] + "人");
System.out.println("100分:" + rangeCount[5] + "人");
}
}
public class Course {
private String name;
private List<Score> scores;
private double totalScore;
public Course(String name) {
this.name = name;
this.scores = new ArrayList<>();
}
public String getName() {
return name;
}
public void addScore(String type, double value) {
scores.add(new Score(type, value));
updateTotalScore();
}
private void updateTotalScore() {
double total = 0;
int count = 0;
for (Score score : scores) {
total += score.getValue();
count++;
}
totalScore = total / count;
}
public double getTotalScore() {
return totalScore;
}
public List<Score> getScores() {
return scores;
}
}
public class Score {
private String type;
private double value;
public Score(String type, double value) {
this.type = type;
this.value = value;
}
public String getType() {
return type;
}
public double getValue() {
return value;
}
}
public class Main {
public static void main(String[] args) {
Student student1 = new Student("1001", "张三", 20);
Student student2 = new Student("1002", "李四", 21);
Course math = new Course("高等数学");
Course english = new Course("英语");
student1.addCourse(math);
student1.addCourse(english);
student2.addCourse(math);
student2.addCourse(english);
student1.addScore("高等数学", "期末考试", 80);
student1.addScore("高等数学", "平时成绩", 90);
student1.addScore("英语", "期末考试", 85);
student1.addScore("英语", "平时成绩", 95);
student2.addScore("高等数学", "期末考试", 75);
student2.addScore("高等数学", "平时成绩", 85);
student2.addScore("英语", "期末考试", 90);
student2.addScore("英语", "平时成绩", 80);
student1.printScores();
student2.printScores();
List<Student> students = new ArrayList<>();
students.add(student1);
students.add(student2);
Student.printCourseScores(students, "高等数学");
Student.printCourseScores(students, "英语");
Student.printScoreRange(students, "高等数学");
Student.printScoreRange(students, "英语");
}
}
```
这个程序可以通过创建学生对象、课程对象以及添加成绩来进行测试,可以根据需要自行修改。