一、需求分析
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)题目数量可定制
(3)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(4)生成的运算题存储到外部文件text.txt中
二、功能设计
基本功能:自动生成四则运算试题
扩展功能:(1)算出答案
(2)用户可以自己选择用加减,乘除,正负,整分
三、设计实现
设计一个Test类,包括了变量的定义,变量的赋值,判断语句,循环等,最后进行测试。
四、测试运行
1.包含加减,不含正负,选择数的范围和题目数量。
2.包含加减乘除,不含正负,选择数的范围和题目数量。
3.只包含加减,含正负,选择数的范围和题目数量。
4.包含加减乘除,含正负,选择数的范围和题目数量。
五、代码片段
1.控制操作代码块。
// 进行输入条件 Scanner reader = new Scanner(System.in); System.out.println("请输入题目数量"); count = reader.nextInt(); System.out.println("请输入题目范围,100or1000"); fanwei = reader.nextInt(); System.out.println("请输入是否有负数,0为无负数,1为有负数"); fushu = reader.nextInt(); System.out.println("请输入是否带有乘除法,0无1有"); p1 = reader.nextInt(); for (i = 0; i < count; i++) { String r1 = "";// 如有负数,且负数为num1,则有括号 String r2 = "";// 如有负数,且负数为num2,则有括号 p2 = (int) (Math.random() * 4);// char jia = '+'; char jian = '-'; char cheng = '*'; char chu = '/'; char j=' '; if (fushu == 0) { num1 = (int) (Math.random() * fanwei); r1= ""+num1; num2 = (int) (Math.random() * fanwei); r2 = "" + num2; } else { num1 = (int) (Math.random() * fanwei * (Math.random() > 0.5 ? 1: -1)); if (num1 < 0) { r1 = "(" + num1 + ")"; } else { r1 = "" + num1; } num2 = (int) (Math.random() * fanwei * (Math.random() > 0.5 ? 1: -1)); if (num2 < 0) { r2 = "(" + num2 + ")"; } else { r2 = "" + num2; } }
// 判断是否有乘除法 switch (p2) { case 0:j='+'; sum = num1 + num2; if (num1 + num2 <= 100) { break; } case 1:j='-'; sum = num1 - num2; if (num1 - num2 < 100) { } break; case 2:j='*'; sum = num1 * num2; switch (p1) { case 1: if (num1 * num2 <= 100) { break; } case 0: i--; continue; } break; case 3:j='/'; sum = num1 / num2; switch (p1) { case 1: if (num1 / num2 <= 100) { break; } case 0: i--; continue; } break; }
2.生成的运算题存储到外部文件test.txt中代码块。
//第一部分 PrintWriter over; try{ over=new PrintWriter("E:/test.txt");//输出的路径和文件名 }catch(FileNotFoundException e){throw new RuntimeException(e);} //第二部分 over.println("第" + (i + 1) + "题:" + r1 + "" + j + "" + r2 + "=" + sum + ""); over.flush();//
六、总结
首先整理好思路,把基本框架建立出来。进一步利用循环,选择,判断等方法书写程序。最后整体测试,改错。我在具体编写代码过程中估计和实践相差巨大,因为在编写代码时有不懂得地方查阅了以下资料,导致最后与估计事件相差过多。
七、PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
30 |
40 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
15 |
20 |
Development |
开发 |
480 |
660 |
·· Analysis |
需求分析 (包括学习新技术) |
10 |
20 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
5 |
· Design |
具体设计 |
15 |
20 |
· Coding |
具体编码 |
480 |
600 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
20 |
50 |
Reporting |
报告 |
30 |
60 |
·· Test Report |
· 测试报告 |
20 |
25 |
· Size Measurement |
计算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
10 |
15 |