代码地址

题目描述

我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序。进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。在下面的功能需求中实现两个:

记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
有计时功能,能显示用户开始答题后的消耗时间。
界面支持中文简体/中文繁体/英语,用户可以选择一种;

结对分工

109 王钧任    
101 曾丽君

思维导图

主要代码实现

随机生成题目的代码就用上次的稍加修改就可以了。

判断答案正确并输出:

char * edaanpanduan(char daan[],char * shuru,char * timu)
{
	static char panduanjieguo[30];
	FILE * in ,* out,* cuoti;

	in=fopen("leijitimushu.txt","r");
	fscanf(in,"%d,%d",&eright,&ewrong);
	fclose(in);


	if(strcmp(shuru,edaan)==0)
	{
		strcpy(panduanjieguo,"Right!");
		eright++;
		
	}
	else
	{
		strcpy(panduanjieguo,"wrong!");
		strcat(panduanjieguo,"Answer is:");
		strcat(panduanjieguo,edaan);
		ewrong++;
		cuoti=fopen("cuotiji.txt","a");
		fprintf(cuoti,"%s=%s  wrong!Right answer is %s\n",timu,shuru,edaan);
		fclose(cuoti);
	}

	out=fopen("leijitimushu.txt","w");
	fprintf(out,"%d,%d",eright,ewrong);
	fclose(out);



	return panduanjieguo;
}

实现生成题目的按钮触发事件:

void c1::OnButton1() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	m_etimu=etimushengcheng();
	UpdateData(false);
	estart=clock();
}

实现提交答案并判读输出的按钮:

void c1::OnButton2() 
{
	// TODO: Add your control notification handler code here
	extern char daan[10];
	char s[20];
	UpdateData();
	char *shuru =m_eshuru.GetBuffer(m_eshuru.GetLength());
	char *timu=m_etimu.GetBuffer(m_etimu.GetLength());
	m_edaan=edaanpanduan(daan,shuru,timu);
	efinish= clock();
	eduration =(double)(efinish-estart)/CLOCKS_PER_SEC;
	sprintf(s,"%g",eduration);
	m_eyongshi=s;
	itoa(eright,s,10);
	m_eright=s;
	itoa(ewrong,s,10);
	m_ewrong=s;
	UpdateData(false);
}

按下按钮打开错题集文本:

void c1::OnButton3() 
{

	::WinExec("notepad.exe cuotiji.txt",SW_SHOW);
}

功能实现截图:


小结

1:与队友第二次合作,但是这次的合作没有那么顺利。
2:结对编程中,代码的规范还是挺重要的!

PSP