结对项目-地铁出行路线规划程序(续)

结对编程:冯炜韬、杨子琛前端

 

  • 结对编程
  • 优势
    • 讨论可以使设计思路更清晰,避免因设计缘由致使的recoding
    • 编码时出现问题可以及时被发现,减小找bug的时间
    • 一人编码时,partner能够思考测试样例,双线并行
  • 缺点
    • 当一些时候,另外一我的可能比较浪费时间,好比工做量较大且多机械性操做,使效率降低
    • 对时间和地点要求高,在当今互联网时代,许多开源项目的合做者分布在世界各地,没法实现结对编程
  • 我本身
    • 优势:对软件结构有必定理解;有必定前端设计经验;有必定数据建模经验;有必定算法知识
    • 缺点:一般懒于寻找现成的代码工具包(主要缘由是这些包一般可能丢失某些东西或者依赖某些其余包,致使麻烦),致使各类问题可能要本身编码解决
  • partner(杨子琛)
  • 优势:有必定数据建模经验;有必定算法知识;有耐心;测试能力较好;能较快看懂别人代码
  • 缺点:???

(某结对编程情形)git

  • 契约式编程与UML
    • Design by Contract
      • 优势:能纵览全局,保证代码质量,减小重写
      • 缺点:增长设计时间,而且因为功能可能存在变化,始终不可以作到不改设计
      • 应用:并没有完整的契约式编程设计,可是习惯使用一种相似的方式进行:从主函数开始写起,从大至细,遇到能够封装的功能,先写函数头(完成该函数的输入输出约定,通常反作用不会影响编程),并不着急具体内容,当这一层的内容设计完毕,再从更细的一层开始写:即BFS式编程。
    • UML

 

    • 编程契约(Code Contract)
      • 为了更好地实现契约式编程或者其相似形式,必须对代码有形式化的要求,这便于管理,也便于工做交接
      • 这里项目较小,文档太费时间,因此仅在全局变量及方法中注意了命名知义,部分有注释
      • VS自带进行代码格式修改,所以代码格式统一
      • 并未进行约束验证
  • 设计
    • 功能设计
      • 保留以前的大部分功能(输出一条线路全部站点的功能除外), 新增显示地图(移动缩放及标记),显示推荐线路,切换城市三大功能
      • 用户体验部分新增许多细节可以使用户更上手
    • 界面设计
      • 采用“轻薄”设计概念,减小软件的复杂感,减小多余的边角边框,让软件中每个部分都简化到极致
      • 提供多彩的主题,缓解用户对界面的疲劳
    • 设计原则
      • 采起面向对象设计思路,高度接口化,成员所有私有,仅容许经过公有接口访问
      • 采起M/V两层结构,数据与界面高度分离,下降耦合度
  • 测试

对软件的正确性、完整性、安全性和质量进行了测试,对其功能的正确性、效率以及异常处理能力进行了验证。共进行了上百个功能正确性测试,并测试了十几种异常状况。最终程序顺利经过全部测试,测试结果以下图所示。因为软件限制没法检测代码覆盖率。github

测试结果:所有经过算法

  • 实现细节

 

 

*基础功能编程

 

 

 

 

**多城市支持安全

 

 

 

 

***多彩主题函数

 

  并未使用其余组件,仅使用MFC自带控件,减小软件调用库的数量(其实就是懒)工具

实现的算法关键:BFS搜索法、贪心算法、基本的坐标变换测试

功能列表:编码

  1. 三种模式推荐线路
  2. 显示线路具体图形,标注换乘站点,标注已经经过的站点,标注起末点
  3. 地图选点设定起末点
  4. 更换不一样城市的地图
  5. 更换主题(7色主题任君选择)
  6. 其余细节(支持一键互换起末点,显示站数和换乘数,双击listBox中的一项能够设定当前所在站点,支持空白处和顶部位置拖动窗体)

 

  • *附加
    • 采用自定义格式文件保存地图数据
    • 将数据模型设定为两类:单城市地图、城市列表
    • 城市列表类管理数据文件夹中的map.list以及对应城市包
    • 城市地图类管理单个城市的地图数据
    • 程序无需变动,只需添加新城市地图而且在map.list中注册信息,软件可自动载入地图数据

github:   https://github.com/Helicopt/metro

  • **一些狡辩解释
    • 为何不使用WPF等控件?A:对VS不熟,目前已经各类缺文件,若是再增长扩展,又不知道会报什么错,因为时间紧张,放弃使用WPF;同时,私觉得WinForm的控件已经足够使用,这个项目中WPF控件在功能上并没有较大优点,同时用丑的控件写出能看的界面的才是好前端(误。
    • 为何直接使用图片做为地图?A:显然本身画图颜值低(若是要好看还要学啥B样条曲线,并且增长地图坐标数量)啊,并且有图片我能够超高速增长地图包,简单来讲,你还在给线路分颜色的时候(线路颜色与官方不对应有损用户使用体验),我就作好了。至于扩展问题?地铁线路并不是地面公路,变化可能性极低,频率极低,扩展性并未减弱多少
    • 为何前面那些设计原则等写这么少字?A:感受定义什么的就不说了吧,上网一查一大把
相关文章
相关标签/搜索