目标:实现招生录取系统中的部分功能(使用main方法作为程序入口)
1.读XML文件,进过程序处理后,总成绩按降序排序,结果通过IO流输出到result_1.txt文件中。如:班级[className classID]
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:453,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
说明:
className classID用空格隔开,className为班级名称,classID为班级编号。
学员姓名 学员ID用空格隔开,每位学员成绩独占一行。总分为学员各学科成绩之和。
2.通过IO读result_1.txt文件,以多线程方式实现大学录取学生功能
大学列表:清华大学、北京大学、南京大学、复旦大学、南京职业技术学院
说明:
A类大学为清华大学、北京大学,分数线为340,名额各为3名,;
B类大学为南京大学、复旦大学,分数线为320,名额各为10名;;
C类大学为南京职业技术学院,分数线为250,名额不限;
分数超过名额应该取最高分;达不到分数线可以不录取;
录取按大学类别进行:先A类,再B类,最后C类;
同类大学之间可以抢学生,同一学生只能被一所大学录取,以先录取为准;
结果通过IO输出result_2.txt,如:

清华大学:
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
北京大学:
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
南京大学:
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
复旦大学:
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
南京职业技术学院:
学员姓名 学员ID[总分:457,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
学员姓名 学员ID[总分:448,学科ID:87,学科ID:83,学科ID:82,学科ID:83]
未被录取学员:
学员姓名 学员ID[总分:128],学员姓名 学员ID[总分:215]
附上:data.xml:
<root>
<!--表结构-->
<tables>
  <!--学员表-->
<table id="1000" name="studentTbl">
      <fields>
        <field id="studentId" /><!--学号-->
        <field id="name" /><!--姓名-->
        <field id="sex "/><!--性别-->
      </fields>
</table>

  <!--班级表-->
<table id="1001" name="classTbl">
      <fields>
        <field id="classId" /><!--班级编号-->
        <field id="name" /><!--班级名称-->
      </fields>
</table>

  <!--班级学员表-->
<table id="1004" name="classStudentTbl">
      <fields>
        <field id="classId" /><!--班级编号-->
        <field id="studentId" /><!--学号-->
      </fields>
</table>

  <!--学科表-->
<table id="1002" name="subjectTbl">
      <fields>
        <field id="subjectId" /><!--学科编号-->
        <field id="name" /><!--学科名称-->
      </fields>
</table>

  <!--成绩表-->
<table id="1003" name="scoreTbl">
      <fields>
        <field id="studentId" /><!--学号-->
        <field id="subjectId" /><!--学科编号-->
        <field id="score" /><!--成绩-->
      </fields>
</table>

</tables><!--数据信息,字段值以','分隔-->
<datas>  <!--学员数据-->
<data tableid="1000">
<fields-data>st001,张一,男</fields-data>
<fields-data>st002,李二,男</fields-data>
<fields-data>st003,王三,女</fields-data>
<fields-data>st004,杨四,男</fields-data>
<fields-data>st005,赵五,男</fields-data>
<fields-data>st006,郑陆,女</fields-data>
<fields-data>st007,林世,男</fields-data>
<fields-data>st008,胡长,男</fields-data>
<fields-data>st009,邹家,男</fields-data>
<fields-data>st010,李方,男</fields-data>
<fields-data>st011,宁可,男</fields-data>
<fields-data>st012,张杂,男</fields-data>
<fields-data>st013,李度,男</fields-data>
<fields-data>st014,王等,女</fields-data>
<fields-data>st015,杨角,男</fields-data>
<fields-data>st016,赵度,男</fields-data>
<fields-data>st017,郑来,男</fields-data>
<fields-data>st018,林衡,男</fields-data>
<fields-data>st019,胡量,男</fields-data>
<fields-data>st020,邹代,女</fields-data>
<fields-data>st021,李码,男</fields-data>
<fields-data>st022,宁的,男</fields-data>
<fields-data>st023,张质,男</fields-data>
<fields-data>st024,李量,男</fields-data>
<fields-data>st025,王内,男</fields-data>
<fields-data>st026,杨存,男</fields-data>
<fields-data>st027,赵泄,男</fields-data>
<fields-data>st028,郑漏,男</fields-data>
<fields-data>st029,林性,女</fields-data>
</data>

  <!--班级数据-->
<data tableid="1001">
<fields-data>1,一年级</fields-data>
<fields-data>2,二年级</fields-data>
<fields-data>3,三年级</fields-data>
</data>

  <!--学员班级信息-->
<data tableid="1004">
<fields-data>1,st001</fields-data>
<fields-data>2,st002</fields-data>
<fields-data>3,st003</fields-data>
<fields-data>1,st004</fields-data>
<fields-data>2,st005</fields-data>
<fields-data>3,st006</fields-data>
<fields-data>1,st007</fields-data>
<fields-data>2,st008</fields-data>
<fields-data>3,st009</fields-data>
<fields-data>2,st010</fields-data>
<fields-data>3,st011</fields-data>
<fields-data>3,st012</fields-data>
<fields-data>1,st013</fields-data>
<fields-data>1,st014</fields-data>
<fields-data>2,st015</fields-data>
<fields-data>3,st016</fields-data>
<fields-data>3,st017</fields-data>
<fields-data>2,st018</fields-data>
<fields-data>1,st019</fields-data>
<fields-data>1,st020</fields-data>
<fields-data>2,st021</fields-data>
<fields-data>3,st022</fields-data>
<fields-data>2,st023</fields-data>
<fields-data>3,st024</fields-data>
<fields-data>2,st025</fields-data>
<fields-data>1,st026</fields-data>
<fields-data>1,st027</fields-data>
<fields-data>3,st028</fields-data>
<fields-data>2,st029</fields-data>
</data>

<!--学科数据-->
<data tableid="1002">
<fields-data>1,英语</fields-data>
<fields-data>2,化学</fields-data>
<fields-data>3,代数</fields-data>
<fields-data>4,计算机</fields-data>
</data>
<!--成绩数据-->
<data tableid="1003">
<fields-data>st001,1,80</fields-data>
<fields-data>st001,2,90</fields-data>
<fields-data>st001,3,70</fields-data>
<fields-data>st001,4,100</fields-data>
<fields-data>st002,1,77</fields-data>
<fields-data>st002,2,88</fields-data>
<fields-data>st002,3,99</fields-data>
<fields-data>st002,4,56</fields-data>
<fields-data>st003,1,96</fields-data>
<fields-data>st003,2,56</fields-data>
<fields-data>st003,3,88</fields-data>
<fields-data>st003,4,69</fields-data>
<fields-data>st004,1,78</fields-data>
<fields-data>st004,2,85</fields-data>
<fields-data>st004,3,83</fields-data>
<fields-data>st004,4,96</fields-data>
<fields-data>st005,1,79</fields-data>
<fields-data>st005,2,87</fields-data>
<fields-data>st005,3,91</fields-data>
<fields-data>st005,4,85</fields-data>
<fields-data>st006,1,79</fields-data>
<fields-data>st006,2,87</fields-data>
<fields-data>st006,3,68</fields-data>
<fields-data>st006,4,86</fields-data>
<fields-data>st007,1,55</fields-data>
<fields-data>st007,2,78</fields-data>
<fields-data>st007,3,90</fields-data>
<fields-data>st007,4,68</fields-data>
<fields-data>st008,1,69</fields-data>
<fields-data>st008,2,86</fields-data>
<fields-data>st008,3,75</fields-data>
<fields-data>st008,4,69</fields-data>
<fields-data>st009,1,84</fields-data>
<fields-data>st009,2,69</fields-data>
<fields-data>st009,3,90</fields-data>
<fields-data>st009,4,49</fields-data>
<fields-data>st010,1,77</fields-data>
<fields-data>st010,2,86</fields-data>
<fields-data>st010,3,99</fields-data>
<fields-data>st010,4,82</fields-data>
<fields-data>st011,1,67</fields-data>
<fields-data>st011,2,87</fields-data>
<fields-data>st011,3,69</fields-data>
<fields-data>st011,4,56</fields-data>
<fields-data>st012,1,44</fields-data>
<fields-data>st012,2,66</fields-data>
<fields-data>st012,3,99</fields-data>
<fields-data>st012,4,89</fields-data>
<fields-data>st013,1,67</fields-data>
<fields-data>st013,2,87</fields-data>
<fields-data>st013,3,78</fields-data>
<fields-data>st013,4,78</fields-data>
<fields-data>st014,1,56</fields-data>
<fields-data>st014,2,78</fields-data>
<fields-data>st014,3,88</fields-data>
<fields-data>st014,4,11</fields-data>
<fields-data>st015,1,0</fields-data>
<fields-data>st015,2,44</fields-data>
<fields-data>st015,3,66</fields-data>
<fields-data>st015,4,99</fields-data>
<fields-data>st016,1,67</fields-data>
<fields-data>st016,2,98</fields-data>
<fields-data>st016,3,78</fields-data>
<fields-data>st016,4,99</fields-data>
<fields-data>st017,1,89</fields-data>
<fields-data>st017,2,88</fields-data>
<fields-data>st017,3,90</fields-data>
<fields-data>st017,4,96</fields-data>
<fields-data>st018,1,93</fields-data>
<fields-data>st018,2,95</fields-data>
<fields-data>st018,3,96</fields-data>
<fields-data>st018,4,91</fields-data>
<fields-data>st019,1,98</fields-data>
<fields-data>st019,2,94</fields-data>
<fields-data>st019,3,93</fields-data>
<fields-data>st019,4,89</fields-data>
<fields-data>st020,1,87</fields-data>
<fields-data>st020,2,96</fields-data>
<fields-data>st020,3,79</fields-data>
<fields-data>st020,4,82</fields-data>
<fields-data>st021,1,77</fields-data>
<fields-data>st021,2,87</fields-data>
<fields-data>st021,3,89</fields-data>
<fields-data>st021,4,86</fields-data>
<fields-data>st022,1,94</fields-data>
<fields-data>st022,2,76</fields-data>
<fields-data>st022,3,69</fields-data>
<fields-data>st022,4,79</fields-data>
<fields-data>st023,1,87</fields-data>
<fields-data>st023,2,57</fields-data>
<fields-data>st023,3,48</fields-data>
<fields-data>st023,4,48</fields-data>
<fields-data>st024,1,56</fields-data>
<fields-data>st024,2,68</fields-data>
<fields-data>st024,3,78</fields-data>
<fields-data>st024,4,81</fields-data>
<fields-data>st025,1,99</fields-data>
<fields-data>st025,2,47</fields-data>
<fields-data>st025,3,68</fields-data>
<fields-data>st025,4,98</fields-data>
<fields-data>st026,1,69</fields-data>
<fields-data>st026,2,95</fields-data>
<fields-data>st026,3,75</fields-data>
<fields-data>st026,4,95</fields-data>
<fields-data>st027,1,84</fields-data>
<fields-data>st027,2,85</fields-data>
<fields-data>st027,3,96</fields-data>
<fields-data>st027,4,76</fields-data>
<fields-data>st028,1,83</fields-data>
<fields-data>st028,2,95</fields-data>
<fields-data>st028,3,96</fields-data>
<fields-data>st028,4,81</fields-data>
<fields-data>st029,1,88</fields-data>
<fields-data>st029,2,74</fields-data>
<fields-data>st029,3,83</fields-data>
<fields-data>st029,4,99</fields-data>
</data>

</datas>
</root>

解决方案 »

  1.   

    不知道你们能不能用开源的xml解析器,如果不能,就自己写一个,也就是遍历这个文件,根据标签的分割来得到自己想要的数据,
    这个时候得到班级,学生等的对象列表,在程序里对集合排序就行了
      

  2.   


    可能用DOM解析,像班级,学生,科目那些是否先得设计好对应的实体类,及对应的关系,从data.xml中读出数据放到集合中,再排序?
      

  3.   

    可以用jdk的dom,就看看api
    至于建不建实体类都可以,不建的话就用数组来代表一行
      

  4.   

    用DOM4J解析不行么?
    好像不难啊
      

  5.   

    题目要求:考察对于java基础的综合运用能力,包括集合、io、多线程、xml解析、正则表达式。(不得使用三方包进行开发)
      

  6.   

    jdom
    无非就是增删改查呀
      

  7.   

    Java 语言的 XPath API
      

  8.   


    package test;import java.io.File;
    import java.io.IOException;import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import org.xml.sax.SAXException;public class Dom{    public static void main(String[] args) {
            try {
                File file = new File("D:\\dom.xml");
                DocumentBuilderFactory dobf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dobf.newDocumentBuilder();
                Document dc=db.parse(file);
                NodeList ndl=dc.getElementsByTagName("VALUE");
                for(int i=0;i<ndl.getLength();i++){
                    String noum=dc.getElementsByTagName("NO").item(i).getTextContent();
                    System.out.println(noum);
                    String add=dc.getElementsByTagName("ADDR").item(i).getTextContent();
                    System.out.println(add);
                }
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }catch(SAXException e){
                e.printStackTrace();
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
    <?xml version="1.0" encoding="UTF-8"?> 
    <RESULT>
    <VALUE> 
    <NO>A1234</NO>
    <ADDR>深圳XX</ADDR>
    </VALUE>
    <VALUE> 
    <NO>B1234</NO> 
    <ADDR>珠海XXX</ADDR>
    </VALUE>
    </RESULT>