北京地铁出行路线规划_报告(已完成)

北京地铁出行路线规划_报告 

Github链接:https://github.com/hangzhouwh/SE_PersonalProject_Subway

 

  • 问题重述:

  • 任务:

    •   实现一个帮助进行地铁出行线路规划的命令行程序
      1.   实现加载地铁线路信息
      2.        实现查询指定地铁线路信息
      3.        实现从指定出发地到目的地的最短路径查询
  • 设计:

    •   采用语言:JAVA

    •        开发环境:IDEA 2019.2.1

    •        功能设计:

      • 实现地铁线路信息的获取

        • 使用文本文件保存地铁线路信息,调用方式如下:
        • 1 java Subway -map subway.txt
      • 实现基础查询功能,查询指定地铁线路信息

        • 采用参数 -s 来查询指定地铁站点信息,采用参数 -o 来输出到指定文件,调用方式如下:
        • 1 java Subway -s 军事博物馆 -map subway.txt -o station.txt 
        • 采用参数 -q 来查询指定地铁线路信息,采用参数 -o 来输出到指定文件,调用方式如下:
        • 1 java Subway -q 1号线 -map subway.txt -o line.txt
      • 实现从指定出发地到目的地的最短路径查询

        • 采用参数 -b 来指定出发地与目的地
        • 1 java Subway -b 苹果园 军事博物馆 -map subway.txt -o routine.txt
    •     地铁线路数据存储文件 subway.txt 设计:

      • 1 1号线 苹果园 古城 八角游乐园 ...
        2 2号线 积水潭 鼓楼大街 安定门 ...
        3 燕房线 燕山 房山城关 饶乐府 ...
    •        具体地铁线路查询结果存储文件 line.txt 设计:

      • 1 2号线: 积水潭 鼓楼大街 安定门 雍和宫 东直门 ...
    •     具体站点查询结果存储文件 station.txt 设计:

      • 1 军事博物馆:
        2 1号线
        3 9号线
    •       最短路径输出文件 routine.txt 设计

      • 苹果园(1号线)
        古城(1号线)
        八角游乐园(1号线)
        八宝山(1号线)
        玉泉路(1号线)
        五棵松(1号线)
        万寿路(1号线)
        公主坟(1号线)
        军事博物馆(1号线 换乘 9号线)
        白堆子(9号线)
        白石桥南(9号线)
        国家图书馆(4号线大兴线)
    •   算法设计:

      •   说明:在本项目中,将相邻站点的距离视为等距离,同站点换乘不计算距离
      •   采用Dijkstra算法求得最短路径
      •   涉及数据结构说明:

          • 类名 名称 名称 存储类型 说明
            Graph  图  
            vertices List<Station> 结点集
            neighbors List<List<Edge>> 邻接表,存储与结点相连的边
            Edge(类名)  边
            u int 结点u的编号
            v int 结点v的编号
            Subway
            Station(类名)
            statiomName String 站点名称
            lineOfStation List<String> 所属地铁线路
            Line(类名)
            lineName String 地铁线名称
            stations List<Station> 地铁线经过站点
            linesMap Map<String, Line> 地铁名称-地铁线
            stationNameMapStationId Map<String, Integer> 站点名称-站点ID
            stationNameMapStation Map<String, Station> 站点名称-站点
            graph Graph 地铁图
      •     接口说明:

        • 方法名称

          说明

          参数

          loadSubwayMessage

          加载地铁线路

          filePath 存储地铁线路的文件路径

          getLine  

          查询指定地铁线路信息,并将结果输出至文件

          lineName 待查询地铁线路名称

          outFilePath 查询结果输出文件路径

          getStation

          查询指定地铁站点信息,并将结果输出至文件

          stationName 待查询地铁站名称

          outFilePath 查询结果输出文件路径

          getShortPath  

          查询指定出发地点到目的地的最短路径,并将结果输出至文件

          begin 出发地

          end 目的地

          outFilePath 查询结果输出文件路径

  • 测试:

  • JVM命令测试:

  • 1.命令使用参数出错

  •  2.命令使用的文件路径或类型出错

     3.其他不符合本项目要求的命令错误

  • 模块一:加载地铁线路数据

  • 模块二:查询指定地铁线路信息

  •  测试用例1:正常地铁线路信息

  • 测试用例2:不存在的地铁线路信息
  • 模块三:查询指定地铁站点信息

  • 测试用例1:只存在一条地铁线路中的地铁站点
  • 测试用例2:存在于多条地铁线路中的地铁站点

  • 测试用例3:不存在的地铁站点
  • 模块四:查询指定出发地与目的地之间的最短路径

  • 测试用例1:不需要换乘(直达)
  •  测试用例2:存在单次换乘的一般情况

  •  测试用例3:目的地为中转站。

  • 测试用例4:出发地为中转站

  • 测试用例5:存在多个中转站点互相邻接的环路

  •  测试用例6:多次换乘

  •  

  • 性能测试:

  • 模块 运行次数 运行时间 运行次数 运行时间
    loadSubwayMessage 1   8ms    
    getLine 1 10ms 100 145ms
    getStation 1 11ms 100 136ms
    getShortPath 1 18ms 100 368ms

猜你喜欢

转载自www.cnblogs.com/hangzhouwh/p/11627663.html