题目描述
我们在个人作业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:结对编程中,代码的规范还是挺重要的!