四则运算程序

一、需求分析

1.四则运算是指加法、减法、乘法和除法四种运算。四则运算是小学数学的重要内容,也是学习其它各有关知识的基础。

2.编写小学四则运算测试系统,要求完成两位数以内(包括两位数)的加,减,乘,除四则运算。下述所有四则运算表达式均需随机生成。使用参数能够控制生成题目的数量。

二、功能设计

1.提供加减乘除四种运算供用户选择,并显示简单的菜单及命令;

2.当用户选择一种运算时(如加法),有系统随机产生两个数(数值范围在1~9)进行运算(如加法运算就进行相加),提醒用户输入答案,并根据用户输入的答案显示正确和错误的提示信息;

3.计算并显示用户选择的每种运算的正确率,退出系统时后显示一次练习总的正确率; 

4.由用户自行选择每种运算的出题数并结束时计算显示已做练习的总题数;

5.每次运算结束后提供做错可重做功能,每题做错可重做次数
设为三次; 
6.操作不合要求时提示信息并重操作,结束时提供再返回练习系统的选择。

三. 设计实现

1使用java语言进行编程

2.利用自定义函数实现部分功能

四.测试运行

 

 

 

 

 

 

 

 

五.片段代码

 生成四则表达式

public HashSet<String> generateArithmetic(){
            HashSet<String> arithSet =new HashSet<String>();

            while(arithSet.size() < this.n){    //生成指定数量的公式
                String arithmetic = "";

                int number = this.getRandomNumber(this.m,this.i);
                int otherNumber = this.getRandomNumber(this.m,this.i);

                arithmetic += this.getNumber(number);

                // 生成指定操作数的表达式
                for(int i = 1; i < this.o; i++){
                    arithmetic += " "+ this.getRandomOperator(this.isMultiAnddiv) + " " +this.getNumber(otherNumber);
                    otherNumber = this.getRandomNumber(this.m,this.i);
                }

                Object result = this.getComputeReturn(arithmetic);   // 计算表达式结果
                // 把符合要求的结果存起来
                if (Double.parseDouble(result.toString()) < this.r){
                    arithmetic += " = " + String.format("%.3f",Double.parseDouble(result.toString()));
                    arithSet.add(arithmetic);
                }
            }
            return arithSet;
        }

计算四则表达式的结果

        private Object getComputeReturn(String arithmetic){
            ScriptEngineManager manager = new ScriptEngineManager();
            ScriptEngine se = manager.getEngineByName("js");
            Object result = null;
            try {
                result = se.eval(arithmetic);
            } catch (ScriptException e) {
                e.printStackTrace();
            }
//          System.out.println(result);
            return result;
        }

为负数加上括号,返回负数带括号的数,整数原样输出

private String getNumber(int number){
            if (number > 0){
                return number+"";
            }else{
                return "(" + number +")";
            }
        }

生成随机操作符号

private String getRandomOperator(boolean isMultiAnddiv){
            String [] operator = {"+", "-", "*", "/"};
            Random randomOper = new Random();
            if (isMultiAnddiv){
                return operator[randomOper.nextInt(4)];
            }else{
                return operator[randomOper.nextInt(2)];
            }
        }

六.PSP

psp2.1 任务内容 计划共完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 60 520
· Estimate 估计这个任务需要多少时间,并规划大致工作步骤 60 520
Development 开发 40 120
·· Analysis 需求分析 (包括学习新技术) 10 30
· Design Spec · 生成设计文档 10 40
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 20
·Coding · 具体编码 120 200
·Code Review · 代码复审 10 30
·Test · · 测试(自我测试,修改代码,提交修改) 10 20
·Reporting · · 报告 10 30
· Test Report · · 测试报告 10 10
· Size Measurement · · 计算工作量 10 10
· Postmortem & Process Improvement Plan · · 事后总结 ,并提出过程改进计划 10 10
posted @ 2019-09-16 18:05  昵称是个啥~~  阅读(888)  评论(2)    收藏  举报