1.需求分析
这次作业要求的是一个小学四则运算练习软件,需要随机生成n道四则运算。首先要求能获取随机数n,其次要求能生成3-5个运算符,运算符为+-*÷,生成相应的0-100之 间的整数。题目要求不能出现负数和非整数。
2.功能设计
基本功能 获取用户输入的题目数量,生成符合要求的四则运算式并得出答案,同时判断正误
扩展功能 无
3. 设计实现
4、算法详解
1.生成题目的算法
先生成3-5个运算符,并且在其中进行控制,再生成运算数,运算数比运算符多一
并且使用count来记录运算符的数量
int count = 0, count_h = 0;// 记录运算符数量 int[] arr = new int[6];// 记录运算数 int[] arr_h = new int[6]; char[] ch = { '+', '-', '*', '÷' }; int[] chno = new int[5];// 记录运算符 int[] chno_h = new int[5]
2.计算题目
我用了file方法,是java.io中的方法,能够得出结果并写入result.txt
1 if (arr[0] >= 0) // 结果大于0 2 { 3 n--; 4 5 for (int i = 0; i < count_h; i++) { 6 fw.write(String.valueOf(arr_h[i])); 7 fw.write(String.valueOf(ch[chno_h[i]])); 8 } 9 fw.write(String.valueOf(arr_h[count_h])); 10 fw.write("="); 11 fw.write(String.valueOf(arr[0])); 12 fw.write(" "); 13 fw.flush(); 14 }
5.测试运行
测试是有弊端的,目前我还没有解决,本来会生成有三个除号连起来得出答案为零的情况,我直接设置了不能有两个出号出现在一个式子内
觉得较为优秀的代码
1 for (int i = 0; i < count; i++) { 2 if (chno[i] == 2) // * 3 { 4 int a = arr[i] * arr[i + 1]; 5 arr[i] = a; 6 count--; 7 for (int j = i; j < count; j++) { 8 chno[j] = chno[j + 1]; 9 arr[j + 1] = arr[j + 2]; 10 } 11 i--; 12 } else if (chno[i] == 3) // 除 13 { 14 int a = arr[i] / arr[i + 1]; 15 arr[i] = a; 16 count--; 17 for (int j = i; j < count; j++) { 18 chno[j] = chno[j + 1]; 19 arr[j + 1] = arr[j + 2]; 20 } 21 i--; 22 } 23 }
乘除法的判断问题
6.总结
相比于其他同学来说,我可能会写,但是对于那些专业名词一窍不通,才会出现各种问题,比如静态函数中使用了非静态方法。还是要好好再学习一下java
7.PSP
PSP |
任务内容 |
计划时间(min) |
完成时间(min) |
Planning |
计划 |
20 |
20 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
30 |
20 |
Development |
开发 |
600 |
1800 |
Analysis |
需求分析 |
20 |
25 |
Design Spec |
生成文档 |
0 |
0 |
Design Review |
设计复审 |
0 |
0 |
Coding Standard |
代码规范 |
5 |
5 |
Design |
具体设计 |
60 |
180 |
Coding |
具体编码 |
300 |
900 |
Code Review |
代码复审 |
30 |
600 |
Test |
测试 |
5 |
80 |
Reporting |
报告 |
160 |
400 |
Test Report |
测试报告 |
120 |
360 |
Size Measurement |
计算工作量 |
10 |
10 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
30 |
30 |
2018.04.13 经过修改,能使用命令行参数进行测试了,截图当时忘了截