20194641——自动生成四则运算测试报告

一、需求分析:

编写一个适合小学生计算的四则运算小程序,程序相关参数可以定制,并把生成的等式存储到外部result.txt文件中。

二、功能实现:

·基本功能

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内

(2)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

(3)题目数量可定制

(4)相关参数可控制

          是否包含乘法和除法

          操作数数值范围可控(如操作数 在100以内   还是1000以内)

          操作数是否含负数    

  (5)生成的运算题存储到外部文件result.txt中

·拓展功能

(1)对输出的等式进行了优化:通过给所有的为负值的操作数添加括号,极大的提高了等式的整洁度,增强了等式的可读性。

 三、设计实现:

(1)利用rand.nextInt()语句和(int) (Math.random()*number);语句实现随机数的生成

int    a = rand.nextInt(100);//在0-100的范围内随机生成整数
int b = rand.nextInt(100);//在0-100的范围内随机生成整数
Asum[i]=(int) (Math.random()*number1);
Bsum[i]=(int) (Math.random()*number1);

 (2)将四则运算符储存到char类型的数组中,利用(int) (Math.random()*number)语句随机生成四则运算式;

char Opera[]= {'+','-','*','/'};//Opera[0]~Opera[3]依次输出“+”,“-”,“*”,“/”
int r=(int) (Math.random()*number3);//判断输出+,-,*,/

 (3)利用PrintStream sun = new PrintStream("d:/result.txt");语句将生成的等式保存在result.txt文档中;

PrintStream ps = new PrintStream("d:/result.txt");
System.setOut(ps);

(4)利用int number1 = reader.nextInt();实现题目数量可控;

System.out.println("输入等式的数量");
        int number2 = reader.nextInt();
        int Bsum[]=new int[number2];

(5)实现操作数数值范围可控;

System.out.println("输入控制数范围");
        int number1 = reader.nextInt();
        int Asum[]=new int[number1];

6)实现负值运算;

char Opera2[]= {' ','-'};//Opera[0]~Opera[1]依次输出“ (空格)”,“-”
int n=(int) (Math.random()*number4);//第一个数值是否为负数
int m=(int) (Math.random()*number4);//第二个数值是否为负数

(7)实现给全部负值加括号;

char Opera3[]= {' ','(',')'};//Opera[0]~Opera[2]依次输出“ (空格)”,“(”,“)”
int r=(int) (Math.random()*number3);//判断输出+,-,*,/

(8)实现等式的除重操作;

Asum[0]=(int) (Math.random()*number1);
            Bsum[0]=(int) (Math.random()*number2);
        for(int i=1;i<number2;) {
            Asum[i]=(int) (Math.random()*number1);
            Bsum[i]=(int) (Math.random()*number1);
            if(Asum[i]!=Asum[i-1]) {
                i++;
            }
        }

 四、测试运行:

(1)基本需求测试运行

 (2)拓展需求测试运行

五、比较满意的代码片段:

char Opera[]= {'+','-','*','/'};//Opera[0]~Opera[3]依次输出“+”,“-”,“*”,“/”
char Opera2[]= {' ','-'};//Opera[0]~Opera[1]依次输出“ (空格)”,“-”
char Opera3[]= {' ','(',')'};//Opera[0]~Opera[2]依次输出“ (空格)”,“(”,“)”

 

for(int i=0;i<number2;i++) {
int n=(int) (Math.random()*number4);//第一个数值是否为负数
int m=(int) (Math.random()*number4);//第二个数值是否为负数
int r=(int) (Math.random()*number3);//判断输出+,-,*,/

System.setOut(ps);
System.out.printf("%c%c%d%c%c%c%c%d%c=\r",Opera3[n*1],Opera2[n],Asum[i],Opera3[n*2],Opera[r],Opera3[m*1],Opera2[m],Bsum[i],Opera3[m*2]);
System.out.println();
}

六、总结:

对新技术的学习能力还需要加强。把所有的方法和对象都放到了一个类中进行了实现,代码的结构层次不明显。

七、PSP

PSP2.1 任务内容 计划共完成需要的时间(h) 实际完成需要的时间(h)
Planning 计划 0.5 1
· Estimate · 估计这个任务需要多少时间,并规划大致工作步骤 18.3 27.4
Development 开发 5 8
·· Analysis 需求分析 (包括学习新技术) 3 5
· Design Spec · 生成设计文档 0.5 0.6
· Design Review · 设计复审 (和同事审核设计文档) 0.5 0.5
· Coding Standard 代码规范 (为目前的开发制定合适的规范) 0.2 0.4
· Design 具体设计 2 2
· Coding 具体编码 2 2
· Code Review · 代码复审 1 1.5
· Test · 测试(自我测试,修改代码,提交修改) 3 6
Reporting 报告 0.5 0.5
·· Test Report · 测试报告 0.2 0.2
· Size Measurement 计算工作量 0.2 0.2
· Postmortem & Process Improvement Plan · 事后总结 ,并提出过程改进计划 0.5 0.5

猜你喜欢

转载自www.cnblogs.com/sunshuaiqun/p/11524998.html