个人项目——地铁

地铁个人项目

项目下载

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工具的运用,但并不熟练,还需要后续的操作练习,此外,该项目已被很多程序员们编写过,在阅读过程中学到了很多搭建项目的方法及构建思路,学习他人的代码会比自己独自闭门造车效率高得多,这种学习方法也将在未来的学习中受用。此外也发现了自己的不足之处,设计环节中考虑不周,导致在实操过程中推翻自己之前的设计,这点有待改善。

posted @ 2019-10-13 14:19  31701003_盛雪  阅读(156)  评论(0编辑  收藏  举报