第二次作业--结队编程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.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 |