学生成绩系统录入方法

怎么录入n个学生的名字,学号,m(m<6)科成绩。1.同时计算出每门学科和每位同学的平均成绩,2.分别按照总成绩和学号由大到小排列 注:1.用java编写 2.只学到了继承,希望用之前的知识点写3.能不能多写点注释,我主要想了解思路4.能否用最简单的方法,特别是录入数据的方法思路,怎样才能让后面的操作简单点


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生人数:");
        int n = scanner.nextInt();
        System.out.println("请输入科目数:");
        int m = scanner.nextInt();

        // 记录每个学生的名字、学号和各科成绩
        String[] names = new String[n];
        String[] numbers = new String[n];
        double[][] scores = new double[n][m];

        // 录入学生信息和成绩
        for (int i = 0; i < n; i++) {
            System.out.println("请输入第" + (i+1) + "个学生的名字:");
            names[i] = scanner.next();
            System.out.println("请输入第" + (i+1) + "个学生的学号:");
            numbers[i] = scanner.next();
            for (int j = 0; j < m; j++) {
                System.out.println("请输入第" + (i+1) + "个学生的第" + (j+1) + "门成绩:");
                scores[i][j] = scanner.nextDouble();
            }
        }

        // 计算每门学科的平均成绩
        double[] subjectAverages = new double[m];
        for (int i = 0; i < m; i++) {
            double sum = 0;
            for (int j = 0; j < n; j++) {
                sum += scores[j][i];
            }
            subjectAverages[i] = sum / n;
            System.out.println("第" + (i+1) + "门学科的平均成绩为:" + subjectAverages[i]);
        }

        // 计算每位同学的平均成绩和总成绩
        Student[] students = new Student[n];
        for (int i = 0; i < n; i++) {
            double sum = 0;
            for (int j = 0; j < m; j++) {
                sum += scores[i][j];
            }
            double average = sum / m;
            students[i] = new Student(names[i], numbers[i], scores[i], average, sum);
            System.out.println(students[i]);
        }

        // 按照总成绩由大到小排序
        Arrays.sort(students, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                if (s1.getTotalScore() > s2.getTotalScore()) {
                    return -1;
                } else if (s1.getTotalScore() < s2.getTotalScore()) {
                    return 1;
                } else {
                    return 0;
                }
            }
        });
        System.out.println("按照总成绩由大到小排列的结果如下:");
        for (Student student : students) {
            System.out.println(student);
        }

        // 按照学号由大到小排序
        Arrays.sort(students, new Comparator<Student>() {
            public int compare(Student s1, Student s2) {
                return s2.getNumber().compareTo(s1.getNumber());
            }
        });
        System.out.println("按照学号由大到小排列的结果如下:");
        for (Student student : students) {
            System.out.println(student);
        }
    }
}

class Student {
    private String name; // 姓名
    private String number; // 学号
    private double[] scores; // 成绩
    private double averageScore; // 平均成绩
    private double totalScore; // 总成绩

    public Student(String name, String number, double[] scores, double averageScore, double totalScore) {
        this.name = name;
        this.number = number;
        this.scores = scores;
        this.averageScore = averageScore;
        this.totalScore = totalScore;
    }

    public String getName() {
        return name;
    }

    public String getNumber() {
        return number;
    }

    public double[] getScores() {
        return scores;
    }

    public double getAverageScore() {
        return averageScore;
    }

    public double getTotalScore() {
        return totalScore;
    }

    public String toString() {
        return "姓名:" + name + " 学号:" + number + " 平均成绩:" + averageScore + " 总成绩:" + totalScore;
    }
} 

用不到什么继承,定义一个学生类,包含姓名、学号、成绩数组即可
然后再定义一个学生对象的数组
录入就是循环

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632