一 项目介绍
实现一个支持显示地铁线路与计算换乘的程序,上图为对应项目的天津地铁线路图。
为了降低难度与简化要求,现阶段我们可以假定程序的输入一定是正确的。同时,为了让地铁程序能与地铁线路图解耦,我们需要将地铁线路与程序分离开,将其保存成一个可读入的文件。
具体地,我们要将图1的地铁线路信息等用一个文本文件(假设名字叫 subway.txt)的形式保存起来,应保存的信息应包括地铁线路名称、各个地铁站点的名称以及车站换乘信息,使得应用程序可以通过读取这个文件,就能掌握关于北京地铁线路的所有信息。
在开始设计程序之前,请先思考并设计一种文件格式用于存储地铁信息。一方面,这种文件格式要简洁易懂,可以灵活扩展,另一方面它又要方便应用程度读取。请在博客中给出你定义的文件格式的前5行,并以它为例简要说明它的设计理念。
二 需求分析
1.用户可以通过命令行启动这个程序显示对应的地铁线路图,线路图用一个文本文件保存,内容包含地铁对应的线路名称,该线路的所有站点以及车站换乘信息。
2.用户可以通过输入对应的线路名称来查询该地铁线路经过的所有站点名称,在给定地铁线路时,你的程序就需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。
3.用户可以通过输入两个地铁站点名称分别作为出发与目的站,你的程序将计算从出发到目的站点之间的最短(经过的站点数最少)路线,并输出经过的站点的个数和路径(包括出发与目的站点)。注意,如果需要换乘,请在换乘站的下一行输出换乘的线路。
三 设计思路
1.显示地铁线路
针对地铁信息的存储,我打算采用JAVA程序数组 str 定义。
String[][] str;//数组用于存放各个站点的名称
str=new String[n][];//这里n为有n条地铁线路
str[0]=new String[x1];//这里x1为1号线有x1个站点
······
str[n-1]=new String[xn];
文本文件可以采用CVS或者EXCL,例
2.查询地铁线路
将文本文件中的有效数据对应到程序中地铁线路信息。
通过用户输入的参数,例“1号线”,提取整型数据“1”查找到对应的str[1],输出该数组元素,即为依次输出该地铁线经过的所有站点,直到终点站。
3.推荐地铁线路
将地铁线路存为无向图,每个站点为一个节点,将两个节点之间的路径长度都设为1,这样就满足计算从出发到目的站点之间的最短(经过的站点数最少)路线的要求。
通过用户输入的出发站和目的站这两个节点,用Dijksta(迪杰斯特拉)算法求两点的最短路径。