Java:基于后端实现12306火车票查询、余票数据添加至数据库功能(修改版)

每日一讲

我们总是想而不去做,所以总是原地踏步并且常常懊恼!!!

1.项目描述

哥们想要和对象去旅游,但是想要在对象的面前获取芳心,让她虎躯一震,所以稍稍使用点技术,基于Java原生代码实现12306火车票查询功能,查询到火车票信息时进行火车鸣笛音频播放(后续会完善代码,运用html,数据库等技术模拟界面查询火车票信息)

1.1使用的主要技术

主要的使用技术有:正则表达式、集合、http协议、依赖导入……

正则表达式:自己写规则,去匹配文本信息,从中抽取我们想要的内容。 

http协议:超文本传输协议,是无状态的,主要的三个步骤(请求网址--响应--关闭连接)

1.2项目前期准备

进行项目前先要稍稍准备一下,来不及解释了,先上车,待会再细聊。

  • 获取12306官网网址的请求

首先要到12306的官网中--点击F12找到网络--点击刷新--找到query这个文件--获取请求网址

img

这是我获取的网址,集帅们可以用来参考,改个车站名字就好,要下载保存好这个文件噢:铁路客户服务中心

  •  查找到全国所有火车站的名字信息

也是在官网中F12调用网络,找到station_name.s相关文件,打开网址下载文件,记得保存!

地址:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js

 2.项目实现

刚刚下载的两个文件在接下来就能发挥作用咯,慢慢等待……

2.1对网站进行请求

对网站发出请求,我们通常可以使用OKHTTP类进行请求,OKHTTP官网:Overview - OkHttp (square.github.io)

  •  配置OKHttp依赖(在pom.xml配置依赖--记得刷新)
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.1.0</version>
</dependency>
  •  发出请求

刚刚前面获取的网站信息就可以用在这里咯(这里的代码在OKHttp官网中改进过来)

String url="https://kyfw.12306.cn/otn/leftTicket/query?" +
    "leftTicketDTO.train_date=2024-07-06" +"&leftTicketDTO.from_station=GLZ&" +
    "leftTicketDTO.to_station=NNZ" + "&purpose_codes=ADULT";
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).get().addHeader("Cookie", "_jc_save_fromStation=GLZ").build();
try (Response response = client.newCall(request).execute()) {
    System.out.println(response.body().string());
}

此时此刻,如果你运行一定会出现一个错误:PKIX path building failed: ……这个问题就是证书问题。

2.2解决证书问题

12306作为一个强大的软件,随随便便都可以访问网站,那不是要崩溃咯,每天得经受多少冲击啊,这谁顶得住,你顶不顶得住呀~

找证书还得进官网(按照我下面得步骤操作就好)

1

 看下图下载证书到一个你能记得得地方噢~

img

  •  证书下载

首先我们要以管理员的身份启动终端,然后cd C:\Program Files\Java\jdk-17.0.5\lib这个路径下(谨记:"Program Files"给这个路径哥加上一个英文的双引号,不然就等着报错咯)

---证书下载获取(记得把下面的安全路劲改成刚刚你存放的地址)

keytool -importcert -file D:\java\Course_notes\My_review\Item_file\_.12306.cn.crt  -keystore "C:\Program Files\Java\jdk-17.0.5\lib\security\cacerts" -storepass changeit

--证书删除(再顺手给你一个删除的命令,防止哥们不小心下错)

keytool -delete -alias mykey -keystore "C:\Program Files\Java\jdk-17.0.5\lib\security\cacerts" -storepass changeit

 2.3获取JSON数据并转化成类对象

我们此时此刻只能够得到车次信息的JSON数据,还是要转化成我们能用的类对象才得。

  • 获取JSON数据
    public static void main(String[] args) throws IOException {
        String url="https://kyfw.12306.cn/otn/leftTicket/query?" +
                "leftTicketDTO.train_date=2024-07-06" +
                "&leftTicketDTO.from_station=GLZ&" +
                "leftTicketDTO.to_station=NNZ" +
                "&purpose_codes=ADULT";
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(url).get()
                .addHeader("Cookie", "_jc_save_fromStation=GLZ")
                .build();
        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }

此时我们可以将获取的到的JSON数据在resources中新建一个result.json,将上面获取到的数据放入其中。

  • 创建一个TrainInfo类存放类属性对象(这些类的属性我们也是由这个JSON数据来相应创建的)
public class TrainInfo {
    private int httpstatus;
    private TrainData data;
    public int getHttpstatus() {
        return httpstatus;
    }
    public void setHttpstatus(int httpstatus) {
        this.httpstatus = httpstatus;
    }
    public TrainData getData() {
        return data;
    }
    public void setData(TrainData data) {
        this.data = data;
    }
}
class TrainData{
    public List<String> getResult() {
        return result;
    }
    public void setResult(List<String> result) {
        this.result = result;
    }
    public String getFlag() {
        return flag;
    }
    public void setFlag(String flag) {
        this.flag = flag;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    private List<String> result;
    private String flag;
    private String level;
}

2.4正则解析车次信息的JSON数据 

得到了解析的数据,那么我们就要提取我们想要用的信息勒,这里就要使用正则表达式勒。

  •   加入fastjson依赖(用来解析JSON数据)
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.36</version>
</dependency>
  • String stationNames=这里的字符串就是前面1.2的station_name文件里单引号 '  ' 的内容

这里太长了就不写了,后面的完整代码里面有!!!不过这里运行会遇到一个error:字符串过长的问题。

解决:

image-20240704232633765

  • 将json数据转化为TrainInfo类型,并获取车次信息
//后面的两个参数:将第一个数据转成第二个的类型
TrainInfo trainInfo= JSONObject.parseObject(response.body().string(),TrainInfo.class);
System.out.println("状态"+trainInfo.getHttpstatus());
//返回结果:200
trainInfo.getData().getResult().forEach(t_n->{
    System.out.println(t_n);
    //用于分割字符串得到信息对应的下标是什么
    String s[]=t_n.split("\\|");
    System.out.println(s.length);
});

