面向对象程序设计:学生类的简易模拟,以及成绩比较

1.题目要求:

2.注意30位学生的姓名,成绩均随机,姓名我是从26位英语字母中随机取4个作为名字。
3.30位学生的学号随机,我将学号的前6位固定,后面2为随机生成,没有考虑重复。
4.再与30位随机学生中平均分最高的进行比较,判断成绩。


import java.util.Scanner;
import java.util.Random;
public class banji {
    public static void main(String[] args) {
        Scanner input=new Scanner( System.in);
        int i,j=0;int tep=0;
        double summ=0;
        int zu[]=new int [4];
        int zu2[]=new int [4];
        Student stu[]=new Student[30];
        for(i=0,j=0;i<30;i++ )           //创建对象数组
        {
            stu[j]=new Student();
            j++;
        }
        for (int k = 0; k < 30; k++) {
            for (j = 0; j < 4; j++) {
                zu[j]=(int)Math.round(Math.random()*(100-60)+60);//产生60-100之间的随机数
            }
            stu[k].setScores(zu);
        }
        for(i=0;i<30;i++)     //随机产生姓名,都是4个英文字母
        {
            stu[i].setStudentName(stu[i].getRandomString(4));
        }
        for(int p=0;p<30;p++)	//对学号进行随机处理
        {
            char ch = (char)('0'+Math.random()*('9'-'0'+1));
            char sh = (char)('0'+Math.random()*('9'-'0'+1));
            stu[p].setStudentID("132011"+ch+sh); //学号前6位都相同
        }
        System.out.println("现在转来一名同学,请输入它的名字:");
        Student xin=new Student();
        xin.setStudentName(input.nextLine());
        System.out.println("请输入他的学号:");
        xin.setStudentID(input.nextLine());
        System.out.println("请输入他的四科成绩:");
        for (int k = 0; k < 4; k++) {
            zu2[k]=input.nextInt();
        }
        xin.setScores(zu2);   //传入新同学的成绩
        pinjun(xin.getStudentName(),xin.getStudentID(),xin.getScores());
        float maxx=jisuan(stu[0].getScores());  //找出30名同学成绩最好的一位同学
        for (int k = 0; k < 30; k++) {
            if(jisuan(stu[k].getScores())>maxx) {
                maxx = jisuan(stu[k].getScores());
                tep=k;
            }
        }
        System.out.printf("\n");   //求出全班的平均分
        pinjun(stu[tep].getStudentName(),stu[tep].getStudentID(),stu[tep].getScores());
        bijiao(xin.getScores(),stu[tep].getScores());
        for (int k = 0; k < 30; k++) {
            summ+=jisuan(stu[k].getScores());
        }
        double banji=summ/30;
        if(banji<jisuan(xin.getScores()))
        {
            System.out.println(xin.getStudentName()+"的平均成绩高于班级的平均成绩");
        }
        else
        {
            System.out.println(xin.getStudentName()+"的平均成绩低于班级的平均成绩");
        }
    }
    public static void pinjun(String an,String bn,int a[])  //输出平均分和分数最高
    {
        float jun=0;
        float sum=0;
        int max=a[0];
        for (int i = 0; i < 4; i++) {
            sum+=a[i];
        }
        jun=sum/4;
        System.out.printf("%s(%s)的平均分为%.2f\n",an,bn,jun);
        for (int i = 0; i < 4; i++) {
            if(a[i]>max)
            {
                max=a[i];
            }
        }
        System.out.printf("%s的最高分为%d\n",an,max);
    }
    public static float jisuan(int a[]){      //计算平均分
        float sum=0;
        float jun=0;
        for (int i = 0; i < 4; i++) {
            sum+=a[i];
        }
        return sum/4;
    }
    public static void bijiao(int a[],int b[]){  //新同学与成绩最好的学生比较
        float sum=0;float sum2=0;
        float jun=0;
        float jun2=0;
        for (int i = 0; i < 4; i++) {
            sum+=a[i];
        }
        jun=sum/4;
        for (int j = 0; j < 4; j++) {
            sum2+=b[j];
        }
        jun2=sum2/4;
        if(jun>jun2)
        {
            System.out.printf("\n新同学已经是班上成绩最好的同学啦\n");
        }
        else
        {
        }
    }
}
class Student {					//定义学生类
    private String studentID;//学生学号
    private String studentName;//学生姓名
    private int[] scores = new int[4];//学生成绩

    public String getStudentID() {
        return studentID;
    }

    public void setStudentID(String studentID) {
        this.studentID = studentID;
    }

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public int[] getScores() {
        return scores;
    }

    public void setScores(int[] scores) {
        this.scores = scores;
    }

    String getRandomString(int length) {        //随机产生姓名
        String str = "abcdefghijklmnopqrstuvwxyz";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(26);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }
}

5.运行结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江景.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值