假设一个学校有若干年级,一个年级有若干班级,一个班级有若干学生。每个学生有若干成绩。请编写程序对年级、班级、学生及其成绩进行管理。
完成以下功能:
随机初始化一个年级及其包含的班级,班级内的学生,每个学生的成绩。
年级名命名规则:X 年级,X 从{一、二、三、四、五、六、七}中
选择一个,如三年级、四年级等。
班级数从[5,7]中随机产生。
每个班级包含的学生数从[30,60]随机产生,年级总人数根据班级人
数累加。
班级名的命名规则:年级名+班级序号,如三年级一班、三年级二班。
学生名从英文字母中随机选择 5 个构成,如 bluey、babal 等。
学号有 12 位数字构成,随机产生,学号需要保证具有唯一性。
每个学生的成绩包含四门(操作系统 os、Java、c 语言、外语),百分
制。分数随机产生,都为整形。
数据初始化结束后,打印所有已经初始化的信息,包括:年级信息、年级内的所有班级、班级内的所有学生。
public class pro3 {
public static int getNum(int start,int end) {
return (int)Math.random()*(end-start)+start;
}
private static String getName() {
String name=null;
StringBuffer sb=new StringBuffer();
char[] ss=new char[] {'a','b','c','A','B','C'};
sb.append(ss[getNum(0,ss.length)]);
return name;
}
private static String getSex() {
String[] str=new String[] {"nan","nv"};
return str[getNum(0,str.length)];
}
private static int getAge() {
return getNum(6,20);
}
static String name;
static int age;
static String sex;
public static void main(String[] args) {
ArrayList<Student> stulist=new ArrayList<Student>();
for (int i = 0; i < 10; i++) {
name=getName();
age=getAge();
sex=getSex();
stulist.add(new Student(name, age, sex));
}
BanJi a=new BanJi("2101",stulist);
}
}
class BanJi{
private String jiname;
public ArrayList<Student> stulist=null;
public BanJi() {
super();
// TODO Auto-generated constructor stub
}
public BanJi(String jiname, ArrayList<Student> stulist) {
super();
this.jiname = jiname;
this.stulist = stulist;
}
public String getJiname() {
return jiname;
}
public void setJiname(String jiname) {
this.jiname = jiname;
}
public ArrayList<Student> getStulist() {
return stulist;
}
public void setStulist(ArrayList<Student> stulist) {
this.stulist = stulist;
}
@Override
public String toString() {
return "BanJi [jiname=" + jiname + ", stulist=" + stulist + "]";
}
}
class Student{
private String name;
private int age;
private String sex;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
以下是一个基于面向对象编程的 Java 示例程序,可以实现随机初始化一个学校的年级、班级、学生以及他们的成绩,并打印出来。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class School {
private String name;
private ArrayList<Grade> grades;
public School(String name) {
this.name = name;
this.grades = new ArrayList<Grade>();
}
public void init() {
// 随机初始化年级
String[] gradeNames = {"一", "二", "三", "四", "五", "六", "七"};
int gradeIndex = new Random().nextInt(7);
Grade grade = new Grade(gradeNames[gradeIndex] + "年级");
grades.add(grade);
// 随机初始化班级
int classCount = new Random().nextInt(3) + 5;
for (int i = 1; i <= classCount; i++) {
String className = grade.getName() + i + "班";
ClassRoom classRoom = new ClassRoom(className);
grade.addClass(classRoom);
// 随机初始化学生
int studentCount = new Random().nextInt(31) + 30;
Set<String> studentIds = new HashSet<String>();
for (int j = 1; j <= studentCount; j++) {
String studentName = generateName();
String studentId = generateId(studentIds);
Student student = new Student(studentName, studentId);
// 随机初始化成绩
int osScore = new Random().nextInt(101);
int javaScore = new Random().nextInt(101);
int cScore = new Random().nextInt(101);
int foreignScore = new Random().nextInt(101);
student.addScore("操作系统", osScore);
student.addScore("Java", javaScore);
student.addScore("C语言", cScore);
student.addScore("外语", foreignScore);
classRoom.addStudent(student);
}
}
}
public void print() {
System.out.println("学校名称:" + name);
System.out.println("年级信息:");
for (Grade grade : grades) {
System.out.println(grade.getName());
System.out.println("班级信息:");
for (ClassRoom classRoom : grade.getClasses()) {
System.out.println(classRoom.getName());
System.out.println("学生信息:");
for (Student student : classRoom.getStudents()) {
System.out.println(student.getName() + " " + student.getId());
System.out.println("成绩信息:");
for (String subject : student.getScores().keySet()) {
System.out.println(subject + ":" + student.getScores().get(subject));
}
}
}
}
}
private String generateName() {
String alphabet = "abcdefghijklmnopqrstuvwxyz";
Random random = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
int index = random.nextInt(26);
sb.append(alphabet.charAt(index));
}
return sb.toString();
}
private String generateId(Set<String> ids) {
String id = "";
do {
id = String.format("%012d", new Random().nextInt(1000000000));
} while (ids.contains(id));
ids.add(id);
return id;
}
}
怎么都是一大篇的课设来提问呢?这样的问题得花费很多人力才有人给你解答啊。。。
下面代码是类似一个案例,仅供参考:
import java.util.*;
public class SchoolManagementSystem {
public static void main(String[] args) {
// 随机初始化一个年级及其包含的班级,班级内的学生,每个学生的成绩
Grade grade = initGrade();
// 打印所有已经初始化的信息
System.out.println(grade.toString());
}
/**
* 随机初始化一个年级及其包含的班级,班级内的学生,每个学生的成绩
* @return 初始化后的年级对象
*/
public static Grade initGrade() {
Random rand = new Random();
String[] gradeNames = {"一年级", "二年级", "三年级", "四年级", "五年级", "六年级", "七年级"};
String gradeName = gradeNames[rand.nextInt(7)]; // 随机选择一个年级名
int numClasses = rand.nextInt(3) + 5; // 随机产生[5,7]之间的班级数
int numStudents = 0;
List<Class> classes = new ArrayList<>();
for (int i = 1; i <= numClasses; i++) {
int num = rand.nextInt(31) + 30; // 随机产生[30,60]之间的学生数
numStudents += num;
String className = gradeName + i + "班";
List<Student> students = new ArrayList<>();
for (int j = 1; j <= num; j++) {
String name = generateName(); // 随机生成学生姓名
String id = generateId(); // 随机生成学生学号
Map<String, Integer> scores = new HashMap<>();
scores.put("os", rand.nextInt(101));
scores.put("Java", rand.nextInt(101));
scores.put("c语言", rand.nextInt(101));
scores.put("外语", rand.nextInt(101));
students.add(new Student(name, id, scores));
}
classes.add(new Class(className, students));
}
return new Grade(gradeName, numClasses, numStudents, classes);
}
/**
* 随机生成一个五个英文字母组成的学生姓名
* @return 学生姓名
*/
public static String generateName() {
Random rand = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
sb.append((char) (rand.nextInt(26) + 97));
}
return sb.toString();
}
/**
* 随机生成一个12位数字的学生学号,需要保证具有唯一性
* @return 学生学号
*/
private static String generateId() {
StringBuilder sb = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 12; i++) {
sb.append(random.nextInt(10));
}
return sb.toString();
}