 我列出其中的一个车次信息来参考(可以看到对应的信息):

桂林到南宁东的车次信息:hBAbQxYPgeQF1oxSesDIoH8Qw6q0mWTW%2F%2FzO%2F5V%2BxJ0XfbGdaGrM8X4AmXpX5eopIln80rzGtmCp%0AyAhiovcnfJ6MBF%2FbUl9wKqagqjNWgViZcgD9SH%2BhzO51iWrBpmGrQrFJDNjyXBnB2uEuEOCi6nMu%0ACvA%2FJ07Umh7mlUbW0UoELtnbWxva6FQycKzgkT%2Bc3%2B9VdVqd%2FSVedXho4B%2Bp68eBttRk4OyTUhIY%0Arz88S49z4r7j7gh5XzKniOrwlcLzeAcOcbxzNOKkHG11n%2BUeAt4ibl8mWDzQrfA7Zfk1tRdeTUOz%0AviglHmd4Lnoc%2FSghILp5awoU73vmaH7%2Fo27nXg%3D%3D|预订|5n000G233803|G2339|XKS|NFZ|GLZ|NFZ|20:15|22:27|02:12|Y|7P0%2BT4WqynKHMHF6GNBftsEDQ8GEVSZBRpAEt%2BOPs2ndt4Y7|20240706|3|G1|23|26|1|0|||||||||||有|无|无||90M0O0|9MO|0|1||9042750000M021700000O013500021|0|||||1|0#0#0#0#z#0#z#z|||CHN,CHN|||N#N#||90091M0096O0096|202406221700|

  •  正则表达式匹配车站信息
Matcher matcher = Pattern.compile("((?<=@)[^@]+)").matcher(stationNames);
//如果规则匹配成功
while(matcher.find()){
    System.out.println(matcher.group());
}
  • 将输出的车站代码改成中文名称
String s[]=t_n.split("\\|");
System.out.print("车次信息:"+s[3]);//得到的是车次信息
System.out.print("\t始发站:"+map.get(s[4]));
System.out.print("\t终点站:"+map.get(s[7]));
System.out.print("\t出发时间:"+s[8]);
System.out.println("\t到达时间:"+s[9]);
});

2.5完善代码,解决查询不到车票信息

如果我们查询的时候,已经没有车票勒,那么就会报一个syntax错误

解决方案:判断当日是否还有车票

  • 返回车站解析数据(把查询的日期改成一个没有车票的日期,比如昨天----哈哈哈)
String data=response.body().string();
System.out.println(data);

这里我只拿出来部分信息来举例--我们可以发现,如果已经没有了车票的时候,返回的数据中会有一个error。

<ul id="error" >
<li id="err_top">                 
</li>
<li id="err_bot">  网络可能存在问题,请您重试一下!
  • 使用正则表达式,找出这个error,然后进行判断。
String isErrorReg="((?=\\berror)\\w+\\b)";
Matcher mat = Pattern.compile(isErrorReg).matcher(data);
if(!mat.find()){
	//内容
}else{}

 我们此时还可以模仿网站查询车票中文输入,使用map集合改进一下,当然,目前也是只能在控制台中手动输入,后续会改进的,可以使用网页进行查询,并将数据展现在网页中!!!

  • 模拟车站查询车票输入

img

Map<String,String> code_chinese= new HashMap<>();
Map<String,String> chinese_code= new HashMap<>();
Matcher matcher = Pattern.compile("((?<=@)[^@]+)").matcher(stationNames);
//如果规则匹配成功
while(matcher.find()){
    String ts_name[]=(matcher.group()).split("\\|");
    code_chinese.put(ts_name[2],ts_name[1]);
    chinese_code.put(ts_name[1],ts_name[2]);
}
String formStation=chinese_code.get("桂林");
String toStation=chinese_code.get("南宁东");
String url="https://kyfw.12306.cn/otn/leftTicket/query?" +
    "leftTicketDTO.train_date=2024-07-08" +
    "&leftTicketDTO.from_station="+formStation+
    "&leftTicketDTO.to_station="+toStation+
    "&purpose_codes=ADULT";
//这段代码添加了一个请求头,从12306网页中获取,让12306认为我们是它网站的内容,否则无法访问
Request request = new Request.Builder().url(url).get()
    .addHeader("Cookie", "_jc_save_fromStation="+formStation)
    .build();

 至此,我们已经实现了基本的功能,可以查询到了火车票的信息,可以给对象吹牛逼勒,不过为了凸显我们牛逼程度,我们添加一个火车鸣笛音效。

3.添加火车鸣笛音效,查询到车票进行鸣笛

这部分的代码在网上有一大堆,一找就能找到,但是哥们考虑到你能给对象吹牛逼,给你写出来勒,不用再找勒。

  • 下载一个火车鸣笛音频文件(在网页中进行下载)---找到右边的这个网址另外打开直接下载就好勒。

这个下载我们就能看到有技术和没有技术的区别勒!!!能够免费下载一些需要用钱的文件,偷偷收藏不要外泄噢~

  •  添加音频播放的依赖
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-media</artifactId>
    <version>20-ea+9</version>
</dependency>
  •  新建一个TrainMp3的类
