火车票查询

 这个作品是我最近制作的毕业设计,全程独立完成.

主要采用了目前主流的框架模式UITabBarController + UINavigationController,使用代码和storybroardy以及xib结合编写.

主要使用了Auto Layout适配.

其中的素材资料来源于其他安装包,数据主要是从12306和58同城上面抓取.

软件主要包括了三大功能模块,分别是站站查询,代售点查询和车次查询.


1.代售点查询

1.主界面

火车票查询_第1张图片

这个功能模块的数据来源于12306官网,采用get请求发送直接可以获得json数据,数据处理没有上面难度,这个模块在我看来的一大难点是在URL的参数问题上,因为官网上面的参数是使用地名代码,并且转码,所以我从网络遍历了两千多个城市,把城市名和相应的代号做成了Plist文件.日期默认选中的是明天,城市名使用字典存进了caches,所以默认是上次的城市.

2.车站搜索

火车票查询_第2张图片

在火车站查询的时候一大难点是模糊所搜,使用模糊搜索tableView要做相应处理,逻辑有点混乱.

3.日期选择


火车票查询_第3张图片

这个日期是我从github上下载的,其中相应的属性都可以设置.

最后查询.

4.查询结果

火车票查询_第4张图片

这里面的cell主要是分两类,两类cell都是采用xib加载的.列表添加了下拉刷新功能.点击具体的cell会跳到相应的具体车次信息.

5.车次信息

火车票查询_第5张图片

这个界面也就是第三大功能实现的,里面可以查询到具体的车次信息.


2.代售点查询

1.主界面

火车票查询_第6张图片

代售点查询支持手动选择和地图定位.点击了任何一个UITextField就会显示一个PickerView

2.PickerView


火车票查询_第7张图片

数据来源于12306,实时加载数据.选中自动填充文本框.

点击查询.

3.查询


火车票查询_第8张图片

显示代售点信息,数据来源也是12306,在这里最大的难点是不等高cell的问题,所以我采用自定义纯代码的方式设计了不等高的cell. 点击代售点会进入地图定位.

4.地图定位


火车票查询_第9张图片

这里没有我使用的是系统MKMapView.


3.车次查询

1.主界面


火车票查询_第10张图片

这里我添加了历史记录功能,并且对UITextField输入进行了控制和转换.

2.车次信息

火车票查询_第11张图片

这里最大的问题就是数据源的问题,因为12306上的车次查询需要输入验证码,考虑到用户体验,所以就从58同城xml上面解析,那么最大的问题来了就是XML处理,由于58xml特别乱,各种广告,解析处理恶心的要死,不多说上解析代码.


XML中NSString截取转模型


火车票查询_第12张图片


火车票查询_第13张图片


火车票查询_第14张图片

自己摸索了一晚上才搞出来,我也是醉了.

下载地址https://github.com/liuyuxuan/Train-ticket-query


自己的第一篇,将就看把.

你可能感兴趣的:(火车票查询)