羊四七呀

导航

2016011991 小学四则运算练习软件项目报告

代码地址:https://git.coding.net/sheep47/xiaoxuesizeyunsuan.git

一、前言

  这次的作业是用java来写一个四则运算练习软件,虽然已经在大一的时候学过Java这门课程,但我并没有学的很好,甚至由于在这半年里没有代码的练习,忘记了很多基础知识,所以这样的作业对我来说有些困难。刚开始的时候不知道该如何让下手,也导致写作业的时间有些仓促,在看过先教作业的几个同学的代码之后才开始动手。在此感谢宇欣给我的帮助,她详细给我解释了如何运用java将简单等式连接起来,如何运算,如何测试,还交给我如果增加括号的解决方法,虽然我没有实现这个功能,但是在此次作业的完成过程中,我学到了很多。

二、需求分析

1、软件基本功能:

      程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。

2、用户需求:

      为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。

3、基本要求:

      练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。

三、设计实现

整体思路:在这里我采用的是宇欣教给我的方法,先用Math.random()生成两个随机数进行加减乘除的运算生成简单式,由于在运算过程中要保证能整除和不出现负数,所以再用+或*连接几个简单式就可以得到有3-5个运算符的式子,然后利用栈来运算答案。代码中共用到了四个函数,分别实现了:两个数的四则运算题目、将运算符增加至3-5个、实现n个混合四则运算、计算答案。

四、算法详解和代码展示

1、生成运算式

int x = (int) (Math.random() * 100);// 产生100以内的随机数
        int y = (int) (Math.random() * 100);
        int z = (int) (Math.random() * 4);// 产生整数0到3
        if (z == 1) {
            if (x < y) {
                int temp = x;
                x = y;
                y = temp;
            }
        }
        if (z == 3) {// 如果是除法,保证能整除
            y = (int) (Math.random() * 20) + 1;
            x = (int) (Math.random() * 6) * y;
        }
        String m = x + op[z] + y;
        if (op[z].equals("-") || op[z].equals("+")) {
            flag = 1;
        }
        return m;

2、产生3-5个运算符

String question = "";
        for (int i = 0; i < p; i++) {
            if (i < p - 1) {
                String con = op1[(int) (Math.random() * 2)];
                
                    question += MakeQuestion1() + con;
                
            } else {
                question += MakeQuestion1();
            }
            flag = 0;
        }

3、产生n个混合运算

 for (int i = 0; i < n; i++) {
          
                MakeQuestion3();
                if(ifsame==1||answer==1){
                    i--;
                    ifsame=0;
                    answer=0;
                }
            
        }

五、测试运行

六、项目总结

这次项目中遇到了一些小的问题,比如在刚开始运行的时候没有注意到题目要求,需要保证整除,于是在计算一些除法问题时出现了错误,以及我的自学能力太差,很多地方都要向同学请教,而且没有看懂老师提供的调度场算法,希望老师在课上的时候可以讲解一下。完成此次作业的过程中,也让我意识到自己在时间分配上的不足,以及了解了一个项目的制作过程,学到了很多经验,相信在下次的作业中,可以做到更合理的时间分配,以及学习利用老师提供的资源。

七、psp

PSP2.1

任务内容

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

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

Planning

计划

15

20

 

Estimate

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

10

8

Development

开发

360

900

Analysis

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

6

8

Design Spec

 生成设计文档

0

0

Design Review

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

30

20

Coding Standard

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

10

8

Design

具体设计

30

40

Coding

具体编码

300

360

Code Review

代码复审

30

15

Test

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

30

20

Reporting

报告

60

90

Test Report

 测试报告

5

3

Size Measurement

计算工作量

10

10

Postmortem & Process Improvement Plan

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

3

3

posted on 2018-03-25 14:43  羊四七呀  阅读(145)  评论(1编辑  收藏  举报