北京地鐵出行路線規劃_報告(已完成)

北京地鐵出行路線規劃_報告 

 

 

  •  本項目已上傳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.命令使用參數出錯java

  •  2.命令使用的文件路徑或類型出錯git

     3.其餘不符合本項目要求的命令錯誤github

  • 模塊一:加載地鐵線路數據

 

  • 模塊二:查詢指定地鐵線路信息

  •  測試用例1:正常地鐵線路信息算法

  • 測試用例2:不存在的地鐵線路信息

 

  • 模塊三:查詢指定地鐵站點信息

  • 測試用例1:只存在一條地鐵線路中的地鐵站點
  • 測試用例2:存在於多條地鐵線路中的地鐵站點數據結構

  • 測試用例3:不存在的地鐵站點

 

  • 模塊四:查詢指定出發地與目的地之間的最短路徑

  • 測試用例1:不須要換乘(直達)
  •  測試用例2:存在單次換乘的通常狀況性能

  •  測試用例3:目的地爲中轉站。測試

  • 測試用例4:出發地爲中轉站spa

  • 測試用例5:存在多箇中轉站點互相鄰接的環路命令行

  •  測試用例6:屢次換乘設計

  •  

 

  • 性能測試:

  • 模塊 運行次數 運行時間 運行次數 運行時間
    loadSubwayMessage 1   8ms    
    getLine 1 10ms 100 145ms
    getStation 1 11ms 100 136ms
    getShortPath 1 18ms 100 368ms
相關文章
相關標籤/搜索