软件工程(2018)结对编程第2次作业

  • 设计要求

    • 现有一新建办公大厦,共有21层,共有四部电梯,所有电梯基本参数如下表所示,其使用规定如下:
      • 楼层号为0~20,其中0号为地下一层
      • 有楼层限制的电梯不在相应楼层停靠,如单双层
      • 所有电梯采用统一按钮控制
      • 请根据上述要求设计并实现一个电梯控制程序,如果有图形显示就更好了。

      • 电梯编号可服务楼层最大乘客数量最大载重量
        1全部楼层10800 kg
        2单层10800 kg
        3双层10800 kg
        4全部楼层20200 kg
  • 成员定位

    • 驾驶员:张洁
      能够完成全部代码工作,程序基本实现全部要求功能,并将代码上传至coding.net或者GitHub代码托管系统中(15分)
      能够对导航员在本次编程工作中起到的作用给出客观评价,并完成500字以上的总结(5分)
    • 驾驶员:刘子博
      能够辅助驾驶员完成全部代码工作,并且为关键函数选用合适的覆盖标准设计测试用例,并编写代码进行单元自动测试(10分)
      能够根据上次作业的代码检查表对驾驶员的本次工作进行评价(5分)
      能够对本次工作完成500字以上的总结(5分)
  • 总结

    • 关于代码
      做之前是想着复习一下Swing,顺便觉得实现电梯逻辑功能很有意思就选了这个题目,但做起来之后发现电梯逻辑实现并没有想象中那么简单,且题目要求四座电梯运行,也就加大了实现难度。
      本题的要求是实现对四部电梯运行的控制,其中两台电梯是全部楼层服务,两台电梯是单/双层服务,因此,我首先建立了一个Elevator类,也就是电梯类,应用了集合类里面的list,相当于C语言中的链表,链表中的元素就是Elevator。
      功能基本实现之后发现代码较为冗余与耦合严重,于是便使用Spring的Ioc与Aop稍微降低了代码冗余和耦合。

电梯类中对于“能否前往该楼层”、“是否达到了最大载客量”以及“是否达到了最大载重量”进行了明确的说明;

     - Elevator中有一个元素是nowFloorNum,也就是当前该电梯所在楼层,这个元素是一直都在改变的,每次移动完电梯都会改变,这样的话每次输入完成以后电梯就不是在初始化的0层;
     - 电梯的list每次输入完毕以后都会进行排序,以电梯中betweenNum属性大小排序,而betweenNum元素则是该电梯与要去楼层的距离,以层为单位,例如当前该电梯在5层,要去楼层7,所以betweenNum的值为2层,排序就是List四个电梯对象以between升序排序,那样List中第一个元素永远都是距离该楼层最近的那一个电梯。排序完成的List会被送去判断是否符合能到达该楼层,乘客量是否超出,载重量是否超出,这三个判断都是三个方法,以返回布尔值来判定是否符合要求,若有符合要求的电梯则会在电梯移动完毕之后在有一个文本框中显示已到达,若没有符合要求的就显示无法到达。 - 一些小麻烦 - 为了让代码能仿真电梯一层一层达到楼层,我在编写过程中加了延时和界面重绘,但不知道为什么就是不能逐层移动,只能一下就移动到要去楼层,debug也这样,实行要重绘语句之后还是无法显示,以后有时间的话会进行更进一步的编写和优化。 - 移动电梯只写了1号电梯和2号电梯,内容基本差不多,时间问题以后还会继续编写和优化,现阶段的代码基本可以实现要求。 - 本来还想实现多线程同时控制多个电梯,最后还是因为时间原因没法实现了。 

单元测试只能通过运行代码来实现,因为操作界面需要输入和按按钮,所以没有办法自动测试。
- 因为Eclipse出了一点小问题,所以本次代码的编写使用idea创建。

 - 运行界面展示
电梯参数已经预设好了,图中的操作界面蓝色的那四个的按钮代表四个电梯当前位置,要求输入的是1.去的楼层,2,本次乘坐的乘客量,3,本次载重量;输入完毕之后会自动找到距离要去楼层最近的电梯,然后前往该楼层。

  • 对伙伴的评价
    伙伴刘子博同学对我帮助很大,她实现了图形界面的部分构造与测试设计,为我们完成此次作业做了很大贡献。伙伴的代码简洁工整,给人一种看上去就很舒适的感觉,不过可能刚学习java这门语言没多久,有小部分知识还无法灵活使用,不过也都不是什么大问题。总的来说,能和伙伴一起完成此次作业实属有幸,期待下次合作!

  • 代码清单
    代码清单

转载于:https://www.cnblogs.com/zj2297462326/p/8847662.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值