学生信息排序管理(JAVA文件操作)

作业10:文件操作(5分) student.txt中存放了若干学生的学号,姓名和某科成绩,它们之间用一个空格隔开。将他们按成绩降序排列,再写回到student.txt中。

/*
作业10:文件操作(5分)
student.txt中存放了若干学生的学号,姓名和某科成绩,它们之间用一个空格隔开。将他们按成绩降序排列,再写回到student.txt中。
 */
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

class Student{
  String stuNo,name;
  double grade;
  public Student() {
    stuNo=name="";
    grade=0.0;
  }
  public Student(String stuNo,String name,double grade) {
    this.stuNo=stuNo;
    this.name=name;
    this.grade=grade;
  }
  public String stuInfo(){
    return this.stuNo+"\t"+this.name+"\t"+this.grade;
  }
}
class StudentGroup{
  List<Student> dataBase =new ArrayList<Student>();
  public void add(String in) {
    String[] info=in.split(" ");
    try {
      dataBase.add(new Student(info[0],info[1],Double.parseDouble(info[2])));
    } catch (NumberFormatException e) {
      System.out.println("学号格式错误,本记录作废");
    }
  }
  public void listAll(){
    for(Student i:dataBase)
      System.out.println(i.stuInfo());
  }
  public void sort() {
    Collections.sort(dataBase, new Comparator<Student>() {
      public int compare(Student stu1, Student stu2) {
          if(stu1.grade<stu2.grade) return 1;
          else if(stu1.grade>stu2.grade) return -1;
          else return 0;
      }
      
    });
  }
  
}
public class Test{
  public static void main(String[] args) {
    StudentGroup studentGroup=new StudentGroup();
    File file=new File("C:/student.txt");
    try {
      FileReader cin=new FileReader(file);//打开文件
      System.out.println("文件已经找到,运行正常");
      BufferedReader input=new BufferedReader(cin);
      while(true)
      {
        String oneStu=input.readLine();
        if(oneStu==null) break;
        studentGroup.add(oneStu);	
      }
      cin.close();
      input.close();
      studentGroup.listAll();//列出所有记录
      studentGroup.sort();//进行排序
      System.out.println("排序完成,结果为:");
      studentGroup.listAll();
      
      System.out.println("排序结果正在覆盖写入原文件");	
      FileWriter writer=new FileWriter(file);
      BufferedWriter write = new BufferedWriter(writer);
      for(Student stu:studentGroup.dataBase) {
        String out=stu.stuNo+" "+stu.name+" "+stu.grade;
          write.write(out);
          write.newLine();
      }
      System.out.println("覆盖写入成功");	
      write.close();
      writer.close();
      
    } catch (FileNotFoundException e) {
      System.out.println("文件找不到,系统退出");
      System.exit(1);
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  

  }
}

 

《学生信息排序管理(JAVA文件操作)》上有3条评论

  1. 老铁你真是是秀
    天绣 陈独绣 蒂花之绣 造化钟神绣 必是后起之绣 莫言只有山川绣 帅气大成无需作绣 千万人之中唯你俊绣 老太太不扶就服你太绣 一顾倾人城叹你眉清目绣 蓦然回首没想到你如此内绣 射惠主义接班人就属你最优绣 李云聋媳妇李秀琴都没你这么绣 算了我编不下去了等会脑袋要生锈

发表评论

电子邮件地址不会被公开。