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

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

源代码传送门

https://github.com/bunnywwwwyj/BeiJingSubway

问题回顾

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

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

线路概览

avatar
avatar
avatar
avatar

文件输入输出的格式

  • subway.txt 的存储格式

    1号线: 苹果园 古城 八角游乐园 ...
    2号线: 西直门#4#13 积水潭 鼓楼大街#8 ...
    ...
    S1线: 金安桥#6 四道桥 桥户营 ...

    线路名后用“:”与其后站点间隔。

    站点间用“ ”间隔。

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

  • station.txt 的输出格式

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

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

    在每个换乘站后面的"()"中显示可换乘的所有线路。

  • routine.txt 的输出格式

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

    扫描二维码关注公众号,回复: 7468280 查看本文章
    共经过5站 
    中关村 
    海淀黄庄 
    10号线 
    知春里 
    知春路 
    西土城

    首先输出所经过的站点数,接下来输出所经过的所有站点(包括出发与目的站点),若需要换乘,会在该站下提示换乘的线路。

功能实现

  • 功能1

    • 得到地铁线路图的信息

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

      java Main -map subway.txt
  • 功能2

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

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

      java Main -a 1号线 -map subway.txt -o station.txt
  • 功能3

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

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

      java Main -b 中关村 西土城 -map subway.txt -o routine.txt

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

  • 无换乘

    。。。
  • 单次换乘

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

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

    得到的输出如下:

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

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

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

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

  • 超长路线

  • 换乘节点-换乘节点

报错处理

  • 起点站与终点站相同

  • 不存在的线路

  • 不存在的站点

最后

。。。

参考博文链接

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

猜你喜欢

转载自www.cnblogs.com/bunnywwwwyj/p/11681174.html
今日推荐