1.需求分析
这次作业要求的是一个小学四则运算练习软件,需要随机生成n道四则运算。首先要求能获取随机数n,其次要求能生成3-5个运算符,运算符为+-*÷,生成相应的0-100之 间的整数。题目要求不能出现负数和非整数。
2.功能设计
基本功能 获取用户输入的题目数量,生成符合要求的四则运算式并得出答案,同时判断正误
扩展功能 无
3. 设计实现
涉及的函数
1.获取习题数量的函数
getNum()
设置输入函数,获取输入的题目数量0-1000
2.main函数
主要是实现调用函数,得出结果并写入的需求的
3.随机生成习题
RandCreate()函数
主要是用来随机生成算式并写出的
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("\r\n"); 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 经过修改,能使用命令行参数进行测试了,截图当时忘了截