1. 程式人生 > >JAVA --- 學生資訊類,輸入+排序+輸出

JAVA --- 學生資訊類,輸入+排序+輸出

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
*/