201421123101 曾丽君 201421123109 王钧任
一、题目描述
我们在个人作业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.1 |
Personal Software Process Stages |
Time (%) Senior Student(/hour) |
Time (%)(/hour) |
· Planning |
计划 |
2.5h |
2h |
· Estimate |
估计这个任务需要多少时间 |
34h |
44h |
· Analysis |
需求分析 (包括学习新技术) |
3h |
4h |
· Coding Standard |
代码规范 |
1h |
1h |
· Design |
具体设计 |
3h |
3h |
· Coding |
具体编码 |
25h |
30h |
· Test |
测试(自我测试,修改代码,提交修改) |
1.5h |
2h |
Reporting |
报告 |
1h |
2h |