软件工程2019-地铁线路规划

项目目标

      实现一个帮助进行地铁出行线路规划的程序(GUI或命令行)

 

 

需求分析

      1.  用户交互:GUI(图形接口)方式or控制台(命令行)方式

      2.  设计项目目标核心解决方案

 

 

解决方案设计思路

      1.  对”线路规划”的理解,一个好的线路规划可能有以下衡量标准:

           a)  总公里数最少

           b)  经过的总站点数最少

           c)   预计消耗时间最短

           结合生活经验可以发现,总公里数最少的线路的时间消耗未必最短

           经过的站点数量对时间消耗有很大影响,但为了简化问题,可以只考虑长度.

 

      2.  程序输入输出

           a)  输入文件可以考虑使用CSV文件

           b)  直接输出到屏幕显示,也可以导出结果到文件

 

      3.  模型构建和算法选择(设计)

           典型的,地铁站点及站点间线路的问题可以抽象成一个图

           线路规划问题也变成了求图中两点最短(广义)路径的问题

           相应的,以下是两个针对该问题的算法:

           a)  Dijkstra算法(迪杰斯特拉算法)

                 该算法用于求一个图中指定两点间最短距离及对应路径

           b)  Floyd算法(弗洛伊德算法)

                 该算法用于求图中任意两点的最小路径

           很明显,对于给定的图,用弗洛伊德算法更好,只需要一次计算即可求得

任意两点之间的最短路径.

 

      4.  对于程序优化方面的思考

           显然,地铁站模型是一个特殊的图模型,即:

           大部分地铁站都只发出两条边,在局部上类似于链表的结构

           针对这方面可能可以进行部分优化.

 

 

解决方案实现工具

      C/C++

      IDE可以选择VS

 

 

解决方案实现计划

      1.  数据结构设计

      2.  文件结构设计(基于数据结构)

      3.  核心算法实现(基于数据结构)

      4.  测试

      4.5 效率分析以及优化

      5.  总结

 

 

总结

      项目总体上难度不高,核心算法非常经典,实现较容易,但是对于数据结构和文件结构(文件读写)方面,以及如何营造一个较好的用户体验环境方面,有不少值得推敲的地方.

 

猜你喜欢

转载自www.cnblogs.com/Sirius-Z/p/11564181.html