📄 stu.java
字号:
import java.io.*;
//*******************************************************************************************
//学生类
//*******************************************************************************************
class Student implements Serializable{
String ID=null;
String name=null;
float math=0;
float chinese=0;
Student(){}
Student(String i,String n,float m,float c)
{
ID=i;name=n;math=m;chinese=c;
}
public float GetCost(){
return math+chinese;
}
public String toString(){return ID+'\t'+name+
'\t'+math+"\t"+chinese;}
}
//***********************************************************************************************
//读取信息类
//***********************************************************************************************
class Read{
//***********************************************************************************************
int GetNumber(){ //
int count=0; //
char[] c1=new char[250]; //
try{ //
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt")); //
tmp.read(c1); //
for(int i=0;c1[i]!=0;i++){ //
if(c1[i]=='\n') //
count++; //获取文本文件
} //中学生的总数
tmp.close(); //
}catch(IOException e){ //
System.out.println("error"); //
} //
return --count; //
} //
//***********************************************************************************************
String GetOneStudentId(int x){ //
String Stmp=null; //
char[] c1=new char[30]; //
int count; //
try{ //
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt")); //
for(int i=0;i<x+1;i++) //
Stmp=tmp.readLine(); //获取文本文件
c1=Stmp.toCharArray(); //中第x个学生
for(count=0;c1[count]!='\t';count++); //的学号
char[] c2=new char[count]; //
for(int i=0;i<count;i++) //
c2[i]=c1[i]; //
Stmp=new String(c2); //
tmp.close(); //
//
}catch(Exception e){ //
return Stmp="error"; //
} //
return Stmp; //
} //
//***********************************************************************************************
String GetOneStudentName(int x){ //
String Stmp=null; //
char[] c1=new char[30]; //
int count1=0,count2=0; //
try{ //
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt")); //
for(int i=0;i<x+1;i++) //
Stmp=tmp.readLine(); //
c1=Stmp.toCharArray(); //
for(int i=0;;count2++){ //
if(c1[count2]=='\t'){ //获取文本文件
i++; //中第x个学生
if(i==2) //的姓名
break; //
count1=count2; //
} //
//
} //
char[] c2=new char[count2-count1]; //
for(int i=count1+1,j=0;i<count2;i++,j++) //
c2[j]=c1[i]; //
Stmp=new String(c2); //
tmp.close(); //
}catch(Exception e){ //
return Stmp="error"; //
} //
return Stmp; //
} //
//***********************************************************************************************
float GetOneStudentMath(int x){ //
float ftmp=0; //
String Stmp=null; //
char[] c1=new char[30]; //
int count=0; //
try{ //
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt")); //
for(int i=0;i<x+1;i++) //
Stmp=tmp.readLine(); //
c1=Stmp.toCharArray(); //
for(int i=0;;count++){ //
if(c1[count]=='\t'){ //获取文本文件
i++; //中第x个学生
if(i==3) //的数学成绩
break; //
} //
//
} //
char[] c2=new char[c1.length-count]; //
for(int i=count,j=0;i<c1.length;i++,j++) //
c2[j]=c1[i]; //
Stmp=new String(c2); //
ftmp=Float.parseFloat(Stmp); //
tmp.close(); // //
}catch(Exception e){ //
return 0; //
} //
return ftmp; //
} //
//***********************************************************************************************
float GetOneStudentChinese(int x){ //
float ftmp=0; //
String Stmp=null; //
char[] c1=new char[30]; //
int count1=0,count2=0; //
try{ //
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt")); //
for(int i=0;i<x+1;i++) //
Stmp=tmp.readLine(); //
c1=Stmp.toCharArray(); //获取文本文件
for(int i=0;;count2++){ //中第x个学生
if(c1[count2]=='\t'){ //的语文成绩
i++; //
if(i==3) //
break; //
count1=count2; //
} //
} //
char[] c2=new char[count2-count1]; //
for(int i=count1,j=0;i<count2;i++,j++) //
c2[j]=c1[i]; //
Stmp=new String(c2); //
ftmp=Float.parseFloat(Stmp); //
tmp.close(); //
}catch(Exception e){ //
return 0; //
} //
return ftmp; //
} //
} //
//***********************************************************************************************
//***********************************************************************************************
//排序类
//***********************************************************************************************
abstract class Px{
//*******************************************************************************************
static void MaoPao(Student []a,int num){ //
int i,j; //
Student tmp; //
for(i=0;i<num-1;i++) //
for(j=i+1;j<num;j++){ //
if(a[i].GetCost()>a[j].GetCost()){ //冒泡排序方法
tmp=a[i]; //
a[i]=a[j]; //
a[j]=tmp; //
} //
} //
} //
//*******************************************************************************************
//*******************************************************************************************
static void ErFen(Student []a,int num){ //
if(a[num].GetCost()<a[num-1].GetCost()){ //
Student tmp; //
int left=0,right=num-1,middle=(num-1)/2; //
while(left!=middle){ //
if(a[num].GetCost()>a[middle].GetCost()){ //
left=middle; //
middle=(left+right)/2; //
} //
else if(a[num].GetCost()<a[middle].GetCost()){ //
right=middle; //
middle=(left+right)/2; //
} //
else //二分排序方法
break; //
} //
tmp=a[num]; //
if(a[num].GetCost()>=a[middle].GetCost()){ //
for(int i=num;i>middle+1;i--){ //
a[i]=a[i-1]; //
} //
a[middle+1]=tmp; //
} //
else{ //
for(int i=num;i>middle;i--){ //
a[i]=a[i-1]; //
} //
a[middle]=tmp; //
} //
} //
} //
} //
//*******************************************************************************************
//*******************************************************************************************
//序列化类
//**************************************************************************************************
class XuLieHua{ //
static void XuLie(Student[] s,int num){ //
try{ //
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("c:\\1.txt")); //
for(int i=0;i<num;i++) //
oos.writeObject(s[i]); //序列化
oos.flush(); //方法
System.out.println("对象序列化写入文件"); //
}catch(Exception e){ //
System.out.println("error"); //
} //
} //
//**************************************************************************************************
static void FanXuLie(Student[] s,int num){ //
try{ //
System.out.println("对象反序列化显示"); //
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("c:\\1.txt")); //
for(int i=0;i<num;i++){ //
s[i]=(Student)ois.readObject(); //反序列化
System.out.println(s[i].ID+'\t'+s[i].name+'\t'+s[i].chinese+'\t'+s[i].math); //方法
} //
}catch(Exception e){ //
System.out.println("error"); //
} //
} //
} //
//**************************************************************************************************
//*******************************************************************************************
//主函数
//*******************************************************************************************
public class stu {
public static void main(String[]args){
Read r =new Read();
int num=r.GetNumber();
Student[] s=new Student[num+1];
try{
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt"));
System.out.println(tmp.readLine());
tmp.close();
}catch(Exception e){
System.out.println("error");
}
for(int i=0;i<num;i++){
s[i]=new Student();
s[i].ID=r.GetOneStudentId(i+1);
s[i].name=r.GetOneStudentName(i+1);
s[i].chinese=r.GetOneStudentChinese(i+1);
s[i].math=r.GetOneStudentMath(i+1);
System.out.println(s[i].toString());
}
//*******************************************************************************************
Px.MaoPao(s,num);
System.out.println("冒泡排序后的结果为:");
try{
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt"));
System.out.println(tmp.readLine());
tmp.close();
}catch(Exception e){
System.out.println("error");
}
for(int i=0;i<num;i++)
System.out.println(s[i].toString());
//*******************************************************************************************
System.out.println("请输入一位新学生的信息:");
System.out.println("学号"+'\t'+"姓名"+'\t'+"语文"+'\t'+"数学");
//BufferedReader NewStu=new BufferedReader(new InputStreamReader(System.in));
try{
BufferedReader NewStu=new BufferedReader(new InputStreamReader(System.in));
String[] tmp=new String[4];
tmp=NewStu.readLine().split(" ");
s[num]=new Student(tmp[0],tmp[1],Float.parseFloat(tmp[2]),Float.parseFloat(tmp[3]));
}catch(IOException e){
System.out.println("error");
}
//s[num]=new Student(tmp[0],tmp[1],Float.parseFloat(tmp[2]),Float.parseFloat(tmp[3]));
//*******************************************************************************************
Px.ErFen(s, num);
System.out.println("插入一个新学生的信息后,通过二分排序法后的结果为:");
try{
BufferedReader tmp=new BufferedReader(new FileReader("c:\\student.txt"));
System.out.println(tmp.readLine());
tmp.close();
}catch(Exception e){
System.out.println("error");
}
for(int i=0;i<num+1;i++)
System.out.println(s[i].toString());
//*******************************************************************************************
XuLieHua.XuLie(s, num+1);
XuLieHua.FanXuLie(s, num+1);
//*******************************************************************************************
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -