这是我编的一个学生成绩管理系统
我想用根据总分total的高低 将学生信息重新排序并输出 请问该如何写方法
- Java code
import java.io.*;import java.util.Scanner;//学生类class Student{ public static int count=0; private String id; private String name; private int age; private int score1; private int score2; private int total; private int ave; private char level; private int a=0; private int b=0; private int c=0; private int d=0; public Student(String id,String name,String age,String score1,String score2) //通过构造方法将外部传入的参数赋值给类的成员变量 { this.id=id; this.name=name; this.age=Integer.parseInt(age); this.score1=Integer.parseInt(score1); this.score2=Integer.parseInt(score2); } public Student(String id,String name,int age,int score1,int score2){ this.id=id; this.name=name; this.age=age; this.score1=score1; this.score2=score2; } public String GetId(){ return id; } public String GetName(){ return name; } public int GetAge(){ return age; } public int GetScore1(){ return score1; } public int GetScore2(){ return score2; } public int GetTotal(){ total=score1+score2; return total; } public int GetAve(){ ave=(score1+score2)/2; return ave; } public char GetLevel(){ if (ave>89) {level='A';a++;} else if (ave>74) {level='B';b++;} else if (ave>59) {level='C';c++;} else {level='D';d++;} return level; } public void Display(){ System.out.println(id+"\t"+name+"\t"+age+"\t"+score1+"\t"+score2+"\t"+total+"\t"+ave+"\t"+level); } public Student(){ } } //学生成绩管理系统public class StudentInfo{ public static final int MAX=100; public static Student[] stu=new Student[MAX]; public static void Output()throws IOException{ PrintWriter br=new PrintWriter(new BufferedWriter(new FileWriter("student.in"))); br.println("id\tname\tage\tscore1\tscore2\ttotal"); for(int i=0;i<Student.count;i++){ br.println(stu[i].GetId()+"\t"+stu[i].GetName()+"\t"+stu[i].GetAge()+"\t"+stu[i].GetScore1()+"\t"+stu[i].GetScore2()+"\t"+stu[i].GetTotal()+"\t"+stu[i].GetAve()+"\t"+stu[i].GetLevel()); } br.close(); } public static void Input(){ //BufferedReader br=new BufferedReader(new FileReader("student.out")); try{ Scanner sc=new Scanner(new FileReader("student.in")); //建立一个student.in文件,将学生信息写入其中 String str; for(int i=0;i<5;i++){ str=sc.next(); } String[] str1=new String[5]; for(int j=0;j<MAX;j++){ for(int i=0;i<5;i++){ str1[i]=sc.next(); } stu[j]=new Student(str1[0],str1[1],str1[2],str1[3],str1[4]); Student.count++; } } catch(Exception e){ System.out.println("The end!"); } } public static void InitSystem()throws IOException{ System.out.println("★学生管理系统v1.0★"); System.out.println("-----------------------"); System.out.println("[0].退出程序."); System.out.println("[1].输入学生信息,数据以空格隔开,键入end结束输入."); System.out.println("[2].加入一个学生信息."); System.out.println("[3].删除一个学生信息."); System.out.println("[4].按学号查找学生及成绩."); System.out.println("[5].按总分数排序."); System.out.println("[6].查看分数,平均分及等级."); String str; System.out.println("-----------------------"); System.out.print("输入你的选择:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); str=br.readLine(); int i=Integer.parseInt(str); switch(i){ case 1: InputStuInfo(); InitSystem(); break; case 2: AddStuInfo(); InitSystem(); break; case 3: InitSystem(); break; case 4: SearchInfo(); InitSystem(); break; case 5: InitSystem(); break; case 6: Display(); InitSystem(); break; case 0: System.exit(1); break; default: InitSystem(); break; } } public static void InputStuInfo() throws IOException{ String[] str=new String[5]; String str1; for(int i=0;Student.count!=0;i++){ Student.count--; } System.out.println("id\tname\tage\tscore1\tscore2"); //Student[] stu=new Student[6]; outer: for(int j=0;j<MAX;j++){ Scanner sc=new Scanner(System.in); for(int i=0;i<5;i++){ str[i]=sc.next(); if(str[i].equals("end")) //输入end结束循环 break outer; } stu[j]=new Student(str[0],str[1],str[2],str[3],str[4]); Student.count++; } Output(); } public static void AddStuInfo()throws IOException{ String[] str=new String[5]; String str1; Scanner sc=new Scanner(System.in); System.out.println("id\tname\tage\tscore1\tscore2"); for(int i=0;i<5;i++) str[i]=sc.next(); if(Student.count==MAX){ System.out.println("无法添加学生,系统已满"); } else{ stu[Student.count]=new Student(str[0],str[1],str[2],str[3],str[4]); Student.count++; } Output(); } public static void SearchInfo()throws IOException{ System.out.print("请输入需要查找的学生的学号:"); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); String str=br.readLine(); int i; i=Search(str); if(i==-1) System.out.println("不能找到相关学生信息"+str); else{System.out.println("要查找的学生为:"+stu[i].GetId()+"\t"+stu[i].GetName()+"\t"+stu[i].GetAge()+"\t"+stu[i].GetScore1()+"\t"+stu[i].GetScore2()+"\t"+stu[i].GetTotal());} } public static void Display(){ System.out.println("id\tname\tage\tscore1\tscore2\ttotal\tave\tlevel"); for(int i=0;i<Student.count;i++){ stu[i].Display(); } } public static int Search(String str){ int i; for(i=0;i<MAX;i++){ if(str.equals(stu[i].GetId())) break; } if(i==MAX) return -1; else return i; } public static void main(String[] args)throws IOException{ InitSystem(); Input(); }}