2301_77357765 2023-03-30 23:22 采纳率: 100%
浏览 34
已结题

学生成绩系统录入方法

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2023-03-31 09:33
    关注
    
    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;
        }
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月30日

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”