A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 向来情深﹌奈何 于 2013-3-20 11:00 编辑

有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

2 个回复

正序浏览
若还有问题,请继续追问;没有的话,请将帖子分类改成【已解决】~
回复 使用道具 举报
  1. /*
  2. 有五个学生,每个学生有3门课的成绩,
  3. 从键盘输入以上数据(包括姓名,三门课成绩)。
  4. 输入格式:如,zhangsan ,30, 40, 60计算出总成绩,
  5. 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件“stud。txt”中。


  6. 1、描述学生对象。
  7. 2、定义一个可以操作学生对象的工具类。

  8. 思路:
  9. 1、通过获取键盘录入一行数据,并将该行中的信息取出封装成学生对象。
  10. 2、因为学生对象有很多,那么就需要存储,使用到集合。因为要对学生总分排序,
  11.         所以可以使用TreeSet集合。
  12. 3、将集合的信息写入到一个文件中。
  13. */

  14. import java.util.*;
  15. import java.io.*;
  16. class Student implements Comparable<Student>
  17. {
  18.         private String name;
  19.         private int ma,cn,en;
  20.         private int sum;
  21.         Student(String name,int ma,int cn,int en)
  22.         {
  23.                 this.name = name;
  24.                 this.ma = ma;
  25.                 this.cn = cn;
  26.                 this.en = en;
  27.                 sum = ma+cn+en;
  28.         }
  29.         public String getName()
  30.         {
  31.                 return name;
  32.         }
  33.         public int getMa()
  34.         {
  35.                 return ma;
  36.         }
  37.         public int getCn()
  38.         {
  39.                 return cn;
  40.         }
  41.         public int getEn()
  42.         {
  43.                 return en;
  44.         }
  45.         public int getSum()
  46.         {
  47.                 return sum;
  48.         }
  49.         public String toString()
  50.         {
  51.                 return name+"\t"+ma+"\t"+cn+"\t"+en;
  52.         }
  53.         public int hashCode()
  54.         {
  55.                 return name.hashCode()+sum*28;
  56.         }
  57.         public boolean equals(Object obj)
  58.         {
  59.                 if(!(obj instanceof Student))
  60.                         throw new ClassCastException("类型不匹配!");
  61.                 Student stu = (Student)obj;
  62.                 return(name.equals(stu.getName())&& ma==stu.getMa() && cn==stu.getCn() && en==stu.getEn());
  63.         }
  64.         public int compareTo(Student stu)
  65.         {
  66.                 int flag = new Integer(sum).compareTo(new Integer(stu.getSum()));
  67.                 if (flag==0)
  68.                         return name.compareTo(stu.getName());
  69.                 return flag;
  70.         }
  71. }


  72. class StudentInfoTool
  73. {
  74.         public static Set<Student> getStudent()
  75.         {
  76.                 return getStudent(null);
  77.         }
  78.         public static Set<Student> getStudent(Comparator<Student> cmp)
  79.         {
  80.                 BufferedReader bufr = null;
  81.                 try
  82.                 {
  83.                         bufr = new BufferedReader(new InputStreamReader(System.in));
  84.                         TreeSet<Student> ts = null;
  85.                         if(cmp==null)
  86.                                 ts = new TreeSet<Student>();
  87.                         ts = new TreeSet<Student>(cmp);
  88.                         String line;
  89.                         while ((line=bufr.readLine())!=null)
  90.                         {
  91.                                 if("over".equals(line))
  92.                                         break;
  93.                                 String[] info = line.split(",");
  94.                                 Student stu = new Student(info[0],Integer.parseInt(info[1]),
  95.                                         Integer.parseInt(info[2]),Integer.parseInt(info[3]));
  96.                                 ts.add(stu);
  97.                         }
  98.                         return ts;

  99.                 }
  100.                 catch (IOException e)
  101.                 {
  102.                         throw new RuntimeException("输入流创建失败!");
  103.                 }
  104.                 finally
  105.                 {
  106.                         try
  107.                         {
  108.                                 if(bufr!=null)
  109.                                 bufr.close();
  110.                         }
  111.                         catch (IOException e)
  112.                         {
  113.                                 throw new RuntimeException("读取流关闭失败!");
  114.                         }
  115.                 }
  116.         }       

  117.         public static void writeToText(Set<Student> set,String textName)
  118.         {
  119.                 BufferedWriter bufw = null;
  120.                 try
  121.                 {
  122.                         bufw = new BufferedWriter(new FileWriter(textName));
  123.                         for (Student stu : set )
  124.                         {
  125.                                 bufw.write(stu.toString()+"\t");
  126.                                 bufw.write(stu.getSum()+"");
  127.                                 bufw.newLine();
  128.                                 bufw.flush();
  129.                         }
  130.                 }
  131.                 catch (IOException e)
  132.                 {
  133.                         throw new RuntimeException("数据写入文件失败!");
  134.                 }
  135.                 finally
  136.                 {
  137.                         try
  138.                         {
  139.                                 if(bufw!=null)
  140.                                         bufw.close();
  141.                         }
  142.                         catch (IOException e)
  143.                         {
  144.                                 throw new RuntimeException("写入流关闭失败!");
  145.                         }
  146.                 }
  147.         }
  148. }


  149. class  StudentInfoTest
  150. {
  151.         public static void main(String[] args)
  152.         {
  153.                 Comparator<Student> cmp = Collections.reverseOrder();
  154.                 Set<Student> set = StudentInfoTool.getStudent(cmp);
  155.                 StudentInfoTool.writeToText(set,"STUDENTINFO.txt");
  156.         }
  157. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马