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

1

本程序由14061041谷大鑫和14061035崔正龙共同编写。

github项目网址:https://github.com/nrm1/subway_GUI

注:由于之前github管理的问题,我与崔正龙同学的代码均为手动合并,初步完成后才由我上传,因此github上提交记录次数较少,而且全由我提交,提交时间也比较晚,但实际上我们从一接收到题目就开始编写题目了。

本程序使用方法:

subway_GUI.exe (输入线路名则输出整个线路站名)

subway_GUI.exe -b 知春路 北京西站(输出最短路径)

subway_GUI.exe -c 知春路 北京西站(输出经过换乘站最少)

subway_GUI.exe -g (打开图形界面)

注:演示动画在线路展示完全后等待6s会自动退出

2

结对编程中的我们

结对编程优点:

  1. 程序员互相帮助,互相教对方,可以得到能力上的互补。
  2. 可以让编程环境有效地贯彻Design。
  3. 增强代码和产品质量,并有效的减少BUG。
  4. 降低学习成本。一边编程,一边共享知识和经验,有效地在实践中进行学习。
  5. 在编程中,相互讨论,可能更快更有效地解决问题。

结对编程缺点:

  1. 对于有不同习惯的编程人员,可以在起工作会产生麻烦,甚至矛盾。
  2. 有时候,程序员们会对一个问题各执己见(代码风格可能会是引发技术人员口水战的地方),争吵不休,反而产生重大内耗。
  3. 两个人在一起工作可能会出现工作精力不能集中的情况。程序员可能会交谈一些与工作无关的事情,反而分散注意力,导致效率比单人更为低下。
  4. 结对编程可能让程序员们相互学习得更快。有些时候,学习对方的长外,可能会和程序员们在起滋生不良气氛一样快。比如,合伙应付工作,敷衍项目。
  5. 面对新手,有经验的老手可能会觉得非常的烦躁。不合适的沟通会导到团队的不和谐。
  6. 新手在面对有经验的老手时会显得非常的紧张和不安,甚至出现害怕焦虑的的精神状态,从而总是出现低级错误,而老手站在他们后面不停地指责他们导致他们更加紧张,出现恶性循环。最终导致项目进展效率低下,并且团队貌合神离。
  7. 有经验的人更喜欢单兵作战,找个人来站在他背后看着他可能会让他感到非常的不爽,最终导致编程时受到情绪影响,反而出现反作用。

个人在结对编程中的优点:

  1.性格和睦友善,愿意与结对伙伴沟通。

  2.为人处世理智,当发生争执时愿意做出一定妥协从而解决实际问题。

  3.言语诙谐幽默,能与结对伙伴保持良好关系。

个人在结对编程中的缺点:

  1.技术能力差,专业水平不高,拖累团队整体效率。

结对伙伴在编程中的优点:

  1.曾参加过团队开发,具有一定经验。

  2.做事态度认真,一丝不苟。

  3.编程水平高,写代码效率高,而且愿意花费大量的时间去完成我们的结对项目,为我们团队做了很多贡献。

结对伙伴在编程中的缺点:

  1.结对伙伴虽然编程能力很强,但他对C#这门语言熟练度不够,对项目开发有一定影响。

3

Information Hiding, Interface Design, Loose Coupling说明怎样利用这些好的设计

信息隐藏:首先,要交流私有变量时,要用事先设计好的方法来访问,这样如果我们在其它类里面调用另外一个类的私有变量,那么我们必须定义一个获得该类私有变量的方法;要在另一个类里面改变另外一个类里面的变量时,我们也要定义一个改变该类私有变量的方法。

接口设计:一个好的接口能够提供给后面的程序设计一个良好的框架,在这次地铁项目中,我就实现了一个图形化界面的接口,后台请求只需要调用我的接口就可以打开图形界面,而不用关心具体的实现细节;这样我们的软件测试也变得更简单了。

松耦合:这种类与类之间依赖性低的设计方法,可以在设计一类时,可以不用担心破坏另外一个类。当代码有改动时,可以不用大规模的改动我们的代码,我们只用定位于一个出问题的模块,然后对其进行更改就好了,而且能做到不改变其它模块。

信息隐藏、接口设计、松耦合都是面向对象设计的重要方法,充分使用这些方法,有助于在团队项目中更好的合作,设计出更好的代码结构。

4

契约式设计的优点

  1.获得更优秀的设计

  2.提高可靠性

  3.更出色的文档

  4.简化调试

  5.支持复用

契约式设计缺点:

  1.契约的一些开销较大,限制较大,目前的主流语言中,只有Eiffel支持契约

  2.契约的撰写成本太高

  3.需要大量的实践

我是如何把契约式设计融入我们的作业中的?

  我们在划分任务的时候已经尽量保障模块之间信息交互不是很频繁,而在必要的参与信息交互的部分,我们严格按照契约式设计方法认真严肃的讨论并商定了方法的输入参数格式和输出结果信息格式,保证了信息交互的完整性和正确性,从而使我们的程序能够正常运行。

