北京地铁出行路线规划_报告(已完成)
北京地铁出行路线规划_报告
- 本项目已上传Github:https://github.com/hangzhouwh/SE_PersonalProject_Subway
-
问题重述:
-
任务:
- 实现一个帮助进行地铁出行线路规划的命令行程序
- 实现加载地铁线路信息
- 实现查询指定地铁线路信息
- 实现从指定出发地到目的地的最短路径查询
- 实现一个帮助进行地铁出行线路规划的命令行程序
-
设计:
-
采用语言: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
posted on 2019-10-08 15:57 31701082_吴浩 阅读(556) 评论(0) 编辑 收藏 举报