20194652—自动生成四则运算题第一版报告

一、需求分析 

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

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

  (3)题目数量可定制

  (4)相关参数可控制

            是否包含乘法和除法

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

            操作数是否含负数    

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

二、功能设计

  基本功能:自动生成四则运算试题

  扩展功能:(1)算出答案

       (2)多操作数运算

       (3)用户可以自己选择用加减,乘除,正负,整分

       (4)预留了多余的空间

三、设计实现

  我设计了一个Test类,包括了变量的定义,变量的赋值,判断语句,遍历,循环等,最后完成了功能的实现。

四、测试运行

  1.包含加减,不含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能

 2.包含加减乘除,不含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能

 3.只包含加减,含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能

 

  4.包含加减乘除,含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能

 5.三个操作数的,其他同上,选择操作数范围和题目数量并去掉重复的功能

五、代码片段

1.控制操作代码块

 //控制操作
            System.out.println("请选择100以内或1000以内");
            m=sc.nextInt()+1;//输入你想要的范围
            System.out.println("请输入要产生的题数");
            n=sc.nextInt();//输入你想要的题数
            System.out.println("请输入0(不含)或1(含)表示是否含有乘除");
            y=sc.nextInt();
            System.out.println("请输入0(不含)或1(含)表示是否含有负数");
            z=sc.nextInt();//判断操作
            if(y==0&&z==0||y==0&&z==1||y==1&&z==0||y==1&&z==1){
                if(y==0){
                    if(z==0){
                         for(i=0;i<n;i++) {     
                             a1=(int)(Math.random()*m);
                                a2=(int)(Math.random()*m);
                                a3=(int)(Math.random()*m);
                                b=(int)(Math.random()*2);
                                b2=(int)(Math.random()*2);
                                //控制运算符开关
                                 switch (b) {
                                 case 0:
                                     result=a1+a2;
                                     break;
                                 case 1:
                                     result=a1-a2;
                                     break;
                                 case 2:
                                     result=a1*a2;
                                         break;
                                 case 3:
                                     result=a1/a2;        
                                             break;
                                 default:
                                     break;
                                 }

2.生成的运算题存储到外部文件test.txt中代码块

 PrintWriter out;//定义变量
            try{
            out=new PrintWriter("e:/test.txt");//输出的路径和文件名
            }catch(FileNotFoundException e){throw new RuntimeException(e);} 
out.println("第"+(i+1)+"题:"+a1+s[b1]+a2+s[b2]+a3+"="+result);//输出算式
                out.close();    //关闭

3.去掉重复算式的代码块

 //定义数组
                                 int[] a = new int[100];
                                 String[] d = new String[100];
                                 int[] e  = new int[100];
                                 //存入算式值
                                 a[i]=a1;
                                 d[i]=f[b];
                                 e[i]=a2;
                                 //定义判断参数
                                 int c= 0;
                                 //判断重复
                                 for(int j=i;j>0&&j<5;j--){//从当前位置向前遍历数组元素        
                                     if(a[i]==a[j-1]){//比较操作数x是否重复
                                         if(d[i]==d[j-1]){//如重复比较操作符是否重复
                                             if(e[i]==e[j-1]){//如重复比较最后一个操作数是否重复
                                                 c=1;
                                             }
                                         }
                                     }
                                 }

六、总结

  先把整体框架搭建出来,把最基本的变量等都设置出来并赋值,再根据需求划分模块,将每个模块的功能依次实现,并最后进行整合测试,保证程序能够顺利运行。

七、PSP

 

PSP2.1

任务内容

计划共完成需要的时间(min)

实际完成需要的时间(min)

Planning

计划

15

20

·       Estimate

·  估计这个任务需要多少时间,并规划大致工作步骤

15

20

Development

开发

350

410

··       Analysis

  需求分析 (包括学习新技术)

10

20

·       Design Spec

·  生成设计文档

0

0

·       Design Review

·  设计复审 (和同事审核设计文档)

0

0

·       Coding Standard

  代码规范 (为目前的开发制定合适的规范)

5

5

·       Design

  具体设计

15

20

·       Coding

  具体编码

300

340

·       Code Review

·  代码复审

10

10

·       Test

·  测试(自我测试,修改代码,提交修改)

10

15

Reporting

报告

30

40

··       Test Report

·  测试报告

20

25

·       Size Measurement

  计算工作量

0

0

·       Postmortem & Process Improvement Plan

·  事后总结 ,并提出过程改进计划

10

15

  

  我在具体编写代码过程中估计和实践相差巨大,因为在编写代码时有不懂得地方查阅了以下资料,导致最后与估计事件相差过多。

猜你喜欢

转载自www.cnblogs.com/weiyiren666/p/11487694.html