Java:學生信息的錄入,各種排序,對文件的操作


要求:

     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);

}

 

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM