首页 > 代码库 > IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中

IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中

需求:

  键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

分析:
  A:创建学生类
  B:创建集合对象
      TreeSet<Student>
  C:键盘录入学生信息存储到集合
  D:遍历集合,把数据写到文本文件

 

首先创建个学生类

技术分享
 1 package zl_Test; 2 /** 3  * 这是个记录学生成绩类 4  * @author LZL 5  * 6  */ 7 public class Student { 8     private String name; 9     private int chinese;10     private int math;11     private int english;12     13     14     public Student() {15         super();16         // TODO Auto-generated constructor stub17     }18 19 20     public Student(String name, int chinese, int math, int english) {21         super();22         this.name = name;23         this.chinese = chinese;24         this.math = math;25         this.english = english;26     }27 28 29     public String getName() {30         return name;31     }32 33 34     public void setName(String name) {35         this.name = name;36     }37 38 39     public int getChinese() {40         return chinese;41     }42 43 44     public void setChinese(int chinese) {45         this.chinese = chinese;46     }47 48 49     public int getMath() {50         return math;51     }52 53 54     public void setMath(int math) {55         this.math = math;56     }57 58 59     public int getEnglish() {60         return english;61     }62 63 64     public void setEnglish(int english) {65         this.english = english;66     }67     68     public int getsum() {69          return this.chinese + this.english + this.math;70         71 72     }73     74 }
View Code

 

具体实现类:

 1 package zl_Test; 2  3 import java.io.BufferedWriter; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.util.Comparator; 7 import java.util.Scanner; 8 import java.util.TreeSet; 9 10 public class StudentDemo {11 12     public static void main(String[] args) throws IOException {13         // 创建集合对象14         TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {15             // 比较器16             public int compare(Student s1, Student s2) {17 18                 int num1 = s2.getsum() - s1.getsum();19                 int num2 = num1 == 0 ? s2.getChinese() - s1.getChinese() : num1;20                 int num3 = num2 == 0 ? s2.getMath() - s1.getMath() : num2;21                 int num4 = num3 == 0 ? s2.getName().compareTo(s1.getName())22                         : num3;23                 return num4;24 25             }26         });27 28         // 键盘录入学生信息29         for (int x = 0; x < 5; x++) {30             Scanner sc = new Scanner(System.in);31 32             System.out.println("请输入学生姓名:");33             String name = sc.nextLine();34             System.out.println("请输入语文成绩");35             int chinese = sc.nextInt();36             System.out.println("请输入数学成绩");37             int math = sc.nextInt();38             System.out.println("请输入英语成绩");39             int english = sc.nextInt();40 41             // 创建学生对象,调用学生类42             Student s = new Student();43             s.setName(name);44             s.setChinese(chinese);45             s.setMath(math);46             s.setEnglish(english);47 48             // 把信息添加到集合中49             ts.add(s);50         }51 52         // 文本打开能看得懂的信息,用缓冲字符流53         // 创建缓冲字符输出流对象54         BufferedWriter bw = new BufferedWriter(new FileWriter("student.txt"));55         // 先写文本里面的内容56         bw.write("学生成绩记录");57         bw.newLine();58         bw.flush();59         bw.write("语文成绩" + "\t" + "数学成绩" + "\t" + "英语成绩");60         bw.newLine();61         bw.flush();62 63         // 遍历集合,把得到的数据添加到文件中64         for (Student student : ts) {65             // 对得到的信息进行拼接66             StringBuilder sb = new StringBuilder();67             sb.append(student.getName() + "\t\t")68                     .append(student.getChinese() + "\t\t")69                     .append(student.getMath() + "\t\t")70                     .append(student.getEnglish());71             bw.write(sb.toString());72             bw.newLine();73         }74         bw.close();75         System.out.println("学生成绩存储完毕");76     }77 }

 

IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中