望采纳,下边的代码直接拷贝执行即可,有什么问题再联系我。
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();
}
}