您的位置:首页 > 编程语言

第二次作业--结队编程1 (101 109)

2017-03-14 21:37 423 查看

201421123101 曾丽君 201421123109 王钧任

【Coding地址】(https://git.coding.net/zlj201421123101/The-second-assignment.git

一、题目描述

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

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

二、需求分析

1、实现历史对错题数记录;
2、有计时功能,能显示用户开始答题后的消耗时间;
3、界面支持中文简体/中文繁体/英语,用户可以选择一种。

三、思维导图



四、主要代码说明

1、判断答案是否正确并输出:

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;
}

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

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

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

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);
}

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

void c1::OnButton3()
{

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

五、功能实现截图













六、小结

代码中对于界面支持多种语言的设计还存在不足,如果发现该功能代码中有需要修改的地方,每种语言都需要去进行修改。对于结对编程是否真的能够带来1+1>2的效果,通过这次结对编程,我有了深刻的体会。在本次结对编程作业中,我们的主要讨论地点是图书馆,由我负责把控全局,进行架构上的设计,队友负责具体敲键盘实现代码。在队友敲代码时,我进行反思这部分代码有什么问题,哪里可以进行优化,与其他部分的关系是什么,下一步应该如何进行处理。结对编程的过程收获颇多,我觉得结对编程有好有坏,但是好处远远大于的不好的地方。两个人难免会遇到意见不同的时候,关键是看此时如何协调、如何沟通、如何采钠。如果团队协调得很好,那么两个人的力量是绝对大过一个人的。结对编程可以很好的起到督促的作用,这主要是因为有的时候如果一个人编程,可能会出现懈怠的情绪,而两个人共同编程会互相激励,起到促进作用。在个人编程时,有时会出现对整体架构把握不清的情况,这时如果能跟队友共同讨论分析,会大大加快理解以及设计的速度,能够使代码质量得到极大的提升。

PSP2.1Personal Software Process StagesTime (%) Senior Student(/hour)Time (%)(/hour)
· Planning计划2.5h2h
· Estimate估计这个任务需要多少时间34h44h
· Analysis需求分析 (包括学习新技术)3h4h
· Coding Standard代码规范1h1h
· Design具体设计3h3h
· Coding具体编码25h30h
· Test测试(自我测试,修改代码,提交修改)1.5h2h
Reporting报告1h2h
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: