• 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

      

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

  • 相关阅读:
    [jQuery学习系列六]6-jQuery实际操作小案例
    [Java拾遗一] XML的书写规范与解析.
    [数据库操作]Java中的JDBC的使用方法.
    [Java拾遗二]Tomact及Http 部分总结.
    [Java拾遗三]JavaWeb基础之Servlet
    [Java拾遗四]JavaWeb基础之Servlet_Request&&Response
    [Java拾遗五]使用Session防止表单重复提交
    [数据库连接池] Java数据库连接池--DBCP浅析.
    [开发工具]Java开发常用的在线工具
    [数据库连接池二]Java数据库连接池--C3P0和JDNI.
  • 原文地址:https://www.cnblogs.com/weiyiren666/p/11487694.html
Copyright © 2020-2023  润新知