5

VS unit Test测试通过

6

UML类图

7

算法的独特之处

在编写UI的时候,由于需要动画演示,因此需要使用多线程,但UI组件自身为了保障线程安全,不允许在子线程中进行修改,因此,我使用了BeginInvoke函数将子线程中对UI组件的操作返回到了主线程中执行,解决了多线程的问题。

在编写搜索算法的时候,我们实现的是宽度优先搜索算法,由于已经有了上次的经验,这次实现起来相对比较容易,算法也精简了不少。

时间: 2025-01-09 10:47:39

结对项目-地铁出行路线规划程序的相关文章

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

结对人员:杨金键 谢振威 金豪(顺序无特殊含义,仅因照片从左到右这个顺序) 结对编程优点:及时发现bug,纠正编程习惯,及时纠正可能带来问题的编程思路 缺点:效率太低,时间开销大. 个人优点: 金豪:积极主动,想法灵活,认真学习 谢振威:刻苦努力,代码质量高bug较少,认真负责 杨金键:认真刻苦,勤于实践,思路明了 个人缺点: 金豪:遇到奇怪问题.. 谢振威:闷声发大财 杨金键:眼高手低,当修复bug的时候经常改这里忘了那里,导致产生新的bug..动手能力还是太差了. 设计方法: 在动手写代码之

结对项目—地铁出行路线规划

结对项目—地铁出行路线规划 我的搭档:陈鸿超 14061216 https://github.com/ChengFR/PairProgramming_SubwayRoute- 会在十一期间发布新版本 结对编程体会: 结对编程的优点: 站在软件开发的角度,两个人共同面对同一台电脑进行开发,无论是效率还是软件质量都要超过一个人进行开发的情况. 对于还处于学习阶段的年轻软件开发者来说,结对编程是一个很好的互相学习的机会 结对编程时动力.责任感更强 结对编程的缺点: 对于我们来说,寻找两个人共同的时间进

软件工程个人项目-地铁出行路线规划程序

项目前时间预测(非附加要求): PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 6.5h Development 开发 · Analysis · 需求分析 (包括学习新技术) 20min · Design Spec · 生成设计文档 - · Design Review · 设计复审 (和同事审核设计文档) - · Coding Standard · 代码规范 (为目前的开发制定

个人项目-地铁出行路线规划程序

PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 1day Development 开发 · Analysis · 需求分析 (包括学习新技术) 10min · Design Spec · 生成设计文档 1min · Design Review · 设计复审 (和同事审核设计文档) 1min · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1mi

【软工个人项目-地铁出行路线规划程序】

---恢复内容开始--- 1.源代码地址:https://github.com/qiao1406/BeijingSubway 2.使用的语言:C++ 编程环境:Visual Studio 2015/Windows 8 64-bit 虚拟机(ps:自己的电脑上死活装不成功世界上最好的IDE,只好装在虚拟机上了 3.PSP表格-计划时间与实际花费时间 3.测试样例 具体详见GitHub,这里贴几个帮助我改正了bug的样例 3.1 -b 苹果园 土桥 1号线和八通线的换乘模式是[双换乘]即:四惠和四惠

地铁出行路线规划程序

工程:实现一个帮助进行地铁出行路线规划的命令行程序. 使用PSP表格记录预估将在程序的各个模块的开发上耗费的时间. PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 10h Development 开发 · Analysis · 需求分析 (包括学习新技术) 30min · Design Spec · 生成设计文档 无 · Design Review · 设计复审 (和同事审核设

个人项目-地铁出行路线

---恢复内容开始--- 地铁出行路线 https://github.com/ChengFR/PersonalProgram_SubwayRoute 时间预期 PSP 2.1 Personal Software Process Stages Time Planning 计划 · Estimate · 估计这个任务需要多少时间 Development 开发 · Analysis · 需求分析 (包括学习新技术) 3h · Design Spec · 生成设计文档 1h · Design Revie

个人项目-地铁出行线路规划程序

PSP表格 PSP 2.1 Personal Software Process Stages Planning Time(H) Used Time(H) Planning 计划 0.5 0.25 · Estimate · 估计这个任务需要多少时间 0.5 0.25 Development 开发 25.5 45.9 · Analysis · 需求分析 (包括学习新技术) 10 13 · Design Spec · 生成设计文档 2 3 · Design Review · 设计复审 (和同事审核设计

个人项目-地铁出行路线规划的简要分析

guthub repositories 个人博客园主页 支持环境: windows7,10,macOS,Linux 需求分析: 读取自定义地铁文件: 程序需要能够成功地解析并载入不同的地铁系统,实现数据与程序的解耦 查看地铁线路: 实现地铁系统的详情查询操作 最短线路: 帮助用户推算出最优乘坐路线 实现思路: 所有数据文件都采用.csv的格式储存 站点名称, 所属线路及坐标, 是否开通 刘园, (1号线,0), 是 西横堤, (1号线,1), 是 果酒厂, (1号线,2), 是 西站, (2号线