• 20194634+第二次作业四则运算


    一、需求分析 

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

       (2)题目数量可定制

            (3)相关参数可控制

                  是否包含乘法和除法

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

                操作数是否含负数    

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

    二、功能设计

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

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

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

    三、设计实现

      设计一个Test类,包括了变量的定义,变量的赋值,判断语句,循环等,最后进行测试。

    四、测试运行

      1.包含加减,不含正负,选择数的范围和题目数量。

          2.包含加减乘除,不含正负,选择数的范围和题目数量。

           3.只包含加减,含正负,选择数的范围和题目数量。

           4.包含加减乘除,含正负,选择数的范围和题目数量。

    五、代码片段

    1.控制操作代码块。

    // 进行输入条件
            Scanner reader = new Scanner(System.in);
            System.out.println("请输入题目数量");
            count = reader.nextInt();
            System.out.println("请输入题目范围,100or1000");
            fanwei = reader.nextInt();
            System.out.println("请输入是否有负数,0为无负数,1为有负数");
            fushu = reader.nextInt();
            System.out.println("请输入是否带有乘除法,0无1有");
            p1 = reader.nextInt();
            
            for (i = 0; i < count; i++) {
                String r1 = "";// 如有负数,且负数为num1,则有括号
                String r2 = "";// 如有负数,且负数为num2,则有括号
                p2 = (int) (Math.random() * 4);//
                char jia = '+';
                char jian = '-';
                char cheng = '*';
                char chu = '/';
                char j=' ';
                if (fushu == 0) {
                    num1 = (int) (Math.random() * fanwei);
                    r1= ""+num1;
                    num2 = (int) (Math.random() * fanwei);
                    r2 = "" + num2;
                } else {
                    num1 = (int) (Math.random() * fanwei * (Math.random() > 0.5 ? 1: -1));
                    if (num1 < 0) {
                        r1 = "(" + num1 + ")";
                    } else {
                        r1 = "" + num1;
                    }
                    num2 = (int) (Math.random() * fanwei * (Math.random() > 0.5 ? 1: -1));
                    if (num2 < 0) {
                        r2 = "(" + num2 + ")";
                    } else {
                        r2 = "" + num2;
                    }
                }
    // 判断是否有乘除法
                switch (p2) {
                case 0:j='+';
                    sum = num1 + num2;
                    if (num1 + num2 <= 100) {
                       
                        break;
                    }
                case 1:j='-';
                    sum = num1 - num2;
                    if (num1 - num2 < 100) {
                        
                    }
                    break;
                case 2:j='*';
                    sum = num1 * num2;
                    
                    switch (p1) {
                    case 1:
                        if (num1 * num2 <= 100) {
                           
                            break;
                        }
                    case 0:
                        i--;
                        continue;
                    }
                    break;
                case 3:j='/';
                    sum = num1 / num2;
                    switch (p1) {
                    case 1:
                        if (num1 / num2 <= 100) {
                           
                            break;
                        }
                    case 0:
                        i--;
                        continue;
                    }
                    break;
                }

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

    //第一部分
    PrintWriter over;
            try{
            over=new PrintWriter("E:/test.txt");//输出的路径和文件名
            }catch(FileNotFoundException e){throw new RuntimeException(e);} 
    //第二部分
    over.println("第" + (i + 1) + "题:" + r1 + "" + j
                        + "" + r2 + "=" + sum + "");
                over.flush();//

    六、总结

      首先整理好思路,把基本框架建立出来。进一步利用循环,选择,判断等方法书写程序。最后整体测试,改错。我在具体编写代码过程中估计和实践相差巨大,因为在编写代码时有不懂得地方查阅了以下资料,导致最后与估计事件相差过多。

    七、PSP

    PSP2.1

    任务内容

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

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

    Planning

    计划

    30

    40

    ·       Estimate

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

    15

    20

    Development

    开发

    480

    660

    ··       Analysis

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

    10

    20

    ·       Design Spec

    ·  生成设计文档

    0

    0

    ·       Design Review

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

    0

    0

    ·       Coding Standard

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

    5

    5

    ·       Design

      具体设计

    15

    20

    ·       Coding

      具体编码

    480

    600

    ·       Code Review

    ·  代码复审

    10

    10

    ·       Test

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

    20

    50

    Reporting

    报告

    30

    60

    ··       Test Report

    ·  测试报告

    20

    25

    ·       Size Measurement

      计算工作量

    0

    0

    ·       Postmortem & Process Improvement Plan

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

    10

    15

      

      

  • 相关阅读:
    【CF732D】Exams(线性扫描,贪心,二分)
    【CF652C】Foe Pairs(线性扫描)
    【CF645D】 Robot Rapping Results Report(拓扑排序,二分)
    【BZOJ入门3189】 猜数字(数学,搜索)
    【CF559C】 Gerald and Giant Chess(计数,方案数DP,数论)
    【NOIP2016练习&BZOJ2125】T3 sp (树上倍增,最短路)
    【NOIP2016练习】T2 forest (树形DP,数论)
    【NOIP2016练习】T2 花花的聚会 (树形DP,倍增)
    【CF713C】Sonya and Problem Wihtout a Legend(离散化,DP)
    js函数知识点
  • 原文地址:https://www.cnblogs.com/leeyangtongxue/p/11521333.html
Copyright © 2020-2023  润新知