首页 > 代码库 > 北京地铁_结对项目_附加题

北京地铁_结对项目_附加题

团队成员:杨金键 谢振威 金豪

要求描述:

使程序支持不同城市的地图。请让程序能处理上海的地铁地图,或者其它城市的地图。把程序由 “固定处理一个地图” 升级为 “能处理多个地图”, 程序的什么模块需要变化?

 

其实,在我们设计程序之初就已经考虑到了程序将来的可扩展性,所以无论是地图储存文件还是代码我们都是从这个角度出发考虑的。

具体来说:

  1. 取消所有对于北京地图的特殊化处理,针对特殊的地方,例如环线或者单行线则定义关键词统一处理
  2. 所有地图相关信息都靠文件读取,避免地图相关的信息人为初始化,包括控件,例如我们有一个储存线路名的list,只能通过读取文件来加载而不能手动输入进去。
  3. 不依靠固定的特殊内容,例如很多人都采用的实际的地铁线路作为基础,这样就只能针对这一张固定的线路图了

我们认为只要满足这三点,地图就可以通过修改输入文件动态生成,我们是这样做的也确实得到了这样的效果。

就我们的程序来说,首先代码本身就是与地图无关的,对于地图的限制仅仅是文件格式,以及不能过多的站和线路(前者不能超过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

程序运行效果如下:

技术分享

总结:

可以看到,基本的功能完全一致且正确,这里仅仅因为精力所限没有载入超级大的城市地图,但是按照这个方法,想必是完全没有问题的

以上就是我们团队对于附加题的解法。

北京地铁_结对项目_附加题