海量小学计算题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 120 | 300 |
? Estimate | ? 估计这个任务需要多少时间 | 600 | 1460 |
Development | 开发 | ||
? Analysis | ? 需求分析 (包括学习新技术) | 120 | 300 |
? Design Spec | ? 生成设计文档 | 30 | 60 |
? Design Review | ? 设计复审 | 20 | 30 |
? Coding Standard | ? 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
? Design | ? 具体设计 | 30 | 60 |
? Coding | ? 具体编码 | 150 | 400 |
? Code Review | ? 代码复审 | 60 | 250 |
? Test | ? 测试(自我测试,修改代码,提交修改) | 60 | 200 |
Reporting | 报告 | 20 | 60 |
? Test Repor | ? 测试报告 | 20 | 20 |
? Size Measurement | ? 计算工作量 | 20 | 20 |
? Postmortem & Process Improvement Plan | ? 事后总结, 并提出过程改进计划 | 20 | 30 |
合计 | 1760 |
二、需求分析
我通过百度查询小学一年级题库的方式了解到,小学一年级数学有如下的几个特点:
- 特点1:答案和题目里的数值均小于100
- 特点2:答案和题目里的数值均为正整数
- 特点3:一般是两个数值之间的运算
经过分析,我认为,这个程序应当:
- 产生的计算题是两个数之间的运算
- 参与运算的两个数和结果均为正整数
- 参与运算的两个数和结果均小于100
三、设计
1. 设计思路
说明你如何设计这个程序
比如:
- 这个程序有1个类,1个函数。
- 关键函数的流程是:读取命令行中的参数并根据参数决定如何运行,若正常运行创建文本文件,分类产生计算题并将数值及符号保存,打印计算题至屏幕和文本
- 算法的关键是:分类运行输出计算题并打印至屏幕和文本
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地...
- 技术关键点:分类算法,输出至文本
四、编码
请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程
1. 调试日志
记录编码调试的日志,请记录下开发过程中的 debug 历程
比如:
- 给args【】分配了空间,args【】强转int抛异常,无法运行程序,取消给args【】分配的空间。
- if语句后跟两个语句且有循环语句没有用大括号括起来,程序不报异常并死循环。
- 输出计算题时语句放在了flag变量++的前面,输出题目答案为上一题答案。
2. 关键代码
if(y==1)//一年级
{
number = (int)Math.ceil((r.nextDouble()*2.0));b[m]=number;//通过随机数选择符号
for(;;){
number = (int)Math.floor((r.nextDouble()*100.0));a[m]=number;
number = (int)Math.floor((r.nextDouble()*100.0));c[m]=number;
if(b[m]==1)if(a[m]+c[m]<100){fh="+";break;}
if(b[m]==2)if(a[m]-c[m]>=0){fh="-";break;}
}//循环取参与运算的数值直到满足运算条件退出循环并记录符号便于之后输出
}
if(y==2)//二年级
{number = (int)Math.ceil((r.nextDouble()*2.0));//通过随机数选择符号
b[m]=number+2;
for(;;){
number = (int)Math.ceil((r.nextDouble()*50.0));a[m]=number;
number = (int)Math.ceil((r.nextDouble()*20.0));c[m]=number;
if(b[m]==3)if(a[m]*c[m]<100){fh="*";break;}
if(b[m]==4)if(a[m]%c[m]==0&&a[m]>=c[m]){fh="/";break;}
}//循环取参与运算的数值直到满足运算条件退出循环并记录符号便于之后输出
}
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条:手动处理异常不抛出
- 第二条:合理进行代码注释
- 第三条:不浪费空间
- 第四条:及时结束进程
并人工检查代码是否符合规范
五、测试
- 输入-1,1;输出:题目数输入错误,请输入1~9999
- 输入1000000,2;输出:题目数输入过大,请输入1~9999
- 输入0,6;输出:题目数输入错误,请输入1~9999 年级输入错误,请输入1或者2
- 输入10,-1;输出:年级输入错误,请输入1或者2
六、总结
请总结过程中的教训和经验,思考
- 是否使用了“软件开发的基本策略:分而治之”,是否需要重构
是,需要。
- “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构
是,需要。
原文地址:https://www.cnblogs.com/wzxhh/p/9631765.html
时间: 2024-10-27 07:50:57