北京地铁_结对项目_附加题
地铁出行项目(续)- 附加题
团队成员:杨金键 谢振威 金豪
要求描述:
使程序支持不同城市的地图。请让程序能处理上海的地铁地图,或者其它城市的地图。把程序由 “固定处理一个地图” 升级为 “能处理多个地图”, 程序的什么模块需要变化?
其实,在我们设计程序之初就已经考虑到了程序将来的可扩展性,所以无论是地图储存文件还是代码我们都是从这个角度出发考虑的。
具体来说:
- 取消所有对于北京地图的特殊化处理,针对特殊的地方,例如环线或者单行线则定义关键词统一处理
- 所有地图相关信息都靠文件读取,避免地图相关的信息人为初始化,包括控件,例如我们有一个储存线路名的list,只能通过读取文件来加载而不能手动输入进去。
- 不依靠固定的特殊内容,例如很多人都采用的实际的地铁线路作为基础,这样就只能针对这一张固定的线路图了
我们认为只要满足这三点,地图就可以通过修改输入文件动态生成,我们是这样做的也确实得到了这样的效果。
就我们的程序来说,首先代码本身就是与地图无关的,对于地图的限制仅仅是文件格式,以及不能过多的站和线路(前者不能超过500后者不能超过50条(P.S. 其实这个也是可以改啊))
格式为:
先是所有的站的
“序号 站名 坐标”
空行
“线路名”
“站序号列表”
输入文件的例子如下:(因为程序的地图无关性,使用各式各样的地图都能使其正确运行,故即便是随手捏来的一个地铁图都能正确运行,下面给出的就是一个随手捏的城市地铁)
1 Xie 50 260
2 Ji 100 472
3 Yang 250 140
4 Zhen 172 200
5 Wei 125 138
6 Hao 255 390
7 Jin 380 390
8 Jian 380 500
9 JieDui 255 255谢振威线
1 4 5 9
金豪线
2 6 9
杨金键线
9 3 7 8
程序运行效果如下:
总结:
可以看到,基本的功能完全一致且正确,这里仅仅因为精力所限没有载入超级大的城市地图,但是按照这个方法,想必是完全没有问题的
以上就是我们团队对于附加题的解法。