要求:
1.請輸入5個學生
2.按總分排序
3.按數學成績排序
4.按語文成績排序
5.按計算機成績排序
6.單得成績均大於85分的學生
7.將結果輸出至文本文件
0.退出系統
package test_java;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
import java.io.*;
@SuppressWarnings("serial")
class Grade implements Serializable
{
private int ID;
private String Name;
private int Math;
private int Chinese;
private int Computer;
private int Total;
Grade() //對私有變量進行初始化
{
ID=0;
Name="";
Math=0;Chinese=0;Computer=0;
Total=0;
}
void setGrade(int id,String name,int math,int chinese,int computer)
{
ID=id;
Name=name;
Math=math;
Chinese=chinese;
Computer=computer;
Total=Math+Chinese+Computer;
}
int getID()
{
return ID;
}
String getName()
{
return Name;
}
int getMath()
{
return Math;
}
int getChinese()
{
return Chinese;
}
int getComputer()
{
return Computer;
}
int getTotal()
{
return Total;
}
void show()
{
System.out.print(ID);System.out.print('\t');
System.out.print(Name);System.out.print('\t');
System.out.print(Math);System.out.print('\t');
System.out.print(Chinese);System.out.print('\t');
System.out.print(Computer);System.out.print('\t');
System.out.print(Total);System.out.println('\t');
}
}
interface Ifun
{
abstract int quickpatition(Grade r[],int low,int high);
abstract void chinese_sort(Grade stu[],int low,int high);
abstract void bubble_sort(Grade stu[],int n);
}
abstract class chinesesort implements Ifun
{
int quickpartition(Grade r[],int low,int high)
{
int i,j;
if(low<high)
{
i=low;
j=high;
Grade w;
w=r[low];
while(i<j)
{
while((r[j].getChinese()>w.getChinese()) && (i<j))
j--;
if(i<j)
r[i++]=r[j];
while((r[i].getChinese()<=w.getChinese()) && (i<j))
i++;
if(i<j)
r[j--]=r[i];
}
r[i]=w;
}
return low;
}
public void chinese_sort(Grade stu[],int low,int high)
{
if(low<high)
{
int temp=quickpartition(stu,low,high);
chinese_sort(stu,low,temp-1);
chinese_sort(stu,temp+1,high);
}
}
}
//冒泡排序類
class bubble
{
}
public class java1
{
//退出菜單
static void _exit()
{
System.out.println("************************************************");
System.out.println("");
System.out.println(" 歡迎使用本系統");
System.out.println("");
System.out.println(" 再見!");
System.out.println("");
System.out.println("************************************************");
}
//表頭信息
static void table()
{
System.out.print("學號");System.out.print('\t');
System.out.print("姓名");System.out.print('\t');
System.out.print("數學");System.out.print('\t');
System.out.print("語文");System.out.print('\t');
System.out.print("計算機");System.out.print('\t');
System.out.print("總分");System.out.println('\t');
}
//主菜單
static void menu()
{
System.out.println("************************************************");
System.out.println(" 1.請輸入5個學生");
System.out.println(" 2.按總分排序");
System.out.println(" 3.按數學成績排序");
System.out.println(" 4.按語文成績排序");
System.out.println(" 5.按計算機成績排序");
System.out.println(" 6.單得成績均大於85分的學生");
System.out.println(" 7.將結果輸出至文本文件");
System.out.println(" 0.退出系統");
System.out.println("************************************************");
}
//按總成績冒泡排序
static void bubble_sort(Grade stu[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(stu[j].getTotal()<stu[j+1].getTotal())
{
Grade temp;
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
//按語文成績--快速排序
static int quickpartition(Grade r[],int low,int high)
{
int i,j;
if(low<high)
{
i=low;
j=high;
Grade w;
w=r[low];
while(i<j)
{
while((r[j].getChinese()>w.getChinese()) && (i<j))
j--;
if(i<j)
r[i++]=r[j];
while((r[i].getChinese()<=w.getChinese()) && (i<j))
i++;
if(i<j)
r[j--]=r[i];
}
r[i]=w;
}
return low;
}
static void chinese_sort(Grade stu[],int low,int high)
{
if(low<high)
{
int temp=quickpartition(stu,low,high);
chinese_sort(stu,low,temp-1);
chinese_sort(stu,temp+1,high);
}
}
//按數學成績--直接選擇排序
static void math_sort(Grade stu[],int n)
{
System.out.println("按數學成績由小到大排序");
int min,j;
Grade temp;
for(int i=0;i<n-1;i++)
{
min=i;
for(j=i;j<n;j++)
{
if(stu[min].getMath()>stu[j].getMath())
{
min=j;
}
}
if(min!=j)
{
temp=stu[i];
stu[i]=stu[min];
stu[min]=temp;
}
}
}
//按計算機成績--直接插入排序
static void computer_sort(Grade stu[],int n)
{
System.out.println("按計算機成績由小到大排序");
int i,j;
Grade temp;
for(i=1;i<n;i++)
{
temp=stu[i];
j=i-1;
while(j>0 && temp.getComputer() < stu[j].getComputer())
{
stu[j+1]=stu[j];
j--;
}
stu[j+1]=temp;
}
}
public static void main(String[] args) throws Exception
{
int num;
int i;
final int N=5;
int id;
String name;
int math;
int chinese;
int computer;
Grade []stu=new Grade[N];
//ArrayList <Grade> student=new ArrayList<Grade>();
menu();
Scanner reader=new Scanner(System.in);
while(true)
{
System.out.print("請選擇:");
num=reader.nextInt();
switch(num)
{
case 1:
System.out.println("請輸入5個學生的情況:");
//輸入5個學生的情況並通過setGrade函數初始化私有變量
for(i=0;i<stu.length;i++)
{
//System.out.println("請輸入學生的學號:");
stu[i]=new Grade();
id = reader.nextInt();
//System.out.println("請輸入學生的姓名:");
name = reader.next();
//System.out.println("請輸入數學成績:");
math = reader.nextInt();
//System.out.println("請輸入語文成績:");
chinese = reader.nextInt();
//System.out.println("請輸入計算機成績:");
computer = reader.nextInt();
stu[i].setGrade(id,name,math,chinese,computer);
}
table();//獲得表頭信息
//按輸入的順序顯示5個學生的信息
for(i=0;i<stu.length;i++)
{
stu[i].show();
}
break;
//break;
case 2:
System.out.println("按總分冒泡排序");
bubble_sort(stu,N);
table();
for(i=0;i<stu.length;i++)
{
stu[i].show();
}
break;
case 3:
System.out.println("按語文成績快速排序:");
chinese_sort(stu,0,N-1);
table();
for(i=0;i<N;i++)
{
stu[i].show();
}
break;
case 4:
System.out.println("按數學成績直接選擇排序:");
math_sort(stu,N);
table();
for(i=0;i<stu.length;i++)
{
stu[i].show();
}
break;
case 5:
System.out.println("按計算機成績直接插入排序:");
computer_sort(stu,N);
table();
for(i=0;i<N;i++)
{
stu[i].show();
}
break;
case 6:
System.out.println("單科成績大於85分以上的學生:");
for(i=0;i<N;i++)
{
if(stu[i].getMath()>85 &&
stu[i].getChinese()>85 &&
stu[i].getComputer()>85)
stu[i].show();
}
break;
case 7:
System.out.println("將文件結果輸出至文本文件");
for(i=0;i<N;i++)
{
System.out.println("stu的對象id:"+stu[i].getID());
System.out.println("stu的對象id:"+stu[i].getName());
System.out.println("stu的對象id:"+stu[i].getMath());
}
FileOutputStream fos=new FileOutputStream("c:\\aa\\file1.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(stu);
/*
try
{
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("c:/file1.txt"));
os.writeObject(stu);
os.flush();
os.close();
}catch(FileNotFoundException e)
{
e.printStackTrace();
}catch(IOException e)
{
e.printStackTrace();
}
*/
//Random rand=new Random();
/*
FileOutputStream out=new FileOutputStream("/Users/sx_dqbsina.com/file2.txt");
ObjectOutputStream oos=new ObjectOutputStream(out);
oos.writeObject(stu);
oos.flush();
oos.close();
//byte b[]=stu
FileReader reader=new FileReader(stu);
FileWriter writer=new FileWriter("/Users/sx_dqbsina.com/file2.txt");
//writer.write(stu);
//BufferedWriter output;
//try {
output = new BufferedWriter(new FileWriter("/Users/sx_dqbsina.com/file2.txt"));
//} catch (IOException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
}
BufferedWriter bw=new BufferedWriter(writer);
int []num1=new int[15];
for(i=0;i<N;i++)
{
num1[i]=20+rand.nextInt(9979);
output.write(num1[i]+"");
output.newLine();
}
//output.close();
*/
break;
case 0:
_exit();
System.exit(1);
//System.out.println("0");
break;
default:
System.out.println("沒有此項目!");
//break;
}
}
//System.out.println(z);
}
}