stumag.java

来自「本源码是在netbean开发环境下制作」· Java 代码 · 共 405 行

JAVA
405
字号
import java.lang.*;
import java.io.*;
public class StuMag
{
  public static void main(String[] args)//主函数
  {
    while(true)
    {
      Menu.paint();//初始化菜单
      int ctrlTag = Console.readInt();//接收输入的数据
      switch(ctrlTag)
      {
        case 1:
        {
          Menu.action1();//输入记录
          break;
        }

        case 2:
        {
          Menu.action2();//输出所有记录
          break;
        }

        case 3:
        {
          Menu.action3();//按平均成绩排序并输出 
          break;
        }

        case 4:
        {
          Menu.action4();// 查找记录
          break;
        }

        case 5:
        {
          Menu.action5();//统计各分数段人数
          break;
        }

        case 6:
        {
          Menu.action6();//删除记录
          break;
        }

        case 7:
        {
          System.exit(0);// 退出
          break;
        }
          default:
          {
              System.out.println("??????请重新选择操作命令号??????");
          }
      }
    }
  }
}
//定义要输入的数据类型为int 型或string 型
class Console
{
  public static int readInt()//定义int类型
  {
    int result = 7;
    try{
      String temp =new BufferedReader(new InputStreamReader(System.in)).readLine();
      result = Integer.parseInt(temp);
    } catch (Exception e)
    {
     return 0;
    }
    return result;
  }

  public static String readSting()//定义strng 类型
  {
    String result = null;
    try{
      result = new BufferedReader(new InputStreamReader(System.in)).readLine();
    } catch (Exception e)
    {
     return "";
    }
    return result;
  }
}
//定义学生类及获取字段的方法
class Student
{
  private int number;
  private String name;
  private int english;
  private int math;
  private int computer;
  private int average;
  private int total;

  public Student()
  {
  }

  public Student(int number, String name, int english, int math, int computer)
  {
    this.number = number;
    this.name = name;
    this.english = english;
    this.math = math;
    this.computer = computer;
    total = english + math + computer;
    average = total/3;
  }

  public int getNumber()
  {
    return number;
  }

  public String getName()
  {
    return name;
  }

  public int getEnglish()
  {
    return english;
  }

  public int getMath()
  {
    return math;
  }

  public int getComputer()
  {
    return computer;
  }

  public int getAverage()
  {
    return average;
  }

