这个作品是我最近制作的毕业设计,全程独立完成.
主要采用了目前主流的框架模式UITabBarController + UINavigationController,使用代码和storybroardy以及xib结合编写.
主要使用了Auto Layout适配.
其中的素材资料来源于其他安装包,数据主要是从12306和58同城上面抓取.
软件主要包括了三大功能模块,分别是站站查询,代售点查询和车次查询.
1.代售点查询
1.主界面
这个功能模块的数据来源于12306官网,采用get请求发送直接可以获得json数据,数据处理没有上面难度,这个模块在我看来的一大难点是在URL的参数问题上,因为官网上面的参数是使用地名代码,并且转码,所以我从网络遍历了两千多个城市,把城市名和相应的代号做成了Plist文件.日期默认选中的是明天,城市名使用字典存进了caches,所以默认是上次的城市.
2.车站搜索
在火车站查询的时候一大难点是模糊所搜,使用模糊搜索tableView要做相应处理,逻辑有点混乱.
3.日期选择
这个日期是我从github上下载的,其中相应的属性都可以设置.
最后查询.
4.查询结果
这里面的cell主要是分两类,两类cell都是采用xib加载的.列表添加了下拉刷新功能.点击具体的cell会跳到相应的具体车次信息.
5.车次信息
这个界面也就是第三大功能实现的,里面可以查询到具体的车次信息.
2.代售点查询
1.主界面
代售点查询支持手动选择和地图定位.点击了任何一个UITextField就会显示一个PickerView
2.PickerView
数据来源于12306,实时加载数据.选中自动填充文本框.
点击查询.
3.查询
显示代售点信息,数据来源也是12306,在这里最大的难点是不等高cell的问题,所以我采用自定义纯代码的方式设计了不等高的cell. 点击代售点会进入地图定位.
4.地图定位
这里没有我使用的是系统MKMapView.
3.车次查询
1.主界面
这里我添加了历史记录功能,并且对UITextField输入进行了控制和转换.
2.车次信息
这里最大的问题就是数据源的问题,因为12306上的车次查询需要输入验证码,考虑到用户体验,所以就从58同城xml上面解析,那么最大的问题来了就是XML处理,由于58xml特别乱,各种广告,解析处理恶心的要死,不多说上解析代码.
XML中NSString截取转模型
自己摸索了一晚上才搞出来,我也是醉了.
下载地址https://github.com/liuyuxuan/Train-ticket-query
自己的第一篇简书,将就看把.