地铁线路项目简析

一、需求分析

根据这次所给出的题目,首先要做的就是需求分析,根据题目要求及个人理解,得出的需求结果如下:

1、确定储存及读取地铁线路数据文件的格式

2、支持用户输入的地铁线路的查询

3、提供用户指定两站点间的最短乘车路径的方案(可换乘)

二、实现思路(暂定,待优化)

根据上面得出的需求分析,个人想到的相应解决方案如下:

1、使用json格式存取数据

题目要求:在开始设计程序之前,请先思考并设计一种文件格式用于存储地铁信息。一方面,这种文件格式要简洁易懂,可以灵活扩展,另一方面它又要方便应用程度读取。请在博客中给出你定义的文件格式的前5行,并以它为例简要说明它的设计理念。

基于对本要求的考量,最终选择了json格式。以下给出自己设计用于存取地铁信息的json格式(仅给出部分,ps:初次接触,尚不熟练,不喜轻喷):

{

  {
    'Line' : 'S1线',
    'Station' : ['金安桥', '四道桥', '桥户营', '上岸', '栗园庄', '小园', '石厂']
  },

  ……

  ……
}

'Line'为线路名称,'Station' 为站名。

2&3、使用java语言进行编程

理由:本学期有其他需要java的课,俗话说熟能生巧,借此机会多用用java来编程

由分析可知,该地铁线路的项目本质上就是求无向图的最短路径问题。由所学的数据结构可知,当读入数据后,我们可以用邻接表或邻接矩阵来来存储数据,但是由于地铁站点过多且除可换乘的站点外,大多站点只与前后相邻站点之间存在边,所以得到的图可认为是稀疏图,故用邻接矩阵来存储会有大量的INF数据存在,对空间浪费极大,故我们使用邻接表来存储,以此可以节省大量不必要的空间。

针对需求2,输出地跌路线,我们可以遍历存储的邻接表来得到,但我想另外开一个数组来直接存储相应地铁节点名称,虽然增大了一点空间开销(其实200左右个站点名感觉所需的空间也不大),但是可以提高运行速度(单就需求二而言,对三无影响)。

针对需求3,对于最短路径,我们可以选择Dijkstra算法或Floyd算法。

三、异常分析(可能存在或出现)

1、线路或站点不存在

。。。。。。嗯,其他暂时想不到了,暂时先写这么多,后续在编程及运行中出问题了再补充。

 

 

更改:最终选择了bfs感觉就本题而言更为便捷,并修改了json格式,自己用java swing写了简单的UI,用下拉框选择站点所以直接排除了非法输入。

posted @ 2019-09-20 17:05  31701424_王志伟  阅读(179)  评论(0编辑  收藏  举报