  public int getTotal()
  {
    return total;
  }
}
//定义对学生操作的方法
class StudentSet
{
  private static final int maxLen = 1000;//存储的最多记录为1000
  private static int len = 0;
  private static Student[] data = new Student[maxLen];//存储记录的数组
  //
  public static int getMaxLen()
  {
    return maxLen;
  }
//获取记录的个数
  public static int getLen()
  {
    return len;
  }
//获取某行记录的记录号
  public static Student getData(int index)
  {
    return data[index];
  }
//添加记录到末尾
  public static int addData(Student newData)
  {
    if (len < maxLen)//检测记录是否溢出
    {
      data[len] = newData;
      len++;
      return 0;
    } else
    {
      return -1;
    }
  }
//排序操作
  public static void sortData()
  {
    for (int i = 0; i < len -1; i++)
    {
      int minIndex = i;
      for (int j = i+1; j < len; j++)
      {
        if (data[minIndex].getAverage() > data[j].getAverage())
        {
          minIndex = j;
        }
      }
      if (minIndex != i)
      {
        Student temp = data[i];
        data[i] = data[minIndex];
        data[minIndex] = temp;
      }
    }
  }
//查找操作
  public static int search(int number)
  {
    for(int i = 0; i < len; i++)
    {
      if (data[i].getNumber() == number)
      {
        return i;
      }
    }
    return -1;
  }
//删除操作
  public static int delete(int number)
  {
    for (int i = 0; i < len; i++)
    {
      if (data[i].getNumber() == number)
      {
        for (int j = i + 1; j < len; j++)
        {
          data[j-1] = data[j];
        }
        len--;
        return 0;
      }
    }
    return -1;
  }
//统计分段人数
  public static int stat(int min, int max)
  {
    int sum =0;

    for (int i = 0; i < len; i++)
    {
      if ((data[i].getAverage() >= min) && (data[i].getAverage() <= max))
      {
        sum++;
      }
    }
    return sum;
  }
}
//定义菜单类
class Menu
{
  public static void paint()
  {
    clrscr();
    for (int i = 0; i < 80; i++)
    {
      System.out.print('=');
    }
    System.out.println();

    System.out.println("                             学生成绩管理系统                 ");
    System.out.println();
    System.out.println("               1 输入记录                       2 输出所有记录");
    System.out.println("               3 按平均成绩排序并输出           4 查找记录");
    System.out.println("               5 统计各分数段人数               6 删除记录");
    System.out.println("               7 退出");

    for (int i = 0; i < 80; i++)
    {
      System.out.print('=');
    }
   
    System.out.println();
    System.out.print("请输入命令:");
  }
//输入记录的代码
  public static int action1()
  {
      while(true)
    {
      clrscr();
      System.out.print("待输入记录的学号(输入“-1”退出):");

      int number = Console.readInt();
      if(StudentSet.search(number)!=-1) break;
      System.out.println(StudentSet.search(number));
      if (number != -1)
      {
        System.out.print("  *姓名:");
        String name = Console.readSting();
        System.out.print("  *英语:");
        int english = Console.readInt();
        System.out.print("  *数学:");
        int math = Console.readInt();
        System.out.print("  *计算机:");
        int computer = Console.readInt();
        Student newData = new Student(number, name, english, math, computer);
        if (StudentSet.addData(newData) == -1)
        {
          System.out.println("数据溢出!");
          return -2;
        }
      } else
      {
        return -1;
      }      
    }
    return 100;
  }
  // 输出所有记录
  public static void action2()
  {
   
   clrscr();
    if (StudentSet.getLen() == 0)
    {
      System.out.println("没有记录!");
    } else
    {
      System.out.println("         数学|英语|计算机|平均|总计");
      for (int i = 0; i < StudentSet.getLen(); i++)
      {
        System.out.println("学号:"+StudentSet.getData(i).getNumber()+"  姓名:"+StudentSet.getData(i).getName());
        System.out.println("      "+StudentSet.getData(i).getMath()+"    "+StudentSet.getData(i).getEnglish()+
          "    "+StudentSet.getData(i).getComputer()+"    "+StudentSet.getData(i).getAverage()+"    "+StudentSet.getData
(i).getTotal());
      }
    }
  }
//按平均成绩排序并输出
  public static void action3()
  {
  
   StudentSet.sortData();
    action2();
  }
// 查找记录
  public static void action4()
  {
   
    clrscr();
    System.out.print("请输入要查找记录的学号:");
    int number = Console.readInt();
    int i;
    if ((i = StudentSet.search(number)) != -1)
    {
      clrscr();
      System.out.println("         数学|英语|计算机|平均|总计");
      System.out.println("学号:"+StudentSet.getData(i).getNumber()+"  姓名:"+StudentSet.getData(i).getName());
      System.out.println("      "+StudentSet.getData(i).getMath()+"    "+StudentSet.getData(i).getEnglish()+
        "    "+StudentSet.getData(i).getComputer()+"    "+StudentSet.getData(i).getAverage()+"    "+StudentSet.getData
(i).getTotal());
    } else
    {
      System.out.println("没有找到相应的记录!");
    }
  }
  //统计各分数段人数
  public static void action5()
  {
 
    clrscr();
    System.out.println("90-100: "+StudentSet.stat(90, 100)+"人");
    System.out.println("80-89: "+StudentSet.stat(80, 89)+"人");
    System.out.println("70-79: "+StudentSet.stat(70, 79)+"人");
    System.out.println("60-69: "+StudentSet.stat(60, 69)+"人");
    System.out.println("0-59: "+StudentSet.stat(0, 59)+"人");
  }
  //删除记录
  public static void action6()
  {
   
    while(true)
    {
      clrscr();
      System.out.print("请输入要删除记录的学号(输入“-1”退出):");
      int number = Console.readInt();
      if (number != -1)
      {
        if(StudentSet.delete(number) == -1)
        {
          System.out.println("没有找到相应的记录!");
          return;
        } else
        {
          System.out.println("删除记录成功!");
        }
      } else
      {
        return;
      }
    }
  }
    //插入空格
  public static void clrscr()
  {
    System.out.println();
    System.out.println();
  }
}



⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?