参考
https://edu.cnblogs.com/campus/buaa/2019BUAASummerSETraining/homework/3407
任务
实现一个帮助进行地铁出行路线规划的命令行程序。(即实现一个能处理正确输入的命令行的计算地铁线路最短路径的程序)
需求分析
以北京地铁为例。
○需求1
从txt获得地铁线路信息
将地铁线路信息用一个文本文件(subway.txt)的形式保存起来,格式如下,以1号线为例:
1,苹果园,古城,八角游乐园,八宝山,玉泉路,五棵松,万寿路,公主坟,军事博物馆,木樨地,南礼土路,复兴门,西单,天安门西,天安门东,
王府井,东单,建国门,永安里,国贸,大望路,四惠,四惠东
(“,”分隔站点。首位表示几号线。第二位表示始发站。第三位表示第2站,依次类推。)
用于测试的地铁图如本文章开头所示。为了简单起见,所有暂缓开通的站点都认定为已经开通。图片中所有显示换乘标志的都是可以换乘的站点。采用参数 -map
作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(subway.txt),从而得到地铁线路图的信息。一个调用应用程序的示例如下:
java subway -map subway.txt
○需求2
查询指定地铁线经过的站点。
在应用程序需要支持一个新的命令行参数 -a
,它指定了用户希望查询的地铁线路。
在给定地铁线路时,需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件使用 -o
命令行参数来指定。
一个调用应用程序的示例如下:
java subway -a 1号线 -map subway.txt -o station.txt
○需求3
通过输入两个地铁站点(出发点与目的点)计算两站间通过最少的站数,并写入txt
在命令行中以 -b 参数加两个地铁站点名称分别作为输入的两个站点,让程序将结果写入 routine.txt 中
subway.exe -b 万寿路 白堆子 -map subway.txt -o routine.txt
程序将计算从出发到目的站点之间的最短(经过的站点数最少)路线,并输出经过的站点的个数和路径(包括出发与目的站点)。如有换乘,在换乘站的下一行输出换乘的线路。上面样例的输出就会存入 routine.txt 文件中,文件内容如下:
1 万寿路 公主坟 军事博物馆 9 白堆子
(“1”表示始发站;“万寿路”表示初始站;“9”表示换乘后线路)
设计思路
○使用java实现。
○将地铁线路、站点看作线和点,转为无向图。使用Dijkstra算法完成最短路径问题。每个节点之间的距离设为1。
○两站点存在多个线路,选择换乘较少的输出。
○异常情况处理。
项目时间安排
PSP 2.1 | Personal Software Process Stages | Time |
Planning | 计划 | |
·Estimate | ·估计这个任务需要多少时间 | 1h |
Development | 开发 | |
·Analysis | ·需求分析(包括学习新技术) | 4h |
·Design Spec | ·生成设计文档 | 1h |
·Design Review | ·设计复审(和同时审核设计文档) | 1h |
·Coding Standard | ·代码规范(为目前的开发制定合适的闺房) | |
·Design | ·具体设计 | 2h |
·Coding | ·具体编码 | 6h |
·Code Review | ·代码复审 | 1h |
·Test | ·测试(自我测试,修改代码,提交修改) | 4h |
Reporting | 报告 | |
·Test Report | ·测试报告 | 2h |
·Size Measurement | ·计算工作量 | 1h |
·Postmortem & Process Improvement Plan | ·事后总结,并提出过程改进计划 | 1h |
合计 | 24h |