软工结对项目——地铁
一、项目地址
Github项目地址:https://github.com/gcrth/subway
二、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 90 | 90 |
Development | 开发 | ||
· Analysis | · 需求分析(包括学习新技术) | 100 | 120 |
· Design Spec | · 生成设计文档 | 90 | 100 |
· Design Review | · 设计复审(和同事审核设计文档) | 0 | 0 |
· Coding Standard | · 代码规范(为目前的开发指定合适的规范) | 60 | 50 |
· Design | · 具体设计 | 120 | 200 |
· Coding | · 具体编码 | 4000 | 5200 |
· Code Review | · 代码复审 | 120 | 120 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 200 |
Reporting | 报告 | ||
· Test Report | · 测试报告 | 120 | 120 |
· Size Measurement | · 计算工作量 | 60 | 50 |
· Postmortem &Process Improvement Plan | · 事后总结,并提出过程改进计划 | 60 | 120 |
合计 | 4940 | 6370 |
三、解题思路描述
3.1 功能说明
根据题意分析,我们最终决定实现以下功能,详细请见下表。
输入 | 功能描述 |
---|---|
subway.exe /beijing /a 知春路 | 输出从知春路出发遍历所有地铁站,再回到知春路途中所经过的站数以及站名 |
subway.exe /beijing /a 知春路 /adv | 输出从知春路出发遍历所有地铁站,再回到知春路途中所经过的站名,以及换乘站等价换算后的站数 |
subway.exe /beijing /b 知春路 中关村 | 输出从知春路到中关村两站途径的站数以及站名 |
subway.exe /beijing /b 知春路 中关村 /adv | 输出从知春路到中关村两站途径的站名,以及换乘站等价换算后的站数 |
subway.exe /beijing /c 1号线 | 输出该线路上所有的地铁站名 |
subway.exe /beijing /g 知春路 | 在地图上标出从知春路出发遍历所有地铁站的路径 |
subway.exe /beijing /g 知春路 /adv | 在地图上标出从知春路出发遍历所有地铁站的路径 |
subway.exe /beijing /k 知春路 中关村 | 输出从知春路到中关村两站途径的站数以及站名,并在地图上标出路径 |
subway.exe /beijing /k 知春路 中关村 /adv | 输出从知春路到中关村两站途径的站名,以及换乘站等价换算后的站数,并在地图上标出路径 |
subway.exe /beijing /z test.txt | 测试/a参数的输出是否正确 |
3.2 实现找到两站之间的路径
为了能找到两站之间的路径,我们计划采用广度搜索的算法,详细过程如下。
3.3 实现遍历所有地铁站
从当前结点开始,寻找最近的未访问的点,转移当前结点位置,再次寻找最近的未访问的点。
寻找最近的未访问的点采用广搜,方法与上面的类似,在此不再过多描述。
3.4 GUI图形界面输出路径
提前准备好地图和坐标,按照输出站的顺序找到对应的地铁站坐标进行标记,两站之间用直线标出路径。
四、设计实现过程
4.1 类的展示以及说明
为了实现以上功能,根据题意,我们从中找到了和抽象出了以下几个重要的类。
下面的表格是对上述各个类的补充说明。







4.2 输入参数
为了能够实现题目中的功能,我们对于输入的参数做了重新的规定,规定如下:
第一个参数是可执行文件名subway.exe,不可更改,必选项&#x