zoukankan      html  css  js  c++  java
  • 类似于铁道部12306的城市选择框的实现

    第一次写,有点小紧张。。。

    这两天研究铁道部的余票查询系统,参考网上大牛们的经典案例,也有了一些自己的心得,写在自己程序猿的道路上记录一下,也和大家一起分享,写的不好莫怪,大牛可以自动过滤,非喜勿喷,谢谢~

    今天先简单的介绍一下城市选择框的实现,与12306官网有一点差距,上图,先看看效果:

        

    如图所示,支持拼音首字母查询,全拼音查询,汉字查询等

    好了,现在谈一谈我是怎么实现的

    首先是准备工作:

      我们需要把城市的信息存入我们的数据库中,城市数据来源:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8241

      分析一下里面的数据,发现是有固定格式的,这就好办了是吧,我们可以用程序的方式来取出每条记录并存入数据库,当然咯,闲的蛋疼的程序猿们完全可以自己手动加入数据库,数据嘛,我看了一下,不是很多,2367条而已,还是可以试试的嘛

      找到数据以后,将他存为本地txt文件,记得修改文件编码方式为utf-8,不然小心乱码哟~

      剩下的就是导入了,在c#中读取txt文件,然后split('@'),得到如图的数据组:,再对每一条数据split('|'),相信接下来怎么操作不需要我说了吧,导入数据库的时间可能会有点久吧,大概在几十秒的样子,程序也有可能会死掉一会儿,耐心的等等,他会活过来的,要相信自己写的程序可是很坚强的!

    准备工作完了就是文本框的实现咯:

      讲讲我的思路吧:拉一个textBox文本框和一个listBox,设置textBox的TextChanged事件,在事件中获取textBox的text值,利用数据库的通配符在数据库中进行查找,将返回的数据组一条条显示在listBox中,然后设置listBox的MouseClick事件即可,废话不多说,上代码:

    textBox的TextChanged事件代码:

    private void fromStationText_TextChanged(object sender, EventArgs e)
            {
                this.listBox1.Items.Clear();
                if (this.fromStationText.Text == "")
                {
                    this.listBox1.Visible = false;
                }
                else
                {
                    this.listBox1.Visible = true;
                    string key = this.fromStationText.Text;
                    string strWhere = " where c_Spy like '" + key + "%' or c_name like '" + key + "%' or c_Fpy like '" + key + "%' ";
                    List<string> list = new List<string>();
                    list = CityInfoHelper.nameSelect(strWhere);
                    int i = 0;
                    for(i = 0;i < list.Count;i++)
                    {
                        this.listBox1.Items.Add(list[i]);
                    }
                }
            }

    listBox的MouseClick事件代码:

    private void listBox1_MouseClick(object sender, MouseEventArgs e)
            {
                this.fromStationText.Text = this.listBox1.Text;
                this.listBox1.Visible = false;
            }

    至于数据库的操作,我就不在这里贴出来~

    简单的城市选择框就完成了,当然还有很多可以改进的地方,例如说那个listBox是否可以换作别的控件之类的,我也会继续完善这个,有喜欢研究的朋友也可以帮忙研究一下,大家一起讨论学习。

    结束语

    第一次写,真的紧张,写的不好,非喜勿喷,本文介绍的城市选择文本框的实现过程,代码需要自行研究修改,如有需要源码的也可以留言。

    新手文章,大神可以自动忽略,转载请注明出处哟!

    本文为原创文章,转载请注明出处,谢谢! 不要在最能拼的时候选择了安逸,不要在最能吃苦的年纪选择了退缩!
  • 相关阅读:
    EF Core 小技巧:迁移已经应用到数据库,如何进行迁移回退操作?
    ABP Framework 5.0 RC.1 新特性和变更说明
    OI迷惑行为大赏【目前较少,持续更新中】
    【比赛日志】APIO2020(2020.08.15)
    【好题】【IPSC2003】 Got Root? 无向图删边游戏
    [HNOI2019] 校园旅行 —— 一个边界数据
    【题解】JOISC 2020 Day 3 stray
    ExtJS学习:MVC模式案例(四) 林枫705
    ExtJS学习:MVC模式案例(三) 林枫705
    ExtJS学习:MVC模式案例(二) 林枫705
  • 原文地址:https://www.cnblogs.com/minteliu/p/4229854.html
Copyright © 2011-2022 走看看