相同部分
1)两位合作者的学号和对应的博客主链接
赵畅:111500206
胡绪佩:031602114
2)描述实现设计思路
首先一拿到这次作业的时候,目的大致分为两块
a.随机生成一个四则运算表达式(即运算数以及运算符都要是随机的)提供给用户填写答案。
b.将生成的随机表达式(运算式)计算出结果,核对用户填写的答案。
根据这两个大的分块思路,我们将题目分块化处理编写,程序大的模块分为,题目模块,外部函数,主函数三个。(因为这次的作业我们是合作完成,而我的搭档是一位经验较丰富的大哥,所以很多大致的思路是大哥一开始提出来给予我引导的)下面是实现设计过程中的一些技术性难点
- 生成随机数:显然这个是以前很少接触的一个知识点(对我来说),得靠自学的,而在自学自用的时候肯定就会发现问题:会出现伪随机和真随机的区别。也就是时间种子方面的修改(这个我只是明白,但是自己还没有对其种子修改,但是之后会加入弥补的计划里)
- 如何存储并显示运算表达式,如果试过的就会发现用数组是很麻烦的,因此我们采用了用string类来存储表达式。
在表达式中出现数字10的特殊情况以及括号的添加(如果用数组)
- 在表达式中运算符出现除号要考虑被除数不能为0的情况(包括括号内两个数之间以及括号外两个括号值之间)
结果或者是中途出现不能除尽,值为分数的情况要排除。
将表达式(中缀表达式)(我们的思路它是一个字符串)计算出结果(这里头我们用的方法为逆波兰表示法,其中就要用到栈的知识)
这是我的笔中的一块截图。
我们团队的编码规范已经放在GitHub()上,其中一开始我对于这个编码规范是不是很懂意思的,后来畅畅给了我很多指导,我也主要修改完成我们的编码规范,让我从中学到了很多,我们的代码规范订制方式是通过网上找了一篇比较齐全的代码规范,然后对其进行大规模改动,最后成为我们的代码规范。
下面简单的举几个学到的我认为帮助很大的点:
- if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
- 程序必须具有一定的注释,便于对程序的理解。注释需要简介明了准确,不然有可能起反作用。一定要边写代码边注释(尤其本次作业中的一次长时间我和畅大哥的远程演示分享一起debug的过程,让我体会更深了)
- 标识符命名原则。变量:采取小驼峰法(即除第一个单词不用大写,其他单词开头都要大写),函数名、类名:采取大驼峰法(所有单词开头字母都要大写),数组名:采取小驼峰法,并且用下划线分隔单词。
- 操作符+,=,以及逗号等等后面要加空格,方便阅读。
4)程序实现和结果测试的截图:
//这是我做我的模块的时候的一张截图。
//这是最开始畅畅大哥安排我先学习一些准备知识的时候,//我单独自己尝试的运行截图
//这是我们的程序最后成功运行的中英文界面截图。
5)GitHub上提交的链接和提交日志截图
因为这次的作业我们团队是以我的搭档为主心骨共同合作的,我提交的是在我们的开发分支dev上,最后畅畅提交到master分支。
本次作业的
6)本次作业的分工以及证据截图
本次作业的分工,前面也有说我的搭档是一位经验较丰富的大哥,所以以他为主心骨。我负责了ExtendFunction.h的大部分内容以及我们的代码规范doc文件的大部分,最后畅畅大哥帮我检查润色修改了一些。畅畅负责的是几个这次作业的难点,main.cpp,Expression.h,stack.h三个部分(并非我就是什么都不管的,同时我是在学习这些知识点的,最后才能和畅畅大哥的模块接好口,有很多是畅畅大哥督促建议我学习的,收获可很多)
对于证据截图,看我们的组合,大家应该可以猜到,差距是比较大的,所以在一开始的时候大哥就安排我事先学习一些知识点,最后再协作完成这次作业。而在我们学习合作的过程中,基本上每天我们都会联系一个小时以上(首先了解对方当天做的事情,然后我会问一些当天学习遇到的疑问看畅畅大哥能否帮忙解答)。
最后有一天晚上我们奇迹般的远程演示联系了3个多小时,当天我们一起debug了好久,最后终于把整个程序大致整理好了,我们都很开心,后面就发布了传说中预览版哈哈。下面这几张图可以给大家欣赏一下:
当天晚上我们就都是4点钟才睡的。
差异部分
1)合作过程:
我和畅畅大哥一起合作的之后,一开始我有很多知识点是比较弱的,大哥就先安排我学习了一些十分重要的知识,仅仅就是那份那份代码规范也让我收获很大()。最后我也成功的实现了和畅畅大哥的程序模块对接,这个过程中,收获是难以形容的,尤为重要的有,题目模块化,函数细分到最简单,debug一定要坚持,遇到问题最好以自学自查的方式解决。最后我们在15号下午发布了该程序的最终版本!
合作体会:
积极参与思考,工作。
每次的合作都必须以合作者的身份积极加入思考,参与工作,才能做出最好的合作结果并且收获到最多。就说这次的作业,我其实参与或是不参与影响不是吧很大的,但是首先这是一个团队作业,合作过程,我必须积极参与,另外我要想学习到很多,收获很多就必须积极参与,我觉得这次我做的还没有很好,但是也收获了很多,有了很大的进步。- 好的搭档。我想每次的合作团队都是要每个成员都有积极性,有责任心,并且有各自的优点。就比如说这次我的搭档畅畅,我觉得是一位非常好的大佬及搭档,积极性高,i经验丰富,而且乐于帮助我这个渣搭档。
- 平时编码的细节注意点,就比如说这次的编码规范中的很多东西是要在平时就养成习惯的,再合作的过程中这个很重要的,因为要方便对接。
善于学习,这次作业的完成过程中,有很多需要自己自学自查自用的东西,只有善于学习,才能做好自己的任务,实现更好的合作。
我认为本次作业的我们还有一些没做到位的点:
Github上我们的协作编码的pull与clone这些一开始没有很熟,所以就忽略了,后面才注意用到Github上有这些十分方便的功能。
没有实现附加分的真分式的运算。