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

时间:2023-02-14 13:11:47

项目github地址:https://github.com/narutofk/Test2

一、需求分析

使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发

软件的基本功能是:

  • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
  • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
  • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息文件目录与程序目录一致。
  • 当程序接收的参数为4时,以下为输出文件示例。

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

二、功能设计

首先要生成随机数,还要生成随机符号,然后*组合,最后计算出答案即可。能力有限,我的程序中没有判断负数与非整数的部分,我会在后面的时间和同学交流,加以改进。

三、设计实现

程序中只有一个主类,Main.java,四个主要函数,分别是产生随机数的getNumber(),产生随机符号的getOperator(),产生运算式的creatOperation(),以及产生结果的filewriter。

 先用Random函数申城随机数,然后把符号,+-*/放进一个swith函数中,然后随机取出随机个,然后使用ScriptEngine 解析脚本,产生运算式,关于这部分的方法,可参考http://blog.csdn.net/u014792352/article/details/74644791 这篇博文,里面详细解释了,我这就不加以赘述。至于生成运算式之后的计算问题,就很简单了。调用ScriptEngine脚本引擎中的eval方法即可。
四、测试运行

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

五、核心代码部分

1.产生随机运算符以及存储

public static char getOperator(){  
        char operator = 0;  
        Random op = new Random();  
        int i = op.nextInt(4);  
        switch(i){  
            case 0:  
                operator = '+';  
                break;  
            case 1:  
                operator = '-';  
                break;  
            case 2:  
                operator = '*';  
                break;  
            case 3:  
                operator = '/';  
                break;  
        }  
        return operator;  
     } 
    
for(int j=0;j<arr_str.length;j++) {
                if(arr_str[j]=='+'||arr_str[j]=='-'||arr_str[j]=='*'||arr_str[j]=='/') {    
                    arrString=String.valueOf(arr_str[j]);
                    arr_str[j]=',';
                    arrslist1.add(arrString);
                }
            }

2.调用ScriptEngine脚本

static ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript");

for(String arr: Operation){
            try {
                System.out.println(arr+"="+engine.eval(arr));
            } catch (ScriptException e) {
                e.printStackTrace();
            }     
        }

六、总结

设计程序思路清晰,为了得出四则运算式,肯定要随机数字,随机运算符,然后加以组合,并且计算出来,在写代码时,按照这个思路,一块一块写下去即可。计算的部分,一开始想用逆波兰式,但是实在是能力有限,有心而力不足,没能写出来,最后在同学的帮助下,了解并学习了ScriptEngine脚本引擎,完成了本次任务。
七、展示PSP

PSP2.1

任务内容

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

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

Planning

计划

5

3

·       Estimate

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

5

3

Development

开发

100

180

··       Analysis

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

2

0

·       Design Spec

·  生成设计文档

2

3

·       Design Review

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

2

3

·       Coding Standard

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

4

4

·       Design

  具体设计

10

20

·       Coding

  具体编码

60

120

·       Code Review

·  代码复审

5

10

·       Test

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

15

20

Reporting

报告

20

30

··       Test Report

·  测试报告

2

5

·       Size Measurement

  计算工作量

2

5

·       Postmortem & Process Improvement Plan

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

16

20