试着写一个博客

//导入全部类(包含随机数和Scanner)
import java.util.*;

//参考学生类
class Student {
    String studentID;//学号
    String studentName;//姓名
    int[] scores;//成绩数组
    double averagescore; //平均分
    double maxscore; //最高分
}

//学生成绩类
class Grade {
    Student[] student;
    double averageclass;//班级平均分,用于评判新同学成绩水平
    int henfan; //定义变量,储存班级中平均分最高的学生并输出
}

//主类
public class NewStudent {
    public static void main(String[] args) {

        Student newStudent = new Student();//学生记录
        Grade grade = new Grade();//成绩记录
        grade.student = new Student[35];//一个班级人数
        newStudent.scores = new int[4];//四门课的成绩
        Random rand = new Random();//生成随机数

        int i,j;//全局变量,用于遍历
        int index = 0;//设置索引,用于保存最高平均分学生的数据
        String yxz;
        double woc;
        double oldscore = 0;//原先分数和,此处初始化为0
        double p = 0;


        //创建原先班级的学生成绩表
        for (i = 0; i <= 34; i++) {
            woc = 0;
            grade.student[i] = new Student();
            grade.student[i].scores = new int[4];
            //如果学号最后两位从10开始(10-36)
            if(i>=9) {
                grade.student[i].studentID = "202072" + (i + 1);//下标加1
            }
            else {
                //最后两位为01-09时,在1-9前添加字符0
                yxz = "0" + (i + 1);
                grade.student[i].studentID = "202072" + yxz;
            }

            //随机生成一位平均得分最高学生的简拼(用三位英文字母代替)
            char a = (char) (rand.nextInt(26) + 97);
            char b = (char) (rand.nextInt(26) + 97);
            char c = (char) (rand.nextInt(26) + 97);
            grade.student[i].studentName = "" + a + b + c;//均分最高学生姓名输出格式

            double q = 0 ;//设置变量用于储存maxscore

            //遍历更新新生加入前的班级学生表
            for (j = 0; j <= 3; j++) {
                grade.student[i].scores[j] = rand.nextInt(100) + 1;
                woc = woc + grade.student[i].scores[j];
                p = p + grade.student[i].scores[j];
                //更新最高分
                if (grade.student[i].scores[j] > q) {
                    q = grade.student[i].scores[j];
                }
            }

            //计算原班级学生的平均分和最高分
            grade.student[i].averagescore = woc / 4;
            grade.student[i].maxscore = q;
            //如果遍历过程中有学生的成绩总分比原先的成绩总分oldscore要高,则将现有值存入woc中
            if (woc > oldscore) {
                oldscore = woc;
                index = i;//更新索引
            }

        }

        //计算班级平均分和最高平均分持有者
        grade.averageclass = p / (30 * 4);
        grade.henfan = index;

        //用户输入界面
        double allscore = 0;//学生个人总分值
        double maxsize = 0;//均分最大值
        System.out.println("请输入学生姓名: ");
        newStudent.studentName = new Scanner(System.in).nextLine();
        System.out.println("请输入学生学号: ");
        newStudent.studentID = new Scanner(System.in).nextLine();
        System.out.println("请输入四门课的成绩,以空格分隔:");
        //scoreinfo:输入的成绩数组 scoresinfo:每两门成绩之间插入的空格
        String scoreinfo = new Scanner(System.in).nextLine();
        String[] scoresinfo = scoreinfo.split(" ");//输入成绩中以空格为分隔

        //循环存入新生成绩
        for ( i = 0; i <= 3; i++) {
            newStudent.scores[i] = Integer.parseInt(scoresinfo[i]);
            //如果超过最大值,则更新最大值和总分
            if (newStudent.scores[i] > maxsize){
                maxsize = newStudent.scores[i];
            }
            allscore = allscore + newStudent.scores[i];
            //成绩能取的最大值为100,输入时超过100程序直接终止
            if (newStudent.scores[i] > 100) {
                System.out.println("课程成绩不能高于100分!!");
                System.exit(0);
            }
        }

        //平均分与最高分
        newStudent.averagescore = allscore / 4;//计算平均分
        newStudent.maxscore = maxsize;//将最大值赋给max-score

        //输出新生成绩情况(第一行输出)
        System.out.println(newStudent.studentName + "(ID:" + newStudent.studentID + ") 平均分:" + newStudent.averagescore + " 最高分" + newStudent.maxscore);

        //以下为第二行输出
        //当新生平均分小于老生最高平均分时
        if(allscore / 4 <= oldscore / 4){
            maxsize = 0;//将最大值初始化为0
            //遍历学生组并存入均分最大值
            for (i = 0; i <= 3; i++) {
                //student[index]用于标记特定学生(每次循环的均分最大值)
                if (grade.student[index].scores[i] > maxsize) {
                    maxsize = grade.student[index].scores[i];//如果特定值大于均分最大值,则将maxsize重新赋值
                }
            }
            //输出随机生成的学生中的最优秀值
            System.out.println(grade.student[index].studentName + "(ID:" + grade.student[index].studentID + ") 最高平均分:" + grade.student[grade.henfan].averagescore + " 最高分" + grade.student[grade.henfan].maxscore);
        }
        //否则新生为最高平均分,新生已经是班上最好的学生了
        else {
            System.out.println(newStudent.studentName + "现在是班上成绩最好的学生了");
        }

        //判断新生平均分是否高于班级平均分
        if (newStudent.averagescore > grade.averageclass) {
            System.out.println(newStudent.studentName + "的平均成绩高于全班的平均分");
        } else {
            System.out.println(newStudent.studentName + "的平均成绩低于全班的平均分");
        }

    }

}

初步设计分电脑技术开发和

posted @ 2022-09-30 16:57  北舞雩  阅读(49)  评论(4)    收藏  举报