软件工程第二次结对作业

四则运算生成器

任务

  • 能够自动生成四则运算练习题
  • 可以定制题目数量
  • 用户可以选择运算符
  • 用户设置最大数(如十以内、百以内等)
  • 用户选择是否有括号、是否有小数
  • 用户选择输出方式(如输出到文件、打印机等)
  • 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)

任务分工

  • 驾航员:黄婕
  • 领航员:田玉燕

Coding代码连接

设计思路

  • 本次项目采用C++类实现的,先随机产生数字和符号(数字和符号都用数组保存且成对出现,将最后的“=”当做符合~~~),然后进行括号的添加,题目的生成,刚开始拿到题目时我和我的小伙伴采用分工的形式,我准备先把代码写完再给她进行测试,刚开始前两天通过百度查找资料,慢慢的进入转态,然后理清思路后开始分函数实现,期间,在考虑括号问题时我总有问题(将近放弃,难受),我的领驶员看见我的烦躁之后不断的给我信心,并督促我一点点的完成,不过很遗憾的是我没有实现图形画界面的实现和生成四则运算的结果,不过我觉得我和我小伙伴一块完成了基本问题还是很有满足感,不过要学的东西何其多,我还是要努力的学习,加油。。。。。

  • 随机产生符号和数字

void  T::initmath(int max, int a0, int a1, int a2, int a3, int &i, int a4)
{

	int j, k = 0, m = 0, z;
	i = rand() % 3 + 1;
	for (j = 0; j < (i * 2 + 1); j++)
	{
		if (j % 2 == 0)  //偶数位为数
		{
			z = rand() % 2 + 1;//1 2
			if (z - a4 == 0)  //a4=1 小数和整数都随机
			{
				b[m] = (rand() % max + 1)*0.1;
				m++;
			}
			else     //a4=0 只有整数
			{
				b[m] = rand() % max + 1;
				m++;
			}
		}
		if (j % 2 != 0)  //奇数位为符号
		{
                	a[k] = initoperator(a0, a1, a2, a3);  //取符号
                        k++;
		}
	}
	a[k] = '=';
}
  • 括号的添加
void T::setbrackets(int b, int c)
{
	int  lengh;
	int i;
	lengh = strlen(a);
	for (i = lengh - 1; i >= b; i--)
	{
		a[i + 1] = a[i];
	}
	a[b] = '(';
	for (i = lengh; i > b + c; i--)
	{
		a[i + 1] = a[i];
	}
	a[b + c + 1] = ')';
}
  • 题目的生成
void  T::show(int a6, FILE *fp)
{
	int j = 0, i = 0;
	if (a[0] == '(')
	{
		cout << a[0];
		if (a6 == 1) fprintf(fp, "%c", a[0]);
		i++;
	}
	while (b[j] != 0)
	{
		cout << b[j];
		if (a6 == 1) fprintf(fp, "%.2f", b[j]);
		if (a[i] == ')')
		{
			if (a[i + 1] != NULL)
			{
				cout << a[i] << a[i + 1];
				if (a6 == 1) fprintf(fp, "%c", a[i]);
				if (a6 == 1) fprintf(fp, "%c", a[i + 1]);
				i = i + 2;
			}
			else
			{
				cout << a[i];
				if (a6 == 1) fprintf(fp, "%c", a[i]);
				i++;
			}
		}
		else
		{
			cout << a[i];
			if (a6 == 1) fprintf(fp, "%c", a[i]);
			if (a[i + 1] == '(')
			{
				cout << a[i + 1];
				if (a6 == 1) fprintf(fp, "%c", a[i + 1]);
			}
			i++;
		}
		j++;
	}
}

运行结果截图

  • 不取小数保存到文件

  • 取小数不保存到文件

伙伴评价
  本次这个项目的的领航员是田玉燕同学。
  刚开始,我们两个进行了计划的分工,我是驾驶员,她是领航员,在编程中,领航员能够认真的对我的工作以及代码进行很好的监督,也给我提出了许多很有效的编码技巧和部分功能的实现方法,能够及时和我讨论出现的问题,在编程结束后,领航员能够和我进行程序的审核,看看各部分功能是否都已经实现,提出改进的建议。代码写完后也能很负责的进行单元测试。总之,这次的结对编程,领航员起到了至关重要的作用,从初期的设计到完成等,如果没有领航员的监督指导,一个人是很难很好的完成这么多的工作的,也非常感谢能够和他一起合作。

个人收获
  本次作业中,虽然基本上完成了任务,但作为一个合格的计算机从事者我们要学的的东西很多,只有不断地学习实践才能有所收获,我觉得我对网页这方面感兴趣,所以我要不断地学习来充实自己,我可以的,加油!!!!!!!

posted @ 2019-05-03 20:04  Yu&han  阅读(203)  评论(0编辑  收藏  举报