• 【原】得心应手小工具开发——公务员考试之筛选我的职位报名人数的小工具


    【开发动机】

    又是一年的公务员考试,笔者一直在纠结要不要去再趟一次浑水,外一要上岸了呢。3月1日开始报名,6号是最后截止时间,我的态度就是先观望几天,到5、6号最后阶段视报名情况选一个竞争压力比较小的职位争取一下。因为考试办会每天定时发布一次截止到XX日XX时已报名的人数列表嘛,就是这个: http://gwybm.tjpnet.gov.cn/info/bmqk.htm       职位太多,找起来实在是太麻烦啦。于是打算写一个小工具,根据自己有意向的职位一键筛选出那个职位的报名缴费人数,这就一劳永逸了嘛~~(虽然也只是6日前有效。。)

    【开发实现】

    1、打开VS,建一个简单的winform界面。

    包括一个按钮,一个richtextbox,一个webbrower控件

    2、richtextbox中的内容可以从文本文件读取,也可以直接在控件中输入,格式上有要求:

    例:208,人民法院塘沽审判区,行政综合二;      

    “208”是单位代码,“人民法院塘沽审判区”是报考部门,“行政综合二”是招考职位, 有了这三个元素就可以确定我要观望的那个职位啦! 哦,对了,这个职位信息在招考职位表的xls文档中有的,选好这个职位后,取出这三个元素来就可以了。

    3、webbrower中是为了呈现筛选出来的职位信息,其实就是一个重写的html代码。

    4、编写按钮的处理事件

    源码如下:

            private void button1_Click(object sender, EventArgs e)
    {


    WebClient client = new WebClient();
    Stream myStream = client.OpenRead(@"http://gwybm.tjpnet.gov.cn/info/bmqk.htm"); //这是当日公布的职位报考情况列表
    StreamReader sr=new StreamReader(myStream);
    string strHtml = sr.ReadToEnd(); //取到全部源码
    sr.Close();

    //取页面头部 开始
    int headend = strHtml.IndexOf("<tr class=\"public_form_td\">");
    string strHead = strHtml.Substring(0, headend); //获取到源页面的头部代码,用于拼装整个页面
    //取页面头部 结束

    //取职位表 开始
    int startIndex = 0;
    int stopIndex = 0;
    List<string> listStr = new List<string>(); //所有职位的<TR></TR>标记
    for (int i = 0; i < 5000;i++ )
    {
    startIndex = strHtml.IndexOf("<tr class=\"public_form_td\">") +27;

    stopIndex = strHtml.IndexOf("</tr>",startIndex) + 5;
    if (startIndex == 26||stopIndex==4) //如果找不到字串了,说明已经都取完了,结束循环
    {
    i = 1000000;
    continue;
    }
    string Item ="<tr class=\"public_form_td\">"+ strHtml.Substring(startIndex, stopIndex - startIndex);
    listStr.Add(Item);
    strHtml = strHtml.Substring(stopIndex);
    }
    //取职位表 结束

    //处理自选的职位信息 开始
    string StrMyFav = this.richTextBox1.Text;
    string[] MyFav = StrMyFav.Split(';');
    for (int i = 0; i < MyFav.Length; i++)
    {
    MyFav[i]=MyFav[i].Replace('\n',' ');
    }
    //处理自选的职位信息 结束

    List<string> myfaver = new List<string>(); //保存最后筛选出的职位的<TR></TR>标记 集合
    foreach (string singelFav in MyFav)
    {
    string[] keyword = singelFav.Split(',');
    foreach (string singleJob in listStr)
    {
    int correctCount = 0;
    for (int i = 0; i < keyword.Length; i++)
    {

    if (singleJob.Contains(keyword[i].Trim()))//就为一个空格弄了我一个多小时,哎
    {
    correctCount++;
    }

    }
    if (correctCount == keyword.Length && keyword.Length != 1)//如果包含字串的数量符合自选职位的元素数量,说明这个职位就是我们要筛选的职位
    {
    myfaver.Add(singleJob);
    }
    }

    }
    //重新拼装要呈现的HTML 开始
    StringBuilder MyListHtml = new StringBuilder();
    MyListHtml.AppendLine(strHead);
    foreach(string line in myfaver)
    {
    MyListHtml.AppendLine(line);
    }
    MyListHtml.AppendLine("</table></td>");
    MyListHtml.AppendLine("</tr>");
    MyListHtml.AppendLine("</table></td>");
    MyListHtml.AppendLine("</tr>");
    MyListHtml.AppendLine("</table>");
    MyListHtml.AppendLine("</body>");
    MyListHtml.AppendLine("</html>");
    //重新拼装要呈现的HTML 结束
    webBrowser1.DocumentText = MyListHtml.ToString();


    }

    private void Form1_Load(object sender, EventArgs e)
    {
    StreamReader sr = new StreamReader(Application.StartupPath + @"\myFav.txt");
    this.richTextBox1.Text = sr.ReadToEnd();
    sr.Close();

    }


    【工具演示】

    【总结】

    这个工具主要值得提的就是对于字符串的处理,特别是在调试过程中忽略了一个空格,导致了1个小时的浪费。。。

    作者:Tony zhao 欢迎访问:找与淘网

    出处:http://www.cnblogs.com/ytaozhao 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    整合Sleuth
    idea springboot 微服务批量启动
    思维的八层境界(深度好文)
    【格局视野】三色需求与工作层次
    【阅读推荐】改变你思维模式的书单
    【软件架构】七款代码味道识别工具
    【软件架构】代码重构之道
    【Android】EventBus 源码解析
    【软件架构】IM架构设计(安卓版)
    【设计模式】Java版设计模式的类图汇总
  • 原文地址:https://www.cnblogs.com/ytaozhao/p/2378872.html
Copyright © 2020-2023  润新知