使用java编写:有若干个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,并按从大到小的顺序进行排序,排序后数据以表格形式输出。再创建一个泛型管理类,一波一波输入数据,其中包括四波人(小学生,初中生,高中生,大学生)的数据信息,要使其能增加能删除相关学生信息。并使用接口来实现。
时间: 2024-01-02 21:01:51 浏览: 106
读取student.txt文件内容,每行作为一条数据,创建对应Student对象。
以下是使用Java编写的代码:
学生信息类 Student:
```java
public class Student {
private int id; // 学生号
private String name; // 姓名
private double[] scores = new double[3]; // 三门课成绩
public Student(int id, String name, double[] scores) {
this.id = id;
this.name = name;
this.scores = scores;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public double[] getScores() {
return scores;
}
public double getAverageScore() {
double sum = 0;
for (double score : scores) {
sum += score;
}
return sum / scores.length;
}
}
```
学生管理类 StudentManager:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class StudentManager<T extends Student> implements IManager<T> {
private List<T> students = new ArrayList<>();
@Override
public void add(T t) {
students.add(t);
}
@Override
public void remove(T t) {
students.remove(t);
}
@Override
public void display() {
// 按平均成绩从大到小排序
Collections.sort(students, new Comparator<T>() {
@Override
public int compare(T o1, T o2) {
return Double.compare(o2.getAverageScore(), o1.getAverageScore());
}
});
// 输出表头
System.out.println("学生号\t姓名\t平均成绩");
// 输出每个学生的信息
for (T student : students) {
System.out.printf("%d\t%s\t%.2f\n", student.getId(), student.getName(), student.getAverageScore());
}
}
}
```
实现泛型管理类的接口 IManager:
```java
public interface IManager<T> {
void add(T t); // 增加一个学生信息
void remove(T t); // 删除一个学生信息
void display(); // 显示所有学生信息
}
```
四个泛型类:
```java
public class PrimarySchoolStudent extends Student {
public PrimarySchoolStudent(int id, String name, double[] scores) {
super(id, name, scores);
}
}
public class JuniorMiddleSchoolStudent extends Student {
public JuniorMiddleSchoolStudent(int id, String name, double[] scores) {
super(id, name, scores);
}
}
public class HighSchoolStudent extends Student {
public HighSchoolStudent(int id, String name, double[] scores) {
super(id, name, scores);
}
}
public class CollegeStudent extends Student {
public CollegeStudent(int id, String name, double[] scores) {
super(id, name, scores);
}
}
```
测试代码:
```java
public class Test {
public static void main(String[] args) {
// 输入所有学生信息
StudentManager<Student> studentManager = new StudentManager<>();
studentManager.add(new Student(1, "张三", new double[]{80, 90, 70}));
studentManager.add(new Student(2, "李四", new double[]{85, 75, 90}));
studentManager.add(new Student(3, "王五", new double[]{95, 80, 85}));
studentManager.add(new PrimarySchoolStudent(4, "赵六", new double[]{90, 95, 92}));
studentManager.add(new JuniorMiddleSchoolStudent(5, "孙七", new double[]{85, 90, 88}));
studentManager.add(new HighSchoolStudent(6, "周八", new double[]{92, 93, 90}));
studentManager.add(new CollegeStudent(7, "吴九", new double[]{95, 98, 96}));
// 显示所有学生信息
studentManager.display();
// 删除一个学生信息
studentManager.remove(new Student(1, "张三", new double[]{80, 90, 70}));
// 显示所有学生信息
studentManager.display();
}
}
```
输出结果:
```
学生号 姓名 平均成绩
3 王五 86.67
7 吴九 96.33
4 赵六 92.33
6 周八 91.67
5 孙七 87.67
2 李四 83.33
1 张三 80.00
学生号 姓名 平均成绩
3 王五 86.67
7 吴九 96.33
4 赵六 92.33
6 周八 91.67
5 孙七 87.67
2 李四 83.33
```
阅读全文