public class TrainMp3 {
    public static void trainMap3(){
        //匿名内部类
        new Thread(new Runnable(){
            public void run(){
                URI uri= new File("D:/java/Course_notes/My_review/Item_file/火车鸣笛.mp3").toURI();
                AudioClip audioClip=new AudioClip(uri.toString());
                audioClip.play(1.0);
                try {
                    Thread.sleep(5000);//五秒后退出线程
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
        }).start();
    }
}
  • 在Ticket类中调用(一但发现有车票数据,则鸣笛)边鸣笛边进行查询火车信息
if(!mat.find()){
    TrainMp3.trainMap3();
}//查询到之后才会进行鸣笛

至此,小功告成,我们可以给对象吹吹牛逼勒,让她心花怒放,不能自己!!!

看看查询结果:

img

完整代码

Ticket类:

public class Ticket {
    public static void main(String[] args){
        String stationNames="@bjb|北京北|VAP|beijingbei|bjb|0|0357|北京|||@bjd|北京东|BOP|beijingdong|bjd|1|0357|北京|||@bji|北京|BJP|beijing|bj|2|0357|北京|||@bjn|北京南|VNP|beijingnan|bjn|3|0357|北京|||@bjx|北京大兴|IPP|beijingdaxing|bjdx|4|0357|北京|||@bjx|北京西|BXP|beijingxi|bjx|5|0357|北京|||@bjy|北京朝阳|IFP|beijingchaoyang|bjcy|6|0357|北京|||@cqb|重庆北|CUW|chongqingbei|cqb|7|1717|重庆|||@cqi|重庆|CQW|chongqing|cq|9|1717|重庆|||@cqn|重庆南|CRW|chongqingnan|cqn|10|1717|重庆|||@cqx|重庆西|CXW|chongqingxi|cqx|12|1717|重庆|||@sha|上海|SHH|shanghai|sh|13|0712|上海|||@shn|上海南|SNH|shanghainan|shn|14|0712|上海|||@shq|上海虹桥|AOH|shanghaihongqiao|shhq|15|0712|上海|||@shx|上海西|SXH|shanghaixi|shx|16|0712|上海|||@tjb|天津北|TBP|tianjinbei|tjb|17|0359|天津|||@tji|天津|TJP|tianjin|tj|18|0359|天津|||@tjn|天津南|TIP|tianjinnan|tjn|19|0359|天津|||@tjx|天津西|TXP|tianjinxi|tjx|20|0359|天津|||@wxi|万象|YTM|wanxiang|wx|21|9206|万象|lao|老挝|vientiane@bji|滨江|BJB|binjiang|bj|22|0034|哈尔滨|||@bla|百浪|BRZ|bailang|bl|23|1607|南宁|||@bmq|班猫箐|BNM|banmaoqing|bmq|24|1902|昆明|||@byi|北营|BIV|beiying|by|25|0405|太原|||@cch|长春|CCT|changchun|cc|26|0110|长春|||@ccn|长春南|CET|changchunnan|ccn|27|0110|长春|||@ccx|长春西|CRT|changchunxi|ccx|28|0110|长春|||@cdd|成都东|ICW|chengdudong|cdd|30|1707|成都|||@cdn|成都南|CNW|chengdunan|cdn|31|1707|成都|||@cdu|成都|CDW|chengdu|cd|33|1707|成都|||@cdx|成都西|CMW|chengduxi|cdx|34|1707|成都|||@cgy|陈官营|CAJ|chenguanying|cgy|35|2102|兰州|||@cqi|长清|CNK|changqing|cq|36|0602|济南|||@csh|长沙|CSQ|changsha|cs|37|1407|长沙|||@csn|长沙南|CWQ|changshanan|csn|38|1407|长沙|||@csx|长沙西|RXQ|changshaxi|csx|39|1407|长沙|||@czh|常庄|CVK|changzhuang|cz|40|0602|济南|||@dch|大成|DCT|dacheng|dc|41|0205|沈阳|||@dni|大拟|DNZ|dani|dn|42|1607|南宁|||@dsp|读书铺|DPM|dushupu|dsp|43|1902|昆明|||@dwt|大王滩|DZZ|dawangtan|dwt|44|1607|南宁|||@dyu|大元|DYZ|dayuan|dy|45|1607|南宁|||@fsc|丰水村|FSJ|fengshuicun|fsc|46|2102|兰州|||@fzh|福州|FZS|fuzhou|fz|47|1004|福州|||@fzn|福州南|FYS|fuzhounan|fzn|49|1004|福州|||@gcd|甘草店|GDJ|gancaodian|gcd|51|2102|兰州|||@gch|钢城|GAK|gangcheng|gc|52|0602|济南|||@gjz|孤家子|GKT|gujiazi|gjz|53|0205|沈阳|||@gnw|广南卫|GNM|guangnanwei|gnw|54|1902|昆明|||@gya|贵阳|GIW|guiyang|gy|55|1803|贵阳|||@gyb|贵阳北|KQW|guiyangbei|gyb|57|1803|贵阳|||@gyd|贵阳东|KEW|guiyangdong|gyd|58|1803|贵阳|||@gzb|广州北|GBQ|guangzhoubei|gzb|59|1502|广州|||@gzd|广州东|GGQ|guangzhoudong|gzd|60|1502|广州|||@gzh|广州|GZQ|guangzhou|gz|61|1502|广州|||@gzn|广州南|IZQ|guangzhounan|gzn|62|1502|广州|||@gzx|广州西|GXQ|guangzhouxi|gzx|63|1502|广州|||@gzy|广州白云|GBA|guangzhoubaiyun|gzby|64|1502|广州|||@heb|哈尔滨北|HTB|haerbinbei|hebb|65|0034|哈尔滨|||@heb|哈尔滨|HBB|haerbin|heb|66|0034|哈尔滨|||@hed|哈尔滨东|VBB|haerbindong|hebd|68|0034|哈尔滨|||@hex|哈尔滨西|VAB|haerbinxi|hebx|69|0034|哈尔滨|||@hfc|合肥北城|COH|hefeibeicheng|hfbc|70|0809|合肥|||@hfe|合肥|HFH|hefei|hf|71|0809|合肥|||@hfn|合肥南|ENH|hefeinan|hfn|72|0809|合肥|||@hgt|皇姑屯|HTT|huanggutun|hgt|74|0205|沈阳|||@hhd|呼和浩特东|NDC|huhehaotedong|hhhtd|75|0511|呼和浩特|||@hht|呼和浩特|HHC|huhehaote|hhht|76|0511|呼和浩特|||@hkd|海口东|HMQ|haikoudong|hkd|78|2501|海口|||@hko|海口|VUQ|haikou|hk|79|2501|海口|||@hzd|杭州东|HGH|hangzhoudong|hzd|80|0904|杭州|||@hzh|杭州|HZH|hangzhou|hz|81|0904|杭州|||@hzn|杭州南|XHH|hangzhounan|hzn|82|0904|杭州|||@jmc|金马村|JMM|jinmacun|jmc|83|1902|昆明|||@jna|济南|JNK|jinan|jn|84|0602|济南|||@jnd|济南东|MDK|jinandong|jnd|86|0602|济南|||@jnx|济南西|JGK|jinanxi|jnx|87|0602|济南|||@kmi|昆明|KMM|kunming|km|89|1902|昆明|||@kmn|昆明南|KOM|kunmingnan|kmn|90|1902|昆明|||@lch|历城|VHK|licheng|lc|91|0602|济南|||@ljl|蔺家楼|ULK|linjialou|ljl|92|0602|济南|||@lqs|龙泉寺|UQJ|longquansi|lqs|93|2102|兰州|||@lsa|拉萨|LSO|lasa|ls|94|2751|拉萨|||@lsc|乐善村|LUM|leshancun|lsc|95|1902|昆明|||@lsp|林盛堡|LBT|linshengpu|lsp|96|0205|沈阳|||@ltx|骆驼巷|LTJ|luotuoxiang|ltx|97|2102|兰州|||@lwb|莱芜北|VIK|laiwubei|lwb|98|0602|济南|||@lzd|兰州东|LVJ|lanzhoudong|lzd|99|2102|兰州|||@lzh|兰州|LZJ|lanzhou|lz|100|2102|兰州|||@lzq|兰州新区|LQJ|lanzhouxinqu|lzxq|101|2102|兰州|||@lzx|兰州西|LAJ|lanzhouxi|lzx|102|2102|兰州|||@msz|茂舍祖|MOM|maoshezu|msz|103|1902|昆明|||@ncd|南昌东|NUG|nanchangdong|ncd|104|1104|南昌|||@nch|南昌|NCG|nanchang|nc|106|1104|南昌|||@ncn|南昌南|HOG|nanchangnan|ncn|107|1104|南昌|||@ncu|宁村|NCZ|ningcun|nc|108|1607|南宁|||@ncx|南昌西|NXG|nanchangxi|ncx|109|1104|南昌|||@nji|南京|NJH|nanjing|nj|110|0705|南京|||@njn|南京南|NKH|nanjingnan|njn|111|0705|南京|||@nlu|那罗|ULZ|naluo|nl|112|1607|南宁|||@nnb|南宁北|NRZ|nanningbei|nnb|113|1607|南宁|||@nnd|南宁东|NFZ|nanningdong|nnd|114|1607|南宁|||@nni|南宁|NNZ|nanning|nn|115|1607|南宁|||@nnx|南宁西|NXZ|nanningxi|nnx|116|1607|南宁|||@npu|那铺|NPZ|napu|np|117|1607|南宁|||@nqu|暖泉|NQJ|nuanquan|nq|118|2302|银川|||@pdx|坡底下|PXJ|podixia|pdx|119|2102|兰州|||@qdi|七甸|QDM|qidian|qd|120|1902|昆明|||@sby|世博园|ZWT|shiboyuan|sby|121|0205|沈阳|||@sjb|石家庄北|VVP|shijiazhuangbei|sjzb|122|0365|石家庄|||@sjd|石家庄东|SXP|shijiazhuangdong|sjzd|123|0365|石家庄|||@sjt|邵家堂|SJJ|shaojiatang|sjt|124|2102|兰州|||@sjz|石家庄|SJP|shijiazhuang|sjz|125|0365|石家庄|||@sjz|施家嘴|SHM|shijiazui|sjz|126|1902|昆明|||@sya|沈阳|SYT|shenyang|sy|127|0205|沈阳|||@syb|沈阳北|SBT|shenyangbei|syb|128|0205|沈阳|||@syd|沈阳东|SDT|shenyangdong|syd|129|0205|沈阳|||@syn|沈阳南|SOT|shenyangnan|syn|130|0205|沈阳|||@syu|水源|OYJ|shuiyuan|sy|131|2102|兰州|||@syx|沈阳西|OOT|shenyangxi|syx|132|0205|沈阳|||@syz|桑园子|SAJ|sangyuanzi|syz|133|2102|兰州|||@tyb|太原北|TBV|taiyuanbei|tyb|134|0405|太原|||@tyd|太原东|TDV|taiyuandong|tyd|135|0405|太原|||@tyn|太原南|TNV|taiyuannan|tyn|136|0405|太原|||@tyu|太原|TYV|taiyuan|ty|137|0405|太原|||@wha|武汉|WHN|wuhan|wh|138|1314|武汉|||@whd|武汉东|LFN|wuhandong|whd|139|1314|武汉|||@wjw|王家湾|WJJ|wangjiawan|wjw|140|2102|兰州|||@wln|乌鲁木齐南|WMR|wulumuqinan|wlmqn|141|2403|乌鲁木齐|||@wlq|乌鲁木齐|WAR|wulumuqi|wlmq|142|2403|乌鲁木齐|||@wxc|吴圩机场|WJZ|wuxujichang|wxjc|143|1607|南宁|||@wzt|王兆屯|WZB|wangzhaotun|wzt|144|0034|哈尔滨|||@xab|西安北|EAY|xianbei|xab|145|2003|西安|||@xan|西安|XAY|xian|xa|146|2003|西安|||@xgc|西固城|XUJ|xigucheng|xgc|147|2102|兰州|||@xjk|西街口|EKM|xijiekou|xjk|148|1902|昆明|||@xjt|许家台|XTJ|xujiatai|xjt|149|2102|兰州|||@xni|西宁|XNO|xining|xn|150|2201|西宁|||@xsh|小哨|XAM|xiaoshao|xs|151|1902|昆明|||@xta|新塘|XWQ|xintang|xt|152|1502|广州|||@xye|雪野|XYK|xueye|xy|153|0602|济南|||@ych|银川|YIJ|yinchuan|yc|154|2302|银川|||@yfy|永丰营|YYM|yongfengying|yfy|155|1902|昆明|||@yjp|一间堡|YJT|yijianpu|yjp|156|0110|长春|||@yna|宜耐|YVM|yinai|yn|157|1902|昆明|||@ypu|羊堡|ABM|yangpu|yp|158|1902|昆明|||@yst|榆树台|YUT|yushutai|yst|159|0205|沈阳|||@yzh|引镇|CAY|yinzhen|yz|160|2003|西安|||@zjy|朱家窑|ZUJ|zhujiayao|zjy|161|2102|兰州|||@zqn|章丘南|VQK|zhangqiunan|zqn|162|0602|济南|||@zzd|郑州东|ZAF|zhengzhoudong|zzd|163|1222|郑州|||@zzg|郑州航空港|ZIF|zhengzhouhangkonggang|zzhkg|164|1222|郑州|||@zzh|郑州|ZZF|zhengzhou|zz|165|1222|郑州|||@zzx|郑州西|XPF|zhengzhouxi|zzx|166|1222|郑州|||@aax|昂昂溪|AAX|angangxi|aax|167|0007|齐齐哈尔|||@acb|阿城北|ABB|achengbei|acb|168|0034|哈尔滨|||@ach|阿城|ACB|acheng|ac|169|0034|哈尔滨|||@aci|安次|ACI|anci|ac|170|0358|廊坊|||@ada|安达|ADX|anda|ad|171|0015|绥化|||@ade|安德|ARW|ande|ad|172|1707|成都|||@aeb|阿尔山北|ARX|aershanbei|aesb|173|1646|兴安|||@aes|阿尔山|ART|aershan|aes|174|1646|兴安|||@aji|安吉|AJU|anji|aj|175|0901|湖州|||@aji|安靖|PYW|anjing|aj|176|1707|成都|||@aji|安家|AJB|anjia|aj|177|0034|哈尔滨|||@aka|安康|AKY|ankang|ak|178|2006|安康|||@aks|阿克苏|ASR|akesu|aks|179|2409|阿克苏|||@akt|阿克陶|AER|aketao|akt|180|2411|阿图什|||@ale|阿拉尔|AOR|alaer|ale|181|2409|阿克苏|||@alh|阿里河|AHX|alihe|alh|182|9096|呼伦贝尔|||@alk|阿拉山口|AKR|alashankou|alsk|183|2407|博乐|||@alt|阿勒泰|AUR|aletai|alt|184|2424|阿勒泰|||@alu|安陆|ALN|anlu|al|185|1313|孝感|||@alx|安陆西|AXN|anluxi|alx|186|1313|孝感|||@api|安平|APT|anping|ap|187|0212|辽阳|||@aqi|安庆|AQH|anqing|aq|188|0816|安庆|||@aqx|安庆西|AIU|anqingxi|aqx|189|0816|安庆|||@ash|安顺|ASW|anshun|as|190|1805|安顺|||@ash|鞍山|AST|anshan|as|191|0213|鞍山|||@asx|安顺西|ASE|anshunxi|asx|192|1805|安顺|||@asx|鞍山西|AXT|anshanxi|asx|193|0213|鞍山|||@atb|安亭北|ASH|antingbei|atb|194|0712|上海|||@atx|安亭西|AXU|antingxi|atx|195|0712|上海|||@aya|安阳|AYF|anyang|ay|196|1201|安阳|||@ayd|安阳东|ADF|anyangdong|ayd|197|1201|安阳|||@ban|北安|BAB|beian|ba|198|0009|黑河|||@bba|博白|BBZ|bobai|bb|199|1606|玉林|||@bbn|蚌埠南|BMH|bengbunan|bbn|200|0807|蚌埠|||@bbu|蚌埠|BBH|bengbu|bb|201|0807|蚌埠|||@bch|巴楚|BCR|bachu|bc|202|2410|喀什|||@bch|白城|BCT|baicheng|bc|203|0102|白城|||@bch|北辰|BII|beichen|bc|204|0359|天津|||@bdb|宝坻北|BPP|baodibei|bdb|205|0359|天津|||@bdc|八达岭长城|VLP|badalingchangcheng|bdlcc|206|0357|北京|||@bdd|保定东|BMP|baodingdong|bdd|207|0326|保定|||@bdh|北戴河|BEP|beidaihe|bdh|208|0301|秦皇岛|||@bdi|保定|BDP|baoding|bd|209|0326|保定|||@bdl|八达岭|ILP|badaling|bdl|210|0357|北京|||@bdo|巴东|BBN|badong|bd|211|1361|恩施|||@bfs|八方山|FGQ|bafangshan|bfs|212|1407|长沙|||@bgu|柏果|BGM|baiguo|bg|213|1806|六盘水|||@bha|北海|BHZ|beihai|bh|214|1611|北海|||@bha|布海|BUT|buhai|bh|215|0110|长春|||@bha|滨海|YKP|binhai|bh|216|0359|天津|||@bhb|滨海北|FCP|binhaibei|bhb|217|0359|天津|||@bhe|白河|BEL|baihe|bh|218|9097|延边|||@bhx|滨海西|FHP|binhaixi|bhx|219|0359|天津|||@bji|毕节|BOE|bijie|bj|220|1848|毕节|||@bji|宝鸡|BJY|baoji|bj|221|2005|宝鸡|||@bji|白涧|BAP|baijian|bj|222|0326|保定|||@bjn|宝鸡南|BBY|baojinan|bjn|223|2005|宝鸡|||@bjt|北京丰台|FTP|beijingfengtai|bjft|224|0357|北京|||@bkp|白奎堡|BKB|baikuipu|bkp|225|0034|哈尔滨|||@bkt|博克图|BKX|boketu|bkt|226|9096|呼伦贝尔|||@ble|博乐|BER|bole|bl|227|2407|博乐|||@bli|巴林|BLX|balin|bl|228|9096|呼伦贝尔|||@bli|勃利|BLB|boli|bl|229|0023|七台河|||@bmj|白马井|BFQ|baimajing|bmj|230|2515|儋州|||@bmt|八面通|BMB|bamiantong|bmt|231|0044|牡丹江|||@bpi|北票|BPT|beipiao|bp|232|0233|朝阳|||@bqi|宝清|BUB|baoqing|bq|233|0020|双鸭山|||@bql|宝泉岭|BQB|baoquanling|bql|234|0018|鹤岗|||@bse|百色|BIZ|baise|bs|235|1610|百色|||@bss|白山市|HJL|baishanshi|bss|236|0136|白山|||@btd|包头东|BDC|baotoudong|btd|238|0512|包头|||@bto|包头|BTC|baotou|bt|239|0512|包头|||@bts|北屯市|BXR|beitunshi|bts|240|2424|阿勒泰|||@bxb|宾西北|BBB|binxibei|bxb|241|0034|哈尔滨|||@bxi|本溪|BXT|benxi|bx|242|0208|本溪|||@bxj|步行街|BWW|buxingjie|bxj|243|1707|成都|||@bya|宾阳|UKZ|binyang|by|244|1607|南宁|||@byb|白云鄂博|BEC|baiyunebo|byeb|245|0512|包头|||@byb|白云北|BVE|baiyunbei|byb|246|1803|贵阳|||@byb|白云机场北|BBA|baiyunjichangbei|byjcb|247|1502|广州|||@byd|白洋淀|FWP|baiyangdian|byd|248|0326|保定|||@byh|背荫河|BYB|beiyinhe|byh|249|0034|哈尔滨|||@byi|百宜|FHW|baiyi|by|250|1803|贵阳|||@byl|巴彦高勒|BAC|bayangaole|bygl|251|9034|巴彦淖尔|||@byq|鲅鱼圈|BYT|bayuquan|byq|252|0216|营口|||@byx|白银西|BXJ|baiyinxi|byx|253|2103|白银|||@byx|白云西|BXE|baiyunxi|byx|254|1803|贵阳|||@bzd|巴中东|BDE|bazhongdong|bzd|255|9014|巴中|||@bzd|彬州东|BFY|binzhoudong|bzd|256|2004|咸阳|||@bzh|巴中|IEW|bazhong|bz|257|9014|巴中|||@bzh|滨州|BIK|binzhou|bz|258|0690|滨州|||@bzh|亳州|BZH|bozhou|bz|259|0802|亳州|||@bzh|宾州|BZB|binzhou|bz|260|0034|哈尔滨|||@bzn|亳州南|BNU|bozhounan|bzn|261|0802|亳州|||@cbg|查布嘎|CBC|chabuga|cbg|262|0508|赤峰|||@cbi|赤壁|CBN|chibi|cb|263|1317|咸宁|||@cbs|长白山|CUL|changbaishan|cbs|264|9097|延边|||@cde|常德|VGQ|changde|cd|265|1422|常德|||@cde|承德|CDP|chengde|cd|266|0309|承德|||@cdn|承德南|IVP|chengdenan|cdn|267|0309|承德|||@cfd|曹妃甸东|POP|caofeidiandong|cfdd|268|0304|唐山|||@cfe|赤峰|CID|chifeng|cf|269|0508|赤峰|||@cfg|曹妃甸港|PGP|caofeidiangang|cfdg|270|0304|唐山|||@cfn|赤峰南|CFD|chifengnan|cfn|271|0508|赤峰|||@cga|嵯岗|CAX|cuogang|cg|272|9096|呼伦贝尔|||@cga|柴岗|CGT|chaigang|cg|273|0110|长春|||@cgb|柴沟堡|CGV|chaigoubu|cgp|274|0315|张家口|||@cgb|长葛北|CGF|changgebei|cgb|275|1214|许昌|||@cgu|城固|CGY|chenggu|cg|276|2007|汉中|||@cgz|成高子|CZB|chenggaozi|cgz|277|0034|哈尔滨|||@cha|草海|WBW|caohai|ch|278|1848|毕节|||@chd|巢湖东|GUH|chaohudong|chd|279|0809|合肥|||@che|柴河|CHB|chaihe|ch|280|0044|牡丹江|||@chu|巢湖|CIH|chaohu|ch|281|0809|合肥|||@cji|从江|KNW|congjiang|cj|282|1801|凯里|||@cjy|蔡家崖|EBV|caijiaya|cjy|283|9010|吕梁|||@cld|长乐东|CIS|changledong|cld|284|1004|福州|||@cle|长乐|CAS|changle|cl|285|1004|福州|||@clh|长临河|FVH|changlinhe|clh|286|0809|合肥|||@cli|慈利|CUQ|cili|cl|287|1421|张家界|||@cli|茶陵|CDG|chaling|cl|288|1408|株洲|||@cli|崇礼|KOP|chongli|cl|289|0315|张家口|||@cli|昌黎|CLP|changli|cl|290|0301|秦皇岛|||@cli|长流|CLA|changliu|cl|291|2501|海口|||@cln|长乐南|CVS|changlenan|cln|292|1004|福州|||@cmi|晨明|CMB|chenming|cm|293|0016|伊春|||@cna|苍南|CEH|cangnan|cn|294|0920|温州|||@cpb|昌平北|VBP|changpingbei|cpb|295|0357|北京|||@cpd|常平东|FQQ|changpingdong|cpd|296|1504|东莞|||@cpi|翠屏|YBW|cuiping|cp|297|1714|宜宾|||@cpi|昌平|CPP|changping|cp|298|0357|北京|||@cqq|长庆桥|CQJ|changqingqiao|cqq|299|2141|庆阳|||@cre|崇仁|CRG|chongren|cr|300|1147|崇仁|||@csb|长寿北|COW|changshoubei|csb|301|3127|长寿|||@csh|潮汕|CBQ|chaoshan|cs|302|1515|潮州|||@csq|察素齐|CSC|chasuqi|csq|303|0511|呼和浩特|||@cti|朝天|CTE|chaotian|ct|304|1701|广元|||@ctn|长汀南|CNS|changtingnan|ctn|305|1053|长汀|||@ctn|朝天南|CTY|chaotiannan|ctn|306|1701|广元|||@ctu|昌图|CTT|changtu|ct|307|0204|铁岭|||@ctx|昌图西|CPT|changtuxi|ctx|308|0204|铁岭|||@ctz|长汀镇|CDB|changtingzhen|ctz|309|0044|牡丹江|||@cwu|长武|CWY|changwu|cw|310|2004|咸阳|||@cxi|苍溪|CXE|cangxi|cx|311|1701|广元|||@cxi|辰溪|CXQ|chenxi|cx|312|1403|怀化|||@cxi|磁县|CIP|cixian|cx|313|0349|邯郸|||@cxi|楚雄|CUM|chuxiong|cx|314|1905|楚雄|||@cxi|曹县|CXK|caoxian|cx|315|0621|菏泽|||@cxi|城西|CIA|chengxi|cx|316|2501|海口|||@cxn|长兴南|CFH|changxingnan|cxn|317|0901|湖州|||@cxt|陈相屯|CXT|chenxiangtun|cxt|318|0205|沈阳|||@cya|春阳|CAL|chunyang|cy|319|9097|延边|||@cya|潮阳|CNQ|chaoyang|cy|320|1516|汕头|||@cyc|朝阳川|CYL|chaoyangchuan|cyc|321|9097|延边|||@cyh|朝阳湖|CYE|chaoyanghu|cyh|322|1707|成都|||@czb|滁州北|CUH|chuzhoubei|czb|323|0808|滁州|||@czb|常州北|ESH|changzhoubei|czb|324|0708|常州|||@czb|长治北|CBF|changzhibei|czb|325|0414|长治|||@czd|长治东|CUF|changzhidong|czd|326|0414|长治|||@czh|长征|CZJ|changzheng|cz|327|2103|白银|||@czh|池州|IYH|chizhou|cz|328|0878|池州|||@czh|滁州|CXH|chuzhou|cz|329|0808|滁州|||@czh|郴州|CZQ|chenzhou|cz|330|1419|郴州|||@czh|沧州|COP|cangzhou|cz|331|0334|沧州|||@czh|常州|CZH|changzhou|cz|332|0708|常州|||@czh|长治|CZF|changzhi|cz|333|0414|长治|||@czh|崇州|CZE|chongzhou|cz|334|1707|成都|||@czn|崇左南|COZ|chongzuonan|czn|335|1615|崇左|||@czu|崇左|CZZ|chongzuo|cz|336|1615|崇左|||@czx|郴州西|ICQ|chenzhouxi|czx|337|1419|郴州|||@czx|沧州西|CBP|cangzhouxi|czx|338|0334|沧州|||@dab|大安北|RNT|daanbei|dab|339|0102|白城|||@dad|东安东|DCZ|dongandong|dad|340|1426|永州|||@dbc|达坂城|DCR|dabancheng|dbc|341|2403|乌鲁木齐|||@dbi|定边|DYJ|dingbian|db|342|2015|榆林|||@dch|东岔|DCJ|dongcha|dc|343|2101|天水|||@ddo|丹东|DUT|dandong|dd|344|0210|丹东|||@dfa|东方|UFQ|dongfang|df|345|2518|东方|||@dfe|丹凤|DGY|danfeng|df|346|2016|商洛|||@dfe|大丰|KRQ|dafeng|df|347|1408|株洲|||@dfh|东方红|DFB|dongfanghong|dfh|348|0026|鸡西|||@dfn|大方南|DNE|dafangnan|dfn|349|1848|毕节|||@dfn|东风南|DPJ|dongfengnan|dfn|350|2107|酒泉|||@dgb|东港北|RGT|donggangbei|dgb|351|0210|丹东|||@dgd|东莞东|DMQ|dongguandong|dgd|352|1504|东莞|||@dgn|东莞南|DNA|dongguannan|dgn|353|1504|东莞|||@dgs|大孤山|RMT|dagushan|dgs|354|0210|丹东|||@dgu|东莞|RTQ|dongguan|dg|355|1504|东莞|||@dgx|东莞西|WGQ|dongguanxi|dgx|357|1504|东莞|||@dhq|大红旗|DQD|dahongqi|dhq|358|0205|沈阳|||@dhs|大虎山|DHD|dahushan|dhs|359|0228|锦州|||@dhu|敦化|DHL|dunhua|dh|360|9097|延边|||@dhu|敦煌|DHJ|dunhuang|dh|361|2107|酒泉|||@dhu|德惠|DHT|dehui|dh|362|0110|长春|||@dhx|德惠西|DXT|dehuixi|dhx|363|0110|长春|||@djc|东京城|DJB|dongjingcheng|djc|364|0044|牡丹江|||@djg|达家沟|DJT|dajiagou|djg|365|0110|长春|||@dji|垫江|DJE|dianjiang|dj|366|3131|垫江|||@dji|道滘|RRQ|daojiao|dj|367|1504|东莞|||@dji|大涧|DFP|dajian|dj|368|0401|大同|||@dji|洞井|FWQ|dongjing|dj|369|1407|长沙|||@djy|都江堰|DDW|dujiangyan|djy|370|1707|成都|||@dko|洞口|DKA|dongkou|dk|371|1415|邵阳|||@dlb|大连北|DFT|dalianbei|dlb|372|0220|大连|||@dlh|德令哈|DHO|delingha|dlh|373|2202|德令哈|||@dlh|达连河|DCB|dalianhe|dlh|374|0034|哈尔滨|||@dli|大荔|DNY|dali|dl|375|2002|渭南|||@dli|大理|DKM|dali|dl|376|1906|大理|||@dli|大连|DLT|dalian|dl|377|0220|大连|||@dmh|大明湖|JAK|daminghu|dmh|378|0602|济南|||@dml|得莫利|DTB|demoli|dml|379|0034|哈尔滨|||@dmx|东明县|DNF|dongmingxian|dmx|380|0621|菏泽|||@dna|定南|DNG|dingnan|dn|381|1116|赣州|||@dnn|定南南|DIG|dingnannan|dnn|382|1116|赣州|||@dpu|大埔|DPI|dapu|dp|383|1513|梅州|||@dqd|大庆东|LFX|daqingdong|dqd|384|0037|大庆|||@dqi|大庆|DZX|daqing|dq|385|0037|大庆|||@dqs|对青山|DQB|duiqingshan|dqs|386|0034|哈尔滨|||@dqx|大庆西|RHX|daqingxi|dqx|387|0037|大庆|||@dsh|东胜|DOC|dongsheng|ds|388|0517|鄂尔多斯|||@dsh|独山|RWW|dushan|ds|389|1802|都匀|||@dsn|砀山南|PRH|dangshannan|dsn|390|0806|宿州|||@dsq|大石桥|DQT|dashiqiao|dsq|391|0216|营口|||@dsx|东胜西|DYC|dongshengxi|dsx|392|0517|鄂尔多斯|||@dtn|大同南|DMV|datongnan|dtn|393|0401|大同|||@dto|大同|DTV|datong|dt|394|0401|大同|||@dtu|大屯|DNT|datun|dt|395|0110|长春|||@dtx|大通西|DTO|datongxi|dtx|396|2201|西宁|||@dwk|大武口|DFJ|dawukou|dwk|397|2301|石嘴山|||@dwu|党武|DWE|dangwu|dw|398|1803|贵阳|||@dxb|定西北|DNJ|dingxibei|dxb|399|2124|定西|||@dxc|大兴机场|IWP|daxingjichang|dxjc|400|0358|廊坊|||@dxi|定西|DSJ|dingxi|dx|401|2124|定西|||@dxi|东乡|DXG|dongxiang|dx|402|1121|抚州|||@dxi|大兴|DXX|daxing|dx|403|0007|齐齐哈尔|||@dxs|东兴市|RIZ|dongxingshi|dxs|404|1612|防城港|||@dya|德阳|DYW|deyang|dy|405|1704|德阳|||@dya|当阳|DYN|dangyang|dy|406|1307|宜昌|||@dya|丹阳|DYH|danyang|dy|407|0706|镇江|||@dyb|大冶北|DBN|dayebei|dyb|408|1316|黄石|||@dyd|大英东|IAW|dayingdong|dyd|409|1719|遂宁|||@dyd|都匀东|KJW|duyundong|dyd|410|1802|都匀|||@dyi|东营|DPK|dongying|dy|411|0697|东营|||@dyi|大邑|DEE|dayi|dy|412|1707|成都|||@dyn|东营南|DOK|dongyingnan|dyn|413|0697|东营|||@dys|大杨树|DUX|dayangshu|dys|414|9096|呼伦贝尔|||@dyu|都匀|RYW|duyun|dy|415|1802|都匀|||@dzd|德州东|DIP|dezhoudong|dzd|416|0601|德州|||@dzd|定州东|DOP|dingzhoudong|dzd|417|0326|保定|||@dzd|邓州东|DDF|dengzhoudong|dzd|418|1216|南阳|||@dzh|东至|DCH|dongzhi|dz|419|0878|池州|||@dzh|达州|RXW|dazhou|dz|420|1715|达州|||@dzh|德州|DZP|dezhou|dz|421|0601|德州|||@dzh|定州|DXP|dingzhou|dz|422|0326|保定|||@dzh|邓州|DOF|dengzhou|dz|423|1216|南阳|||@ebi|峨边|EBW|ebian|eb|424|1708|乐山|||@ees|鄂尔多斯|EEC|eerduosi|eeds|425|0517|鄂尔多斯|||@ejn|额济纳|EJC|ejina|ejn|426|9099|阿拉善|||@eli|二连|RLC|erlian|el|427|0509|二连浩特|||@eme|峨眉|EMW|emei|em|428|1708|乐山|||@ems|峨眉山|IXW|emeishan|ems|429|1708|乐山|||@esh|恩施|ESN|enshi|es|430|1361|恩施|||@ezh|鄂州|ECN|ezhou|ez|431|1315|鄂州|||@fcb|防城港北|FBZ|fangchenggangbei|fcgb|432|1612|防城港|||@fdi|福鼎|FES|fuding|fd|433|1023|宁德|||@fdo|肥东|FIH|feidong|fd|434|0809|合肥|||@fdu|丰都|FUW|fengdu|fd|435|3109|丰都|||@fer|发耳|FEM|faer|fe|436|1806|六盘水|||@fha|福海|FHR|fuhai|fh|437|2424|阿勒泰|||@fhc|凤凰机场|FJQ|fenghuangjichang|fhjc|438|2509|三亚|||@fhc|凤凰城|FHT|fenghuangcheng|fhc|439|0210|丹东|||@fhe|汾河|FEV|fenhe|fh|440|0405|太原|||@fhu|奉化|FHH|fenghua|fh|441|0910|宁波|||@fji|富锦|FIB|fujin|fj|442|0052|佳木斯|||@fjt|范家屯|FTT|fanjiatun|fjt|443|011
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值