作业源程序代码:https://github.com/R-81/subway
作业程序使用说明:通过输入命令参数求解路线(仅支持-b,-c),根据参数得出路线后,程序不会结束,此时可输入地铁路线名(例如地铁一号线)输出此路线上所有车站名。
1)各模块开发需要消耗的时间
Personal Software Process Stages | Time | |
Planning | 计划 |
|
· Estimate | · 估计这个任务需要多少时间 | 15h |
Development | 开发 |
|
· Analysis | · 需求分析 (包括学习新技术) | 1h |
· Design Spec | · 生成设计文档 | 0h |
· Design Review | · 设计复审 (和同事审核设计文档) | 0h |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 0h |
· Design | · 具体设计 | 2h |
· Coding | · 具体编码 | 8h |
· Code Review | · 代码复审 | 0h |
· Test | · 测试(自我测试,修改代码,提交修改) | 8h |
Reporting | 报告 |
|
· Test Report | · 测试报告 | 1h |
· Size Measurement | · 计算工作量 | 0h |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 1h |
合计 | 21h |
2)改进程序
对于-c的路径索索进行了一次改进,具体表现为将搜索过的线路进行标记,在下一次搜索的时候省去搜索这些被标记的线路,能够减少大量的多余搜索,但是在多个线路上的换乘车站依旧能够得到有效搜索。
3)文件存储格式及理由
我采用的文件存储格式是Line 路线名 地铁站名。Line是为了区分路线名和地铁站名,Line后紧跟的字符串为路线名。对于环线路线,需要在该线路站名最后加上重复的起点,达到连接成环的效果。
4)程序正确性论证
程序从文件读取线路信息和站点信息,通过处理后存入合适的数据结构中,通过参数的不同,选择以广度优先搜索为主要算法,不同的搜索方式进行路径搜索。经过多次测试和改正后,能达到作业要求效果。
5)学习与体悟
感觉这次由于自己在书写代码前没能做好充分的思考,导致在测试阶段重复修改了很多次,浪费了不少时间,下次应该在设计阶段考虑得更周密一点,这样反而会节省出来时间。
6)性能分析图
7)测试用例
-c 苹果园 2号航站楼
-b 苹果园 2号航站楼
-c 2号航站楼 苹果园
-b 2号航站楼 苹果园
-b 知春路 北京西站
-c 知春路 北京西站
-b 四惠 高碑店
-b 四惠 四惠东
地铁一号线
地铁八通线