w31hdwuie2 2023-02-24 15:10 采纳率: 71.4%
浏览 186
已结题

使用java实现对年级、班级、学生及其成绩进行管理

  • 假设一个学校有若干年级,一个年级有若干班级,一个班级有若干学生。每个学生有若干成绩。请编写程序对年级、班级、学生及其成绩进行管理。
    完成以下功能:

随机初始化一个年级及其包含的班级,班级内的学生,每个学生的成绩。

  1. 年级名命名规则:X 年级,X 从{一、二、三、四、五、六、七}中
    选择一个,如三年级、四年级等。
  2. 班级数从[5,7]中随机产生。
  3. 每个班级包含的学生数从[30,60]随机产生,年级总人数根据班级人数累加。
  4. 班级名的命名规则:年级名+班级序号,如三年级一班、三年级二班。
  5. 学生名从英文字母中随机选择 5 个构成,如 bluey、babal 等。
  6. 学号有 12 位数字构成,随机产生,学号需要保证具有唯一性。
  7. 每个学生的成绩包含四门(操作系统 os、Java、c 语言、外语),百分
    制。分数随机产生,都为整形。
  8. 数据初始化结束后,打印所有已经初始化的信息,包括:年级信息、
    年级内的所有班级、班级内的所有学生。

2.数据读取与排序
计算各个学生的平均分,并保存起来。
进而根据平均分对各个学生进行降序排序,输出排序后的结果,并保存
各个学生的名次。按两种情况排序,即按班级排序、按年级排序。

  1. 按班级排序:一个班级一个排序结果,保存按班级排序的排序名次。

  2. 按照年级排序,保存学生的年级排名。
    再次打印所有信息,包括:年级信息、年级内的所有班级、班级内的所有学生信息
    (部分属性描述如下:
    年级 grade:年级名 gradeName、班级数 bjCnt、总人数 totalStuCnt 
    班级 banji:班级名 bjName、学生人数 stuCnt
    学生 Student:学号 stuNo、学生名 stuName、成绩列表 scoreList )

  • 写回答

