一、需求分析
家长为了减少锻炼小学生的出题时间,简化自己的时间效率,于是利用程序写出自动生成运算题。这不仅仅可以减少家长的时间、也能为老师提供一个简单快速的出题方式。
二、功能设计
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三、设计实现
其中文件写入需要FileWriter对象、随机生成数字需使用到Math.random()函数,使用for switch、if等函数判断运行条件。
四、测试运行
五、代码片段
1.去掉重复的题排除结果为负数、超一百的数
if (c >= 100 || c < 0) {//排除超过100、负数的情况
i--;
continue;
}
//将题以字符方式拼接
String h = m + "" + operachar + n + "=";
//去掉重复的题
if (write_file.contains(h)) {
i--;
continue;
}
2.随机产生运算符
char[] opera_all = { '*', '/', '+', '-' };//选择进行运算的运算符、选择随机符号
char operachar;
String write_file = "";//要写入文件的字符
int m , n , c =0;//定义 m,n 两个运算数 ,c是m和n 运算操作的结果
//进行10次循环
for (int i = 0; i < 10; i++) {
//每次产生随机数(从数组取运算符号)
int ope = num.nextInt(4);
operachar = opera_all[ope];
3.打开文件写入及关闭
write_file = write_file +"第"+(i+1)+"题:"+h + " " + "\n"; //写入操作
f.write(write_file);//写入文件
f.close();//文件关闭
六、总结
先计划好,再从基本功能开始,慢慢完善功能和代码。
七、PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 130 | 120 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 110 | 130 |
Development | 开发 | 20 | 20 |
Analysis | 需求分析 (包括学习新技术) | 18 | 20 |
Design Spec | 生成设计文档 | 10 | 8 |
Design Review | 设计复审 (和同事审核设计文档) | 10 | 15 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 10 | 15 |
Design | 具体设计 | 20 | 23 |
Coding | 具体编码 | 60 | 66 |
Code Review | 代码复审 | 10 | 13 |
Test | 测试(自我测试,修改代码,提交修改) | 11 | 16 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 8 | 8 |
Size Measurement | 计算工作量 | 8 | 8 |
Postmortem & Process Improvement Plan | 事后总结 ,并提出过程改进计划 | 10 | 15 |