题目、编写一个Java应用程序。设计一个学生类Students,包括属性有:序号,学号,姓名,性别,专业,三门课程成绩(数学,计算机,英语);包括方法有:求成绩总分,成绩平均分,除序号外各个属性的赋值方法,各个属性值的获取方法等等。说明:每创建一个Students对象,则序号值增1;第一个学生对象的序号值为1

编写一个主类StudentsDemo,在主方法中创建5个Students类的对象,按以下要求输出相关信息:

(1)各课程最高/最低分同学的序号、学号、姓名和该门课程分数

(2)总分最高/最低同学的序号、学号、姓名和所有课程分数

(3)输入一个学号或者姓名,若存在这样的学号或姓名则输出该学生的所有信息,否则输出信息不存在。

package StudentsDemo;
import java.util.Scanner;
public class StudentsDemo {

  public static void main(String[] args) {
    //创建学生信息
    Student[] a = new Student[5];//以数组的形式存储5个学生类
    int i = 0;
    for (i = 0; i < 5; i++) {
      a[i] = new Student();
      a[i].math = (int) (Math.random() * 100);//产生一个0到1之间的随机数*100
      a[i].english = (int) (Math.random() * 100);//随机数录入成绩
      a[i].comp = (int) (Math.random() * 100);
      a[i].gender = "男";
      a[i].major = "计算机类";
//      System.out.println(a[i].nunber);  验证编号
    }
    a[0].stu_num = "125";
    a[1].stu_num = "244";
    a[2].stu_num = "334";
    a[3].stu_num = "442";
    a[4].stu_num = "542";//学号

    a[0].name = "张三";
    a[1].name = "里面";
    a[2].name = "黎明";
    a[3].name = "李华";
    a[4].name = "丽华";//起名

    int max1 = 0, min1 = 0;
    int max2 = 0, min2 = 0;
    int max3 = 0, min3 = 0;
    int MAX = 0;
    for (i = 0; i < 5; i++) {
      if (a[i].gettotal() > a[MAX].gettotal()) {
        MAX = i;
      }
      if (a[i].math > a[max1].math) {
        max1 = i;
      }

      if (a[i].math < a[min1].math) {
        min1 = i;
      }

      if (a[i].english > a[max2].english) {
        max2 = i;
      }

      if (a[i].english < a[max2].english) {
        min2 = i;
      }

      if (a[i].comp > a[max3].comp) {
        max3 = i;//寻找分高的人
      }

      if (a[i].comp < a[min3].comp) {
        min3 = i;
      }
    }
    Put(a, "英语", max2);
    Put(a, "数学", max1);
    Put(a, "计算机", max3);

    //输出学习信息
    Put2(a, "英语", min2);
    Put2(a, "数学", min1);
    Put2(a, "计算机", min3);

    Put(a, "", MAX);
    System.out.println("英语分 " + a[MAX].getEnglish());
    System.out.println("数学分为  " + a[MAX].getMath());
    System.out.println("计算机分数为  " + a[MAX].getComp());
    //输出总分最高

    //查找学生
    int cont = -1;
    Scanner in = new Scanner(System.in);
    System.out.println("请输入学号或姓名");
    String search = in.nextLine();
    for (i = 0; i < 5; i++) {//equals比较字符串是否相等
      if (a[i].name.equals(search) || a[i].stu_num.equals(search)) {
        cont = i;
        break;
      }
    }

    if (cont == -1) {
      System.out.println("信息不存在");
    } else {
      System.out.println("姓名是" + a[cont].name);
      System.out.println("序号是" + a[cont].nunber);
      System.out.println("学号是" + a[cont].stu_num);
      System.out.println("性别是" + a[cont].gender);
      System.out.println("专业是" + a[cont].major);
      System.out.println("英语成绩是" + a[cont].getEnglish());
      System.out.println("数学成绩是" + a[cont].math);
      System.out.println("计算机成绩是" + a[cont].comp);
      System.out.println("总分是" + a[cont].gettotal());
      System.out.println("平均分是" + a[cont].getaver());

    }


  }

  static void Put(Student[] ss, String course, int num) {
    System.out.println(course + "成绩最高的是" + ss[num].nunber + "号学生");
    System.out.println("学号是" + ss[num].stu_num);
    System.out.println("姓名是" + ss[num].name);
    if (course.equals("english")) {//分号不能少
      System.out.println(course + "成绩是" + ss[num].english);
    } else if (course.equals("comp")) {
      System.out.println(course + "成绩是" + ss[num].comp);
    } else if (course.equals("math")) {
      System.out.println(course + "成绩是" + ss[num].math);
    }
  }

  static void Put2(Student[] ss, String course, int num) {
    System.out.println(course + "成绩最低的是" + ss[num].nunber + "号学生");
    System.out.println("学号是" + ss[num].stu_num);
    System.out.println("姓名是" + ss[num].name);
    if (course.equals("english")) {
      System.out.println(course + "成绩是" + ss[num].english);
    } else if (course.equals("comp")) {
      System.out.println(course + "成绩是" + ss[num].comp);
    } else if (course.equals("math")) {
      System.out.println(course + "成绩是" + ss[num].math);
    }
  }
}
package StudentsDemo;
public class Student {