8条回答 默认 最新

  • 程序猿_Mr. Guo 2023-02-24 16:27
    关注

    望采纳,下边的代码直接拷贝执行即可,有什么问题再联系我。

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    /**
     * 1、年级名命名规则:X 年级,X 从{一、二、三、四、五、六、七}中选择一个,如三年级、四年级等。
     * 2、班级数从[5,7]中随机产生。
     * 3、每个班级包含的学生数从[30,60]随机产生,年级总人数根据班级人数累加。
     * 4、班级名的命名规则:年级名+班级序号,如三年级一班、三年级二班。
     * 5、学生名从英文字母中随机选择 5 个构成,如 bluey、babal 等。
     * 6、学号有 12 位数字构成,随机产生,学号需要保证具有唯一性。
     * 7、每个学生的成绩包含四门(操作系统 os、Java、c 语言、外语),百分制。分数随机产生,都为整形。
     * 8、数据初始化结束后,打印所有已经初始化的信息,包括:年级信息、年级内的所有班级、班级内的所有学生。
     * <p>
     * (部分属性描述如下:
     * 年级 grade:年级名 gradeName、班级数 bjCnt、总人数 totalStuCnt
     * 班级 banji:班级名 bjName、学生人数 stuCnt
     * 学生 Student:学号 stuNo、学生名 stuName、成绩列表 scoreList )
     */
    
    public class School {
        public static void main(String[] args) {
            List<Grade> grades = new ArrayList<>();
    
            // 随机初始化一个年级及其包含的班级,班级内的学生,每个学生的成绩
            Random random = new Random();
            int gradeNumber = random.nextInt(7) + 1;
            String gradeName = getChineseNumber(gradeNumber) + "年级";
            List<Banji> banjiList = new ArrayList<>();
            int bjCnt = getRandomBanjiNo();
            int totalStuCnt = 0;
            for (int i = 1; i <= bjCnt; i++) {
                String bjName = gradeName + getChineseNumber(i) + "班";
                int stuCnt = random.nextInt(31) + 30;
                totalStuCnt += stuCnt;
                List<Student> students = new ArrayList<>();
                for (int j = 1; j <= stuCnt; j++) {
                    String stuName = getRandomName();
                    String stuNo = getRandomStuNo(12);
                    List<Integer> scoreList = new ArrayList<>();
                    scoreList.add(random.nextInt(51) + 50); // 操作系统
                    scoreList.add(random.nextInt(51) + 50); // Java
                    scoreList.add(random.nextInt(51) + 50); // c语言
                    scoreList.add(random.nextInt(51) + 50); // 外语
                    students.add(new Student(stuNo, stuName, scoreList));
                }
                banjiList.add(new Banji(bjName, stuCnt, students));
            }
            grades.add(new Grade(gradeName, bjCnt, totalStuCnt, banjiList));
    
            // 打印所有已经初始化的信息
            System.out.println("年级信息:");
            for (Grade grade : grades) {
                System.out.println(grade);
            }
        }
    
        // 将数字转换为汉字
        public static String getChineseNumber(int number) {
            String[] chineseNumbers = {"一", "二", "三", "四", "五", "六", "七"};
            return chineseNumbers[number - 1];
        }
    
        // 随机生成班级数
        public static int getRandomBanjiNo() {
            int min = 5;
            int max = 7;
            return min + (int) (Math.random() * (max - min + 1));
        }
    
        // 随机生成学生名字
        public static String getRandomName() {
            String letters = "abcdefghijklmnopqrstuvwxyz";
            StringBuilder nameBuilder = new StringBuilder();
            for (int i = 0; i < 5; i++) {
                int index = (int) (Math.random() * letters.length());
                nameBuilder.append(letters.charAt(index));
            }
            return nameBuilder.toString();
        }
    
        // 随机生成学号
        public static String getRandomStuNo(int length) {
            StringBuilder stuNoBuilder = new StringBuilder();
            Random random = new Random();
            for (int i = 0; i < length; i++) {
                int digit = random.nextInt(10);
                stuNoBuilder.append(digit);
            }
            return stuNoBuilder.toString();
        }
    }
    
    /**
     * 年级 grade:年级名 gradeName、班级数 bjCnt、总人数 totalStuCnt
     */
    class Grade {
        private String gradeName;
        private int bjCnt;
        private int totalStuCnt;
        private List<Banji> banjiList;
    
        public Grade(String gradeName, int bjCnt, int totalStuCnt, List<Banji> banjiList) {
            this.gradeName = gradeName;
            this.bjCnt = bjCnt;
            this.totalStuCnt = totalStuCnt;
            this.banjiList = banjiList;
        }
    
        public String getGradeName() {
            return gradeName;
        }
    
        public int getBjCnt() {
            return bjCnt;
        }
    
        public int getTotalStuCnt() {
            return totalStuCnt;
        }
    
        public List<Banji> getBanjiList() {
            return banjiList;
        }
    
        public void addBanji(Banji banji) {
            this.banjiList.add(banji);
            this.totalStuCnt += banji.getStuCnt();
        }
    
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("年级名称:").append(gradeName).append("\n");
            sb.append("班级数目:").append(bjCnt).append("\n");
            sb.append("总人数:").append(totalStuCnt).append("\n");
            sb.append("*************************\n");
            sb.append("班级信息:\n");
            for (Banji banji : banjiList) {
                sb.append(banji);
            }
            return sb.toString();
        }
    }
    
    /**
     * 班级 banji:班级名 bjName、学生人数 stuCnt
     */
    class Banji {
        private String bjName;
        private int stuCnt;
        private List<Student> studentList;
    
        public Banji(String bjName, int stuCnt, List<Student> studentList) {
            this.bjName = bjName;
            this.stuCnt = stuCnt;
            this.studentList = studentList;
        }
    
        public String getBjName() {
            return bjName;
        }
    
        public int getStuCnt() {
            return stuCnt;
        }
    
        public List<Student> getStudentList() {
            return studentList;
        }
    
        public void addStudent(Student student) {
            this.studentList.add(student);
        }
    
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("*************************");
            sb.append("班级名称:").append(bjName).append("\n");
            sb.append("学生人数:").append(stuCnt).append("\n");
            sb.append("学生信息:\n");
            for (Student student : studentList) {
                sb.append(student);
            }
            return sb.toString();
        }
    }
    
    /**
     * 学生 Student:学号 stuNo、学生名 stuName、成绩列表 scoreList )
     */
    class Student {
        private String stuNo;
        private String stuName;
        private List<Integer> scoreList;
    
        public Student(String stuNo, String stuName, List<Integer> scoreList) {
            this.stuNo = stuNo;
            this.stuName = stuName;
            this.scoreList = scoreList;
        }
    
        public String getStuNo() {
            return stuNo;
        }
    
        public String getStuName() {
            return stuName;
        }
    
        public List<Integer> getScoreList() {
            return scoreList;
        }
    
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("\t学号:").append(stuNo).append("\n");
            sb.append("\t姓名:").append(stuName).append("\n");
            sb.append("\t成绩:").append(scoreList).append("\n");
            return sb.toString();
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 3月4日
  • 已采纳回答 2月24日
  • 修改了问题 2月24日
  • 创建了问题 2月24日