地铁个人项目
1、PSP表格:
PSP 2.1 | Personal Software Process Stages | Time |
---|---|---|
Planning | 计划 | |
· Estimate | ·估计这个任务需要多少时间 | 24h |
Development | 开发 | |
· Analysis | · 需求分析(包括学习新技术) | 4h |
· Design Spec | · 生成设计文档 | 2h |
· Design Review | · 设计复审(和同事审核设计文档) | — |
· Coding Standard | · 代码规范(为目前的开发制定合适的规范) | — |
· Design | · 具体设计 | 2h |
· Coding | · 具体编码 | 7h |
· Code Review | · 代码复审 | — |
· Test | · 测试(自我测试、修改代码、提交修改) | 1h |
Reporting | 报告 | 1h |
· Test Report | · 测试报告 | 1h |
· Size Measurement | · 计算工作量 | — |
· Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 2h |
合计 | 20h |
2、模块划分与设计
整个项目划分为4个模块:
模块名 | 职责 |
---|---|
主控模块 | 判断用户输入的请求以实现对应功能 |
数据读取模块 | 读取记事本中内容并转换成需要的图结构 |
算法分析模块 | 进行最短路径选取及地铁线路输出 |
参数模块 | 保存各种表结构 |
模块之间的作用及联系:
模块代码详解:
1、 参数模块
属性 | 内容 |
---|---|
sub_name | 地铁线路名 |
station_name | 某条地铁线下的所有站点 |
map | 包含所有的线路及其线路中所有站点的集合 |
sta_id | 为所有站点匹配的id号 |
sub_id | 为所有线路匹配的id号 |
distance | 节点之间的距离 |
belong | 站点所属线路记录 |
2、 数据读取模块
数据结构:
奇数行为线路名,读取方式如下:
偶数行为站点名,读取方式如下:
以两行为单位读取完毕后:
3、数据分析模块
站点输出(基本思想:循环map找到匹配的线路名称输出sta_name中内容):
最短路径输出(基本思想:floyd的三重循环):
3、代码测试
a. 指定线路的站点输出
正常输入:
非正常输入(不存在该条线路):
b. 最短路径输出
正常输入:
1)单条线路无换乘
2)存在环路
无换乘:
有换乘:
3)双交线
无换乘:
有换乘:
4)长路线,多次换乘
5)超长线路
非正常输入:
1)同个站点
2)非法输入
4、个人学习总结
本次项目区别于以前的实验内容,从无到有,需要自己提前设计、学习与之相关的编写工具、考虑各种特殊情况,是对个人能力的综合考验;通过地铁项目的构建初步掌握了markdown及github工具的运用,但并不熟练,还需要后续的操作练习,此外,该项目已被很多程序员们编写过,在阅读过程中学到了很多搭建项目的方法及构建思路,学习他人的代码会比自己独自闭门造车效率高得多,这种学习方法也将在未来的学习中受用。此外也发现了自己的不足之处,设计环节中考虑不周,导致在实操过程中推翻自己之前的设计,这点有待改善。