      static int NUM = 1;
      int nunber;
      String stu_num;
      String name;
      String gender;
      double math;
      double comp;
      double english;
      String major;

      Student() {//构造方法
        nunber = NUM++;
      }

      public double gettotal() {//获取总分
        return this.math + this.english + this.comp;
      }

      public double getaver() {
        return ((this.comp + this.english + this.math) * 1.0) / 3;
      }

      public String getName() {
        return name;
      }

      public void setName(String name) {
        this.name = name;
      }

      public double getComp() {
        return comp;
      }

      public void setComp(double comp) {
        this.comp = comp;
      }

      public double getEnglish() {
        return english;
      }

      public void setEnglish(double english) {
        this.english = english;
      }

      public double getMath() {
        return math;
      }

      public void setMath(double math) {
        this.math = math;
      }

      public String getGender() {
        return gender;
      }

      public void setGender(String gender) {
        this.gender = gender;
      }

      public String getStu_num() {
        return stu_num;
      }

      public void setStu_num(String stu_num) {
        this.stu_num = stu_num;
      }

      public String getMajor() {
        return major;
      }

      public void setMajor(String major) {
        this.major = major;
      }

    }

 

//另一种方法
public class Student {    
    static int id=0;//学生序号
    //用类变量保留相应科目最高(低)分的ID,便于对象共享
    static int mathScoreMaxID=0;
    static int mathScoreMinID=0;
    static int englishScoreMaxID=0;
    static int englishScoreMinID=0;
    static int computerScoreMaxID=0;
    static int computerScoreMinID=0;    
    static int totalScoreMaxID=0;
    static int totalScoreMinID=0;
    //用类变量保留相应科目最高(低)分,便于对象共享
    private static float mathScoreMax=0;//数学科目最高分
    private static float englishScoreMax=0;
    private static float computerScoreMax=0;
    private static float mathScoreMin=100;
    private static float englishScoreMin=100;
    private static float computerScoreMin=100;
    private static float totalScoreMax=0;
    private static float totalScoreMin=0;
    //将成员变量定义为私有的,体现面向对象的封装性
    private String studentNumber;//学生学号
    private String studentName;
    private String studentSex;
    private String studentMajor;
    private float mathScore;
    private float englishScore;
    private float computerScore;
    private float totalScore;
    private float averageScore;
    //构造方法,创建对象时调用
    Student(String number,String name,String sex,String major){
        id++;//每创建一个Students对象,则序号值增1;
        studentNumber=number;
        studentName=name;
        studentSex=sex;
        studentMajor=major;                
    }
//给每个成员变量(各个科目成绩)赋值
    void setAllScore(int id,float math,float english,float computer){
        setMathScore(id,math);
        setEnglishScore(id,english);
        setComputerScore(id,computer);
        setTotalScore();
        setAverageScore();        
    }
//给数学成绩赋值,用类变量保存最大(小)值以及相应序号
    void setMathScore(int id,float math){
        mathScore=math;
        if(math>mathScoreMax){//获得数学分最高的学生序号
            mathScoreMax=math;
            mathScoreMaxID=id;
        }
        if(math<mathScoreMin){//获得数学分最低的学生序号
            mathScoreMin=math;
            mathScoreMinID=id;
        }
    }    
    void setEnglishScore(int id ,float english ){
        englishScore=english;
        if(english>englishScoreMax){//获得英语分最高的学生序号
            englishScoreMax=english;
            englishScoreMaxID=id;
        }
        if(english<englishScoreMin){//获得英语分最低的学生序号
            englishScoreMin=english;
            englishScoreMinID=id;
        }
    }    
    void setComputerScore(int id,float computer){
        computerScore=computer;        
        if(computer>computerScoreMax){//获得计算机分最高的学生序号
            computerScoreMax=computer;
            computerScoreMaxID=id;
        }
        if(computer<computerScoreMin){//获得计算机分最低的学生序号
            computerScoreMin=computer;
            computerScoreMinID=id;
        }
    }
    void setTotalScore(){
        totalScore=mathScore+englishScore+computerScore;
        if(totalScore>totalScoreMax){
            totalScoreMax=totalScore;
            totalScoreMaxID=id;
        }
        if(totalScore<totalScoreMin){
            totalScoreMin=totalScore;
            totalScoreMinID=id;
        }        
    }
    void setAverageScore(){
        averageScore=totalScore/3;            
    }
    //学号、姓名查找方法
    boolean findStudentNumber(String number){
        return studentNumber.equals(number);
    }
    boolean findStudentName(String name){
        return studentName.equals(name);
    }    
//以下方法主要由于外部访问内部私有变量
    float getMathScore(){
        return mathScore;
    }
    float getEnglishScore(){
        return englishScore;
    }
    float getComputerScore(){
        return computerScore;
    }    
    String getStudentNumber(){
        return studentNumber;
    }
    String getStudentName(){
        return studentName;
    }
    String getStudentSex(){
        return studentSex;
    }
    String getStudentMajor(){
        return studentMajor;
    }    
}