JAVA --- 學生資訊類,輸入+排序+輸出
阿新 • • 發佈:2018-12-14
import java.io.IOException; import java.util.Scanner; class AA { static class student { String num,name; double grade1,grade2,grade3,sumgrade; int no; student(){grade1=grade2=grade3=sumgrade=0; num=name="未知";} student(String a,String b,double c,double d,double e) { num=a;name=b; grade1=c;grade2=d;grade3=e; sumgrade=c+d+e; } /*void changenum(String s) {num=s;} void changename(String s) {name=s;} void changegrade1(double a) {grade1=a;} void changegrade2(double a) {grade2=a;} void changegrade3(double a) {grade3=a;} void changegrade(double a,double b,double c) {grade1=a;grade2=b;grade3=c;sumgrade=a+b+c;}*/ void changeno(int x) {no=x;} String getnum() {return num;} double getsum() {return sumgrade;} void display() { System.out.println(num+"\t"+name+"\t"+grade1+"\t"+grade2+"\t"+grade3+"\t"+sumgrade+"\t"+no); } } static int scanf(int x,student stu[]) { Scanner cin=new Scanner(System.in); int ok=1; String snum=new String(); String sname=new String(); String S=new String("-1"); double d[]=new double[4]; while(ok==1) { System.out.println("請輸入學生學號,輸入-1結束輸入"); snum=cin.next(); if(snum.equals(S)) {break;} x++; System.out.println("請依次輸入學生姓名,第一門學科成績,第二門學科成績,第三門學科成績"); sname=cin.next(); for(int i=1;i<=3;i++) { d[i]=cin.nextDouble(); } student s=new student(snum,sname,d[1],d[2],d[3]); stu[x]=s; } return x; } static void sort(int n,student stu[]) { student s=new student(); for(int i=1;i<n;i++) { for(int j=1;j<n;j++) { if(stu[j].getsum()<stu[j+1].getsum()) { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } else if(stu[j].getsum()==stu[j+1].getsum()) { if(stu[j].getnum().compareTo(stu[j+1].getnum())>0) { s=stu[j]; stu[j]=stu[j+1]; stu[j+1]=s; } } } } int num=1; if(n>0) stu[1].changeno(1); for(int i=2;i<=n;i++) { if(stu[i].getsum()==stu[i-1].getsum()) { stu[i].changeno(num); } else stu[i].changeno(++num); } } static void display(int n,student stu[]) { System.out.println("學號 \t 姓名 \t 成績1 \t 成績2 \t 成績3 \t 總成績 \t 名次"); for(int i=1;i<=n;i++) { stu[i].display(); } } public static void main(String arg[])throws IOException { student stu[]=new student[20]; int n=0; int ok=1,x; System.out.println("歡迎使用!"); Scanner cin=new Scanner(System.in); while(ok==1) { System.out.println("請輸入您的選擇前的序號:"); System.out.println(" 0: 退出"); System.out.println(" 1: 輸入學生資訊"); System.out.println(" 2: 根據學生成績排序"); System.out.println(" 3: 輸出學生資訊"); int ch=cin.nextInt(); switch(ch) { case 0:{ok--;break;} case 1:{n=scanf(n,stu);break;} case 2:{sort(n,stu); System.out.println("排序完成"); break;} case 3:{display(n,stu);break;} default: {System.out.println("輸入有誤,請重新輸入");break;} } } } } /* 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 -1 2 3 */