1.需求分析 :目标群众是低年级小学生,所以第一个需求目标是实现自动生成十道100以内小学生可以做的两个操作数的四则运算题;
其次,为保证每个题都有意义,剔除重复的算式;
接下来,学生需要的题目数量是不固定的,所以应该实现定制数量;
在接下来,学生的自身数学程度不同,应该实现可以定制是否包含乘除法,操作数的范围大小,操作数是否为负等问题,来针对不同程度学生制定教学目标;
最后,从需求分析,学生的主要学习任务是在于课堂中,不可能一直要盯着电脑或手机来使用程序,所以程序应有可以定制完目标后存储的功能;
2.功能设计:根据上述的需求分析,程序应完成上述五大条基础功能,并有自身的扩展功能。目前来说,对程序制定了可以带参考答案的功能,这样学生可以充分自检。还有题号功能,这样能使我们的数学题集变得清晰;因为我们的目标是二年级小学生,所以如多个操作数及带括号计算等等的功能,实现只需将代码扩展即可实现,但不适合二年级小学生,若程序反响良好,可以进一步根据不同目标不同需求推出针对更高年级学生的版本。
3设计实现:因为本程序是基于c语言编写的。使用了如下几个函数:printf输出函数负责输出功能,scanf输入函数负责输入功能,fopen文件函数负责打开文件,fprintf输出函数负责将我们的题存入文件中,srand函数负责生成随机数种子,rand函数负责生产随机数,if if else for while 等等负责我们的一些语句控制,循环建立等等
4:测试运行:
第一张图我们可以看到我们可以仅通过一个简单的数字即可布置我们的要求,第二张图就是我们定制的带答案的题已被存入我们预定的文件中;
5:部分代码粘贴:
for (i=0;i<n;i++) a[i]=i+1; for (i=0;i<m;i++){ w1=rand()%(n-i)+i; t=a[i]; a[i]=a[w1]; a[w1]=t; }
这一段代码是我们预先随机然后去重的操作数组a;
for (i=0;i<m;i++){ fuhao=rand()%(4+f)+1; if(fuhao==5){ fushu=rand()%2+1; if(fushu==1){ a[i]=-a[i]; jieguo1[i]=a[i]+b[i]; fprintf(fp,"第%d题为:%d + %d = \n",i+1,a[i],b[i]);
这一段是随机取运算符的一部分,还包括如果需要定制带负数通过f即可随机到带负数的部分,这么做可以省大量的篇幅;
6.总结:
在编写代码的过程中,因个人基础薄弱,花费了不少时间,不是去重失败,就是计算结果有时候会出现正确有时候会出现错误,或者是代码繁琐,没有及时注释,发生错误时找不到在哪等等问题。
最后 ,我几次删除了所有,重新编写了代码,将需要的功能思考并设计顺序,从最先的到最后的,每一个进行编写完测试再加入。然后再每一个功能的最后加上这段的整个功能和编写注释。这样只是基础的程序编写,就如同一个一个模块一样井然有序。并且我通过这次编写总结了经验:一定要进行设计,然后再想办法改善精简,同样完成代码数量少肯定出错的机率也少,多注释多查看参考资料,因为我觉得每次编写的代码都是不同的,甚至是我删除了很多次重写,都无法写出同上一次每次地方都相同的代码,所以学习比你强的人更精准的代码对基础薄弱的人绝对是好事。
7:psp
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
180 |
594 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
180 |
594 |
Development |
开发 |
50 |
400 |
·· Analysis |
需求分析 (包括学习新技术) |
8 |
60 |
· Design Spec |
· 生成设计文档 |
5 |
10 |
· |
· |
||
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
3 |
6 |
· Design |
具体设计 |
10 |
30 |
· Coding |
具体编码 |
50 |
400 |
· Code Review |
· 代码复审 |
7 |
9 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
60 |
Reporting |
报告 |
9 |
6 |
·· Test Report |
· 测试报告 |
3 |
2 |
· Size Measurement |
计算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
3 |
20 |
(开发和具体编码我这里算做是一个时间。。。)
原文地址:https://www.cnblogs.com/sdw98/p/11509249.html