一、需求分析
使用C或Java语言完成一个自动生成四则运算试题的程序
二、功能设计
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
三、设计实现
我选用java语言,利用random产生随机数,利用for循环查重,并实现了四个运算符的选择以及正负数的问题。
四、测试运行
完成了基本功能,没有做扩展功能,自动生成10道100以内的2个操作数的四则运算算式(+ - * /),剔除了重复算式,也完成了相关参数的控制。
五、代码片段
控制正负数以及选择符号
for (int i = 0; i < tg; i++) {//循环控制题目个数
//第一个操作数的选择
int a = (int) (Math.random() * tf + 1);
if (zf == 1) {//有负数
int p = (int) (Math.random() * 2);
switch (p) {
case 0:
a = a * (-1);//取负数
System.out.print(a);
break;
case 1:
System.out.print(a);
break;
}
}
if (zf == 0) {//没有负数
System.out.print(a);
}
if (fu == 2) {//选择两个字符‘+’‘-’
int k = (int) (Math.random() * 2);
switch (k) {//随机选择运算符
case 0:
System.out.print("+");
break;
case 1:
System.out.print("-");
break;
}
int b = (int) (Math.random() * tf + 1);
if (zf == 1) {//有负数
int p = (int) (Math.random() * 2);
switch (p) {
case 0:
b = b * (-1);//取负数
System.out.print(b);
break;
case 1:
System.out.print(b);
break;
}
}
if (zf == 0) {//没有负数
System.out.print(b);
}
System.out.println("=");
六、总结
我觉得我自己需要学习的东西还有很多,关于技术方面还有所欠缺,课后需要加强练习,不断进步,提升自己的专业水平。
七、PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 10 | 8 |
· Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 5 | 8 |
Development | 开发 | 50 | 100 |
·· Analysis | 需求分析 (包括学习新技术) | 20 | 45 |
· Design Spec | · 生成设计文档 | 20 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 15 | 10 |
· Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 5 | 5 |
· Design | 具体设计 | 20 | 40 |
· Coding | 具体编码 | 40 | 60 |
· Code Review | · 代码复审 | 10 | 15 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 20 |
·· Test Report | · 测试报告 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 10 | 10 |