个人项目-地铁出行路线规划(Java代码实现)

基于上一篇博客的规划,通过几天的努力,完成了该程序的实现。

源代码传送门

11111111

问题回顾

为了实现地铁出行路线的规划,需要设计一个能够计算地铁线路最短路径的程序。

这里以北京城市轨道交通线网图为例来设计:

线路概览




关于文件输入输出的格式

subway.txt 的存储格式

```text
1号线: 苹果园 古城 八角游乐园 ...
2号线: 西直门#4#13 积水潭 鼓楼大街#8 ...
...
S1线: 金安桥#6 四道桥 桥户营 ...
```
线路名后用“:”与其后站点间隔。

站点间用“ ”间隔。

若某站为换乘站,在其后用“#数字”的方式,表示在当前线路上的该站点可换乘到“#”后数字序号所指的线路上,如2号线的西直门可以换乘到4号线以及13号线。
知识兔

station.txt 的输出格式

以查询一号线为例,得到的输出如下:

```text
1号线所经过的站点为: 苹果园 古城 八角游乐园 八宝山 玉泉路 五棵松 万寿路 公主坟(可换乘 10号线)军事博物馆(可换乘 9号线)木樨地 南礼士路 复兴门(可换乘 2号线)西单(可换乘 4号线)天安门西 天安门东 王府井 东单(可换乘 5号线)建国门(可换乘 2号线)永安里 国贸(可换乘 10号线)大望路(可换乘 14号线东)四惠(可换乘 八通线)四惠东(可换乘 八通线)
```
在每个换乘站后面的"()"中显示可换乘的所有线路。
知识兔

routine.txt 的输出格式

以查询从中关村到西土城为例,得到的输出如下:

```text
共经过5站 
中关村 
海淀黄庄 
10号线 
知春里 
知春路 
西土城
```
首先输出所经过的站点数,接下来输出所经过的所有站点(包括出发与目的站点),若需要换乘,会在该站下提示换乘的线路。
知识兔

功能实现

  • 功能1

    • 得到地铁线路图的信息

      一个调用应用程序的示例如下:

      java Main -map subway.txt
      知识兔li>
  • 功能2

    • 查询指定地铁线经过的站点

      一个调用应用程序的示例如下:

      java Main -a 1号线 -map subway.txt -o station.txt
      知识兔li>
  • 功能3

    • 计算从出发到目的站点之间的最短路线并输出经过的站点的个数和路径

      一个调用应用程序的示例如下:

      java Main -b 中关村 西土城 -map subway.txt -o routine.txt
      知识兔li>

对于功能3的一些测试样例

  • 无换乘

    。。。
    知识兔li>
  • 单次换乘

    假设某乘客想要从中关村到西土城,那么输入如下:

    subway.exe -b 中关村 西土城 -map subway.txt -o routine.txt
    知识兔

    得到的输出如下:

    5 
    中关村 
    海淀黄庄 
    10号线 
    知春里 
    知春路 
    西土城
    知识兔

    5表示从出发到目的站点之间的最短路线为5站。

    接下来输出所经过的所有站点(包括出发与目的站点)。

    海淀黄庄为4号线与10号线的换乘站,因此在它的下一行输出需要换乘的线路。
  • 多次换乘

  • 超长路线

  • 换乘节点-换乘节点

报错处理

  • 起点站与终点站相同

  • 不存在的线路

  • 不存在的站点

最后

。。。

参考博文链接

https://blog.csdn.net/HuHui_/article/details/83020917

计算机