《java》学生成绩统计从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:

《java》学生成绩统计从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:

.学生成绩统计
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。
第2学期第2次实验
二维数组和函数综合编程练习
1.成绩排名次
某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有最多不超过30人参加考试。考试后要求:
(1)计算每个学生的总分和平均分;
(2)按总分成绩由高到低排出成绩的名次;
(3)打印出名次表,表格内包括学生编号、各科分数、总分和平均分;
(4)任意输入一个学号,能够查找出该学生在班级中的排名及其考试分数。
【思考题】 请读者思考如下问题。
① 如果增加一个要求:要求按照学生的学号由小到大对学号、成绩等信息进行排序,那么程序如何修改呢?
② 如果要求程序运行后先打印出一个菜单,提示用户选择:成绩录入、成绩排序、成绩查找,在选择某项功能后执行相应的操作,那么程序如何修改呢?

import java.util.Scanner;

public class task {
  double score[][]=new double[30][3];
  double stuNum;
  int sno[]=new int[30];
  int rank[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29};
  double sum[]=new double[30];
  double aver[]=new double[30];
  //设置学号和各科成绩
  public void setSonAndScore()
  {
    System.out.println("Enter No. and score as: MT  EN  PH");
    Scanner input=new Scanner(System.in);
    for(int i=0;i<stuNum;i++)
    {
      sno[i]=input.nextInt();
      for(int j=0;j<3;j++)
      {
        score[i][j]=input.nextDouble();
      }
    }
  }
  //设置学生人数
  public void setStuNum()
  {
    System.out.println("Please enter the total number of the students(n<=30):");
    Scanner input=new Scanner(System.in);
    this.stuNum=input.nextDouble();
  }
  //计算总分
  public void setSum()
  {
    for(int i=0;i<stuNum;i++)
    {
      this.sum[i]=score[i][1]+score[i][2]+score[i][0];
    }
  }
  //计算平均分
  public void setAver()
  {
    for(int i=0;i<stuNum;i++)
    {
      this.aver[i]= sum[i]/3.0;
    }
  }
  //计算排名
  public void ranking()
  {
    double forRank[]=new double[30];
    forRank= sum;
    for(int i=0;i<stuNum-1;i++)
    {
      for(int j=0;j<=stuNum-i-1;j++)
      {
        if(forRank[j]<forRank[j+1])
        {
          double temp=forRank[j];
          forRank[j]=forRank[j+1];
          forRank[j+1]=temp;
          int temp2;
          temp2=rank[j];
          rank[j]=rank[j+1];
          rank[j+1]=temp2;
        }
      }
    }
  }
  //查询
  public void query()
  {
    int pos;
    System.out.println("Please enter searching number:");
    Scanner input=new Scanner(System.in);
    int tSno=input.nextInt();
    System.out.println("position NO      MT    EN    PH    SUM    AVER");
    System.out.println("----------------------------------------------");
    for(pos=0;pos<stuNum;++pos)
    {
     if(sno[pos]==tSno)
         break;
    }
    for (int k=0;k<stuNum;k++)
    {
      if (rank[k]==pos)
      {
        System.out.print(++k);
        System.out.print("     ");
        System.out.print(sno[rank[k]]);
        System.out.print(" ");
        for(int j=0;j<3;j++)
        {
          System.out.print(score[rank[k]][j]);
          System.out.print("  ");
        }
        System.out.print(sum[rank[k]]+"  "+ aver[rank[k]]);
        System.out.println("");
      }
    }
  }
  //打印排名
  public void print()
  {
    System.out.println("NO      MT    EN    PH    SUM    AVER");
    System.out.println("-------------------------------------------");
    for(int i=0;i<stuNum;i++)
    {
      System.out.print(sno[rank[i]]);
      System.out.print(" ");
      for(int j=0;j<3;j++)
      {
        System.out.print(score[rank[i]][j]);
        System.out.print("  ");
      }
      System.out.print(sum[rank[i]]+"  "+ aver[rank[i]]);
      System.out.println("");
    }
  }
  public static void main(String args[])
  {
    task t=new task();
    t.setStuNum();
    t.setSonAndScore();
    t.setSum();
    t.setAver();
    System.out.println("Before sort");
    t.print();
    System.out.println("After sort:");
    t.ranking();
    t.print();
    t.query();
  }
}

猜你喜欢

转载自blog.csdn.net/qq_41526054/article/details/84501564