编程实现如下图所示的学生成绩统计功能,包括每个人的成绩总分、各科平均成绩、各科高于平均成绩的学生名单。java
时间: 2024-10-13 20:04:02 浏览: 42
用Excel电子表格实现学生成绩统计优质资料.doc
为了实现如您所描述的学生成绩统计功能,我们可以创建一个简单的Java程序,包括学生类(Student),成绩类(Grade)以及主函数(Main)来进行计算和打印结果。这里是一个基础的示例:
首先,我们定义学生类(Student),包含姓名(name)和成绩列表(grades)。
```java
public class Student {
private String name;
private List<Grade> grades;
public Student(String name) {
this.name = name;
this.grades = new ArrayList<>();
}
// 添加成绩方法
public void addGrade(int subjectScore) {
Grade grade = new Grade(subjectScore);
grades.add(grade);
}
// 获取总分和平均成绩的方法
public int getTotalScore() {
int total = 0;
for (Grade grade : grades) {
total += grade.getScore();
}
return total;
}
public double getAverageScore() {
if (grades.isEmpty()) {
return 0;
}
return (double) getTotalScore() / grades.size();
}
}
```
接着,我们定义成绩类(Grade),表示单科成绩。
```java
public class Grade {
private int score;
public Grade(int score) {
this.score = score;
}
public int getScore() {
return score;
}
}
```
现在,在主函数里,我们可以创建一些学生实例,添加成绩,然后统计并打印结果。
```java
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建学生实例
Student student1 = new Student("张三");
Student student2 = new Student("李四");
// 添加成绩
student1.addGrade(85);
student1.addGrade(90);
student2.addGrade(75);
student2.addGrade(95);
// 统计和打印结果
System.out.println("学生 " + student1.getName() + " 总分: " + student1.getTotalScore());
System.out.println("学生 " + student1.getName() + " 平均成绩: " + student1.getAverageScore());
System.out.println("学生 " + student2.getName() + " 总分: " + student2.getTotalScore());
System.out.println("学生 " + student2.getName() + " 平均成绩: " + student2.getAverageScore());
// 找出各科平均以上的学生
List<Student> aboveAverageStudents = findAboveAverage(student1, student2);
System.out.println("高于平均成绩的学生有:");
for (Student student : aboveAverageStudents) {
System.out.println(student.getName());
}
}
// 辅助函数,找到所有平均成绩以上的学生
public static List<Student> findAboveAverage(Student... students) {
List<Student> aboveAverage = new ArrayList<>();
for (Student student : students) {
double average = student.getAverageScore();
if (average > student1.getAverageScore()) {
aboveAverage.add(student);
}
}
return aboveAverage;
}
}
```
这个例子只是一个基础版本,实际应用中可能需要考虑数据持久化、输入验证和更复杂的功能。运行此程序,您将看到每个学生的成绩总分、平均成绩以及平均分以上的学生名单。
阅读全文