zoukankan      html  css  js  c++  java
  • 20194629 自动生成四则运算题第一版报告

      

    一、需求分析 

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

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

    (3)题目数量可定制

    (4)相关参数可控制

    •  是否包含乘法和除法
    •  操作数数值范围可控(如操作数 在100以内   还是1000以内)
    •  操作数是否含负数    

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

    二、功能设计

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

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

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

     三、设计实现

          Java语言实现,软件myeclipse,其中随机生成数字需使用到Math.random()函数,并通过for,switch等控制语句实现条件的各种选择问题。

    四、测试运行

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

      

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

       

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

     

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

     

     五、代码片段

     1.所需要引用的Java包

    1    import java.io.BufferedWriter;
    2   import java.io.FileNotFoundException;
    3   import java.io.FileWriter;
    4   import java.io.IOException;
    5   import java.io.PrintWriter;
    6   import java.io.Writer;
    7   import java.util.Scanner;

     2.判断是否随机出带负数的算术题

    if(zf==0){ //判断zf是否等于0,若等于则不出带负号的运算
      n1=(int) (Math.random()*size);
      n2=(int)(Math.random()*size);
      str = n2+"";
    }else if(zf==1) {//若zf等于1时,则出带负号的运算
        n1=(int)(Math.random()*(2*size+1)-100);
        n2=(int)(Math.random()*(2*size+1)-100);
        if(n2<0){
          str = "(" + n2 + ")";
        }else{
          str = n2+"";
         }
    }

    3.加减乘除

     sum=(int)(Math.random()*4);
            switch(n){
                case 0:sum=n1+n2;
                       p='+';
                   if(n1+n2<=100){
                       bw.write("第"+(i+1)+"题: "+n1+""+p+""+str+"="+sum+"");
                       bw.newLine();
                        break;
                       }
                case 1:sum=n1-n2;
                     p='-';
                    if(n1-n2<100){
                        bw.write("第"+(i+1)+"题: "+n1+""+p+""+str+"="+sum+"");
                        bw.newLine();
                  }    
                    break;          
                case 2:sum=n1*n2;
                       p='*';
                       switch(r){
                          case 1:  if(n1*n2<=100){
                              bw.write("第"+(i+1)+"题: "+n1+""+p+""+str+"="+sum+"");
                              bw.newLine();
                        break;
                    }
                          case 0:
                               i--;//回指到随机抽到的前一个的运算符,进行判断运算
                               continue;
                   }     
                     
                case 3:sum=n1/n2;
                     p='/';
                     switch(r){
                          case 1:     bw.write("第"+(i+1)+"题: "+n1+""+p+""+str+"="+sum+""); 
                                      bw.newLine();
                                   break;
                          case 0:
                                 i--;
                                 continue;            
                }

    4.剔除重复

    a1[i]=n1;//算式第一个操作数放在数组a1里
    a2[i]=p;//算式操作符放在数组a2里
    a3[i]= n2;//算式第二个操作数放在数组a3里
    int pd= 0; //判断重复
    for(int j=i;j>0&&j<5;j--){//算式第一个数是否重复
    if(a2[i]==a2[j-1]){//比较操作符是否重复
       if(a3[i]==a3[j-1]){//比较算式第二个数是否重复
           pd=1;//重复pd赋值为1 
        }
      }
    }
     

    5.生成外部result.txt文件

     Writer fw = null;
        fw = new FileWriter("d:\result.txt");
        BufferedWriter bw=new BufferedWriter(fw);//写入文件
    
     bw.write("第"+(i+1)+"题: "+n1+""+p+""+str+"="+sum+"");
    
     bw.close();

    六、总结

      刚开始看到题目的时候觉得毫无头绪,有一点无从下手的感觉,后来和同学讨论学习,慢慢的先把基本的框架搭建出来,把基本的变量都设置出来并赋值,实现最基本功能,再根据需求划分模块,一点一点的把每个模块的功能依次实现,最后进行整合测试,最后完成需求里所有功能,过程虽然有点难熬,但是还是让我学习到了不少东西。

    七、psp

    PSP2.1

    任务内容

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

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

    Planning

    计划

    10

    15

    Estimate

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

    300

    400

    Development

    开发

    40

    40

    Analysis

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

    60

    90

    Design Spec

    生成设计文档

    30

    30

    Design Review

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

    10

    5

    Coding Standard

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

    5

    3

    Design

    具体设计

    30

    50

    Coding

    具体编码

    60

    90

     Code Review

    代码复审

    5

    10

    Test

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

    20

    20

    Reporting

    报告

    10

    10

    Test Report

    测试报告

    15

    30

    Size Measurement

    计算工作量

    5

    5

    Postmortem & Process Improvement Plan

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

    10

    20

  • 相关阅读:
    第3 章流程控制语句
    第7 章面向对象程序设计
    linux运维常用命令
    第1 章初识Python
    nginx安装与部署
    Linux下软件安装的几种方式
    MAYA 多线程
    Maya pywin32
    python 中调用windows系统api操作剪贴版
    Maya QT interfaces in a class
  • 原文地址:https://www.cnblogs.com/jingxueyan/p/11521935.html
Copyright © 2011-2022 走看看