个人培训项目-环境搭建
北京地铁实例
预期计划
PSP 2.1 | Personal Software Process Stages | Time |
---|---|---|
Planning | 计划 | 1h |
Estimate | 估计这个任务需要多少时间 | 2h |
Development | 开发 | 5h |
Analysis | ·需求分析 (包括学习新技术) | 2-3h |
Design Spec | 生成设计文档 | 1h |
Design Review | 设计复审 (和同事审核设计文档) | 1h |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 1h |
Design | 具体设计 | 1h |
Coding | 具体编码 | 2h |
Code Review | 代码复审 | 1h |
Test | 测试(自我测试,修改代码,提交修改) | 2-3h |
Reporting | 报告 | 1h |
Test Report | 测试报告 | 1h |
Size Measurement | 计算工作量 | 1h |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 1h |
合计 | 23-25h |
需求分析
- 计算地铁线路最短路径
- 支持显示地铁线路与计算换乘的程序
- 查询指定地铁线经过的站点
- 最少的站数从出发点到达目的地
实现思路
-
为了输入及存储数据的方便采取json格式,并使用CJsonObejct作为json的支持库
-
异常情况
- 线路不存在
- 站点找不到
-
将地铁线路抽象为无向图,将问题转化为无向图上求最短路的问题
-
采用堆优化的Dijstra算法,可以预计是个稀疏图,时间复杂度\(O(VlogV)\),空间复杂度\(O(M+V)\)
-
测试点
- 无重复路径
- 保证站点在路径上
输入
- 用参数 -map 作为标志。程序启动时需要通过读取 -map 参数来获得对应的自定义地铁文件(命名为 subway.txt),从而得到地铁线路图的信息。
subway.exe -map subway.txt
//地图格式
{
{
"subway-line-name" : "一号线",
"stations" : ["苹果园","古城"]
},
{
"subway-line-name" : "二号线",
"stations" : ["积水潭","鼓楼大街"]
}
}
- 支持一个新的命令行参数 -a,它指定了用户希望查询的地铁线路。这样,在给定地铁线路时,你的程序就需要能够从线路的起始站点开始,依次输出该地铁线经过的所有站点,直到终点站。输出的文件我们使用 -o 命令行参数来指定。
subway.exe -a 1号线 -map subway.txt -o station.txt
//输出格式
{
{
"subway-line-name" : "一号线",
"stations" : ["苹果园","古城"]
},
}
- -b 参数加两个地铁站点名称分别作为出发与目的,比如用户希望知道 动物园 到白堆子 之间的最短路线是怎样的,他就可以使用如下命令让程序将结果写入 routine.txt 中
subway.exe -b 动物园 白堆子 -map subway.txt -o routine.txt
//输出格式
{
{
"subway-line-name" : "一号线",
"stations" : ["苹果园","古城"],
"number-of-stations" : "5"
},
}
实际对应路线