学生成绩管理系统

刚开始写COREJAVA不到一个礼拜,费了好大的功夫跟高人请教借鉴一些好的方式方法还有思路,写了个简单的学生成绩管理系统。争取以后能把代码量再提高,能更流利顺畅写出思路清晰的代码。


import java.util.Scanner;

public class StudentManagement {
 
 public static void main(String[] args) {
  int[][] scores={
    {85,93,64,77,63},
    {91,88,67,78,90},
    {75,66,89,91,58},
    {82,45,67,79,91},
    {82,34,77,85,88},
    {71,82,87,67,91}};  //六个学生,五门课程的成绩
  
  String[] courses={"corejava","unix","jdbc","jsp","ejb"};
  String[] students={"zhangsan","lisi","wangwu","zhaoliu","qianqi","liuba"};
  Scanner sca = new Scanner((System.in));
  System.out.println("欢迎使用学生成绩管理系统,请阅读以下说明:");
  System.out.println("1.若查询某课程的平均成绩,请按照以下方式输入:AVGCOU unix");
  System.out.println("2.若查询某学生的平均成绩,请按照以下方式输入:AVGSTU zhangsan");
  System.out.println("3.若查询全体学生总成绩的排列顺序,请按照以下方式输入:SORT sum");
  System.out.println("4.若查询某课程成绩的排列顺序,请按照以下方式输入:SORT unix");
  System.out.println("5.若查询某学生的总成绩,请按照一下方式输入:GET zhangsan sum");
  System.out.println("6.若查询某学生某课程的成绩,请按照以下方式输入:GET zhangsan unix");
  System.out.println("7.本系统中包含学生:zhangsan,lisi,wangwu,zhangliu,qianqi,liuba");
  System.out.println("8.本系统中包含的课程:corejava,unix,jdbc,jsp,ejb");
  while(true){
   System.out.println("请输入查询命令:");
   String str = sca.next(); 
   if(str.equals("AVGCOU")){
    String cou = sca.next();
    avgCou(scores,courses,cou);
   }else if(str.equals("AVGSTU")){
    String stu=sca.next();
    avgStu(scores,students,stu);
   }else if(str.equals("SORT")){
    String cou=sca.next();
    sort(scores,courses,students,cou);
   }else if(str.equals("GET")){
    String stu=sca.next();
    String cou=sca.next();
    get(scores,courses,students,stu,cou);
   }else if(str.equals("EXIT")){
    break;
   }
  }
 }  //main() end!

 
 public static void avgCou(int[][] scores,String[] courses,String cou){
  //1.在courses数组中搜索cou出现的下标,如果courses中不包含cou,则输出错误信息并返回。
  //2.根据上一步找到的下标去查找scores中该列,把该列上的所有数据累加求和。
  //3.将和值除以scores数组的行数得到平均值,并将课程名和平均值输出。
  
     int index=-1;
     double sum = 0.0;
  for(int i=0;i<courses.length;i++){
      if(courses[i].equals(cou)){
       index=i;
       break;
      }
     }
  if(index==-1){
   System.out.println("没有该课程,请重新输入!");
   return;
  }
  
  for(int j=0;j<scores.length;j++){
   sum+=scores[j][index];
  }
     double avg=sum/scores.length;
     System.out.println(cou +"课程的平均分是:" +avg);
 }//end
 
 
 public static void avgStu(int[][] scores,String[] students,String stu){
  int index=-1;
  double sum=0.0;
  for(int i=0;i<students.length;i++){
   if(students[i].equals(stu)){
    index=i;
    break;
   }
  }
  if(index==-1){
   System.out.println("没有该学生,请重新输入");
   return;
  }
  for(int j=0;j<scores[0].length;j++){
   sum+=scores[index][j];
  }
  double avg = sum/scores[0].length;
  System.out.println(stu +"的平均成绩是" +avg);
 }
 
 
 
 public static void sort(int[][] scores,String[] courses,String[] students,String cou){

//  1.创建一个一维int数组,保存cou课程的成绩。
//  2.创建一个一维String数组,保存所有学生的姓名。
//  3.对int数组排序,并且也同步移动String数组的顺序。
//  4.输出学生名和分数。
     int[] scoresOne = new int[scores.length];
     String[] studentName = new String[scores.length];
     int sum=0;
     if(cou.equals("sum")){
      for(int i=0;i<scores.length;i++){
       for(int j=0;j<scores[0].length;j++){
        sum+=scores[i][j];
       }
       scoresOne[i]=sum;
       studentName[i]=students[i];
      }
     }else{
       int t=-1;
       for(int i=0;i<scores[0].length;i++){
        if(courses[i].equals(cou)){
         t=i;
         break;
        }
       }
       if(t==-1){
        System.out.println("错误!请重新输入");
        return;
       }
       for(int j=0;j<scores.length;j++){
        scoresOne[j]=scores[j][t];
        studentName[j]=students[j];
       }
      }
    
     int temp1=0;
     String temp2=null;
    for(int i=0;i<scoresOne.length-1;i++){
     for(int j=i+1;j<scoresOne.length;j++){
      if(scoresOne[i]<scoresOne[j]){
       temp1=scoresOne[i];
       temp2=studentName[i];
       scoresOne[i]=scoresOne[j];
       studentName[i]=studentName[j];
       scoresOne[j]=temp1;
       studentName[j]=temp2;
      }
     }
    }
    
    for(int k=0;k<studentName.length;k++){
       System.out.println("姓名:" +studentName[k]+", 分数:" +scoresOne[k]);
    }
    
 
 } //sort end;
 
 
 public static void get(int[][] scores,String[] courses,String[] students,String stu,String cou){
//       1.确定学生姓名,找出对应的下标,确定scores数组相应的行
//       2.判断是SUM还是COU
//       3.如果是SUM,求第一步对应行下各列的和,并输出
//       4.如果是COU,找出courses中对应的下标,并确定scores中对应的列,并输出。
  
  int index1=-1;
  int index2=-1;
  int sum=0;
  //找出学生姓名,如果错误,则返回
  for(int i=0;i<students.length;i++){
   if(students[i].equals(stu)){
    index1=i;
    break;
   }
  }
  if(index1==-1){
   System.out.println("错误,请重新输入!");
   return;
  }
   
  //判断是SUM还是COU
  if(cou.equals("sum")){
         for(int j=0;j<scores[0].length;j++){
          sum+=scores[index1][j];
         }System.out.println(stu +"的总分是" +sum);
        }else {
         for(int k=0;k<scores[index1].length;k++){
          if(courses[k].equals(cou)){
           index2=k;
           break;
          }
         }
         if(index2==-1){
          System.out.println("错误,请重新输入");
          return;
         }
         System.out.println(stu +"的" +cou +"课程的分数是:"+scores[index1][index2]);
         }  
  
 }  //get end


}  //class end

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值