结队编程1-四则运算(107、120)
[码市链接]https://git.coding.net/Luojiening/Teamwork1.git
a.需求分析
将这个程序做成GUI(可以是Windows PC 上的,也可以是Mac、Linux,web,手机上的),成为一个有基本功能、一定价值的程序。
1.记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算;
2.有计时功能,能显示用户开始答题后的消耗时间;
3.界面支持中文简体/中文繁体/英语,用户可以选择一种。
b.功能设计
1.生成自定义数目算术题。
2.支持整数和分数的加减乘除。
3.输入答案后判断对错,错误后写出正确答案。
4.记录用户的对错总数,并且在以前的基础上进行增量计算
5.中英文切换。
6.计时功能
思维导图:
c.代码展示
程序中判断正误的代码如下``` char* Submit(char result[],char * answer) { static char prompt[20]; FILE * in; FILE * out; in=fopen("number.txt","r"); fscanf(in,"%d,%d",&right,&wrong); fclose(in); if(strcmp(answer,result)==0) { strcpy(prompt,"正确!"); right++; } else { strcpy(prompt,"错误! "); strcat(prompt,"正确答案是:"); strcat(prompt,result); wrong++; } out=fopen("number.txt","w"); fprintf(out,"%d,%d",right,wrong); fclose(out); return prompt; }
计时功能的代码如下:
``` void chinese::OnButton() { // TODO: Add your control notification handler code here UpdateData(); m_Show1=Draw(); start=clock(); UpdateData(false); } void chinese::OnButton_Submit() { // TODO: Add your control notification handler code here finish= clock(); duration =(double)(finish-start)/CLOCKS_PER_SEC; sprintf(temp,"%g",duration); m_Show3=temp; UpdateData(false); } ```
通过按钮选择语言的代码(主界面到中文界面)
``` void CTeamworkDlg::OnChinese() { // TODO: Add your control notification handler code here chinese chinese; CTeamworkDlg::OnOK(); chinese.DoModal(); } ```
d.程序运行截图
psp:
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student(/hour) | Time (%)(/hour) |
· Planning | 计划 | 2.5 | 2 |
· Estimate | 估计这个任务需要多少时间 | 40 | 54 |
· Analysis | 需求分析 (包括学习新技术) | 3 | 3 |
· Coding Standard | 代码规范 | 1 | 2 |
· Design | 具体设计 | 2 | 3 |
· Coding | 具体编码 | 32 | 44 |
· Test | 测试(自我测试,修改代码,提交修改) | 1 | 1 |
Reporting | 报告 | 1 | 1 |
e.实验小结
对于这次的实验,首先得承认一点,自己很“躺”(就是抱到大腿的意思),本来我想用java来改写自己上次的代码,但是写出了一个基本的图形界面后其他的功能就很难进行,然后为了响应“结队编程”的号召,我就向队友杰宁学习,他是用vc++里的MFC来做图形界面的,不得不说用mfc做图形界面果然麻烦的很。至于结队编程的好处就是遇到问题时可以两人一起上网找资料然后讨论并改进,效率会更高一点,不如一个人来的枯燥乏味!