结对作业 ——UI组第八组 冯富禹 齐天浩
·本次作业要求
·github地址
https://github.com/wazjx55/jieduizuoye
本次作业使用QT编写,思路是首先使用QT Creator创建图形界面,通过设置等原件设计按钮,文本框等必要的元素,来读取用户输入的各种参数以及输出题目,输入答案。
再通过转移到槽函数来编写事件发生后对应的相应,例如改变参数的值。
与CORE组的对接时,首先将用户输入的QString变量转换成Sring变量,再将其装换成int变量,与Setting等函数进行对接。
·成果展示
初始界面
仅支持加法运算设置
提交结果
将各种运算加入之后生成的题目
错题记录
在经过页面设计之后,我们把界面进行了美化
与耿子刚组对接的界面
与李浩冉组对接的界面
·时间分配
项目 | 计划用时(分钟) | 实际用时(分钟) |
计划项目 | 60 | 120 |
开发 | 1440 | |
·需求分析 | 60 | 60 |
·项目构思 | 60 | 120 |
·生成设计文档 | 120 | 60 |
·具体设计 | 120 | 60 |
·具体编码 | 600 | 720 |
·代码除错 | 300 | 900 |
报告 | 60 | 60 |
·项目报告与总结 | 60 | 60 |
总计 | 1560 | 2280 |
·心得体会
本次项目遇到的最大的问题就是QT使用不熟练,因为以前从来没有接触过QT,导致在结对编程一开始的时候安装软件就耗费了一下午的时间,然后发现QT中使用的语言和类是我们之前从来没有接触过的,由于时间紧迫,只能边看教程边实验性的编写。学习各种槽函数的输入和输出,还有事件的连接与调用方式。
遇到的最大的一个bug就是QT编辑器在进行编译的时候貌似只通过文件名来识别,而由于习惯不好,我们在改动各个版本的时候只改了文件夹名字,而并没有改变文件名字,因此在改动文件的时候由于名字没变,导致编译器认为是之前的版本,运行结果是之前没改动的版本,由于这个bug我们耗费了大量的时间去检查代码。
在设计倒计时功能时,因为使用两个定时器耦合的方式,导致有些情况下倒计时发生加速的bug,最后发现是因为没有将输入情况进行分类,在分类之后,分离出仅输入一道题,最后一道题未作答两个特殊状态,通过判断各种情况,改变槽函数的连接方式,最终解决掉这个问题。
以上bug的产生原因大多数都是来自于对于编译环境的不熟悉和写代码时有一些平时编程时的不良习惯没有纠正过来,再加上QT使用c++为基本语言,这是我们两个人都没有接触过的,导致了浪费了大量的时间。
通过这次结对编程我了解到了艺多不压身这个道理,懂得越多,在以后的工作岗位上就会有更加方便的资源可以利用,如果我们在之前就已经学习过c++和QT的话,相信可以节约很多的时间,而且一定要改正编程时的一些不良习惯,不要图省事图方便,这样最后浪费的还是自己的时间,在管理多个版本时要多实用github等工具,常改文件名。在编程的时候要考虑多种情况,不要想当然的相信客户输入的都是合法数据,反复强化自己程序的鲁棒性。
·结对编程的意义&课程建议
结对编程对于我们来说是十分有意义的,在编程中难免遇到bug,一个人编程可能突然大脑短路导致浪费大量时间,但是结对编程两个人可以相互提醒相互帮助,而且在学习新内容的时候可以各自学习一部分,然后互相讲解,这样可以大幅缩短学习的时间。
这门课程已经过去了一半左右的时间,感觉确实学习到了软件开发所必备的只是,但是感觉文字类作业过多,老师上课讲解的内容有些过于职场化,对于我们学生来说有些遥远,个人认为在课上应该更多地介绍常用软件的使用方法,网页前后端开发语言的设计等实用性知识,这样可以大幅降低我们今后团队开发的压力和学习新知识的时间。