个人软件开发流程----计应191第一小组李影

四则运算:

需求分析:自动生成50道 50 以内的 四则运算算数题,同时生成答案

 

主要代码:

package demo01;

import java.util.Random;

public class Calculate {

    /**
     * 自动生成50道 50 以内的 四则运算算数题,同时生成答案
     *
     * 思路 1 定义3个int数组 ,int []num1,[]num2,[]num3,分别存 第一运算数 ,第二个运算数,结果, 定义一个字符数组,char
     * [] ch ;存50道题目的运算符, 2 随机生成一个长度50的运算符数组 3 根据运算符 ,随机组合运算数,并存入三个数组 4
     * 输出的时候可以组合题目,答案存数组 int []result;单独输出
     */
    public static void main(String[] args) {

        // 运算符
        char[] ch = new char[50];
        // num first secend result Answer
        int[] numF = new int[50];
        int[] numS = new int[50];
        int[] numR = new int[50];
        int[] numA = new int[50];
        Random random = new Random(1);
        Random rnd2 = new Random(2);
        Random rnd3 = new Random(3);

        for (int i = 0; i < 50; i++) {
            // 用num生成运算类型
            int num = random.nextInt(4);
            // numF numS 分别为第一、二个运算数
            numF[i] = rnd2.nextInt(51);
            // 在生成题目时 考虑除数不为0
            numS[i] = rnd3.nextInt(51);
            switch (num) {
            case 0:
                ch[i] = '+';
                break;
            case 1:
                ch[i] = '-';
                break;
            case 2:
                ch[i] = '*';
                break;
            case 3:
                ch[i] = '÷';
                break;

            default:
                break;
            }

        }
        // 组合+— *

        for (int i = 0; i < 50; i++) {
            switch (ch[i]) {
            case '+':
                numR[i] = numF[i] + numS[i];
                break;
            case '÷':
                while (numS[i] == 0) {
                    numS[i] = new Random().nextInt(51);
                }
                numR[i] = numF[i] / numS[i];
                break;
            case '*':
                numR[i] = numF[i] * numS[i];
                break;
            case '-':
                numR[i] = numF[i] - numS[i];
                break;

            default:
                break;
            }
        }
        // 题目数组
        String[] question = new String[50];
        for (int i = 0; i < numR.length; i++) {
            // 随机抽取一个运算数用空格替代,存入答案numA数组中
            int flag = random.nextInt(3);

            switch (flag) {
            case 0:
                question[i] = "___ " + ch[i] + numS[i] + "\t= " + numR[i];
                numA[i] = numF[i];
                break;
            case 1:
                question[i] = numF[i] + " " + ch[i] + " ___" + "= " + numR[i];
                numA[i] = numS[i];
                break;
            case 2:
                question[i] = numF[i] + " " + ch[i] + numS[i] + "\t= " + "___";
                numA[i] = numR[i];
                break;

            default:
                break;
            }
        }
        for (int i = 0; i < 50; i++) {
            System.out.print(question[i]);
            System.out.println("\t答案 :" + numA[i]);
        }
    }

}

效果展示:

 

PSP对照表:

PSP

任务内容

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

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

 

Planning

计划

25

30

· Estimate

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

25

30

Development

开发

478

592

· Analysis

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

20

30

· Design Spec

· 生成设计文档

15

10

· Design Review

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

15

15

· Coding Standard

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

5

5

· Design

·具体设计

23

28

· Coding

·具体编码

350

450

· Code Review

· 代码复审

30

30

· Test

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

20

24

Reporting

报告

21

18

· Test Report

·测试报告

6

6

· Size Measurement

·计算工作量

5

4

· Postmortem & Process Improvement Plan

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

10

8

总结:

在具体编码与代码复审的阶段非常耗时间,许多方法都忘记了,好多都需要百度和查看书籍才能完成;具体编码环节估计和实践差距太大了。

还是要多加练习,思维逻辑太差了。

posted @ 2021-04-11 10:34  19A1  阅读(216)  评论(0)    收藏  举报