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

GitHub项目地址:https://github.com/sanjinzi/test

一、需求分析

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

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

       

二、功能设计

  当提示输入练习题个数后输入题目计算个数n,之后随机产生n道练习题并且将n道练习题及其对应的正确答案输出到文件“result.txt中。

三、设计实现

  由主函数读入练习题数目;

  产生随机数和运算符并将其组合放入数组中;

  将数组中的随机数和运算符组合后放入动态数组中;

  调用JavaScript中的eval函数计算练习题答案;

  将结果输入到文件“result.txt中。

四、测试运行

在eclipse中测试运行:

在cmd中测试运行:

五、核心代码

将数组中的随机数和运算符组合后放入动态数组中:

ArrayList<String> expression = new ArrayList<String>();
        for(int i = 0; i < num; i++){
            int n = random.nextInt(3) + 2;
            int[] number = new int[n + 1];
            String nexpression = new String();
            for (int j = 0; j <= n; j++) {
                number[j] = random.nextInt(100) + 1;
            }
            for (int j = 0; j < n; j++) {
                int fuhao = random.nextInt(4);
                nexpression += String.valueOf(number[j]) + String.valueOf(operator[fuhao]);
                if (fuhao == 3) {
                    number[j + 1] = division(number[j], number[j + 1]);
                }
            }
            nexpression += String.valueOf(number[n]);
            expression.add(nexpression);
        }

调用JavaScript中的eval函数计算练习题:

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

    private static ArrayList<String> calculate(ArrayList<String> arrayList) {
        ArrayList<String> suanshi = new ArrayList<String>();
        for (String ax : arrayList) {
            try {
                ax = ax + "=" + jse.eval(ax);
                System.out.println(ax);
                suanshi.add(ax);
            } 
            catch (ScriptException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

六、总结

  由于java是在大二学的,后面也没有对其进行适量的联系,所以现在对于java还不够熟悉,请教和参考了身边许多同学才勉强完成作业。在作业完成方面,还有一些不尽如人意的地方,希望以后能够改进自己的不足,多向身边的大神同学学习,争取下次作业能够完成的更好。

七、展示PSP

PSP任务内容计划完成需要的时间(min)实际完成需要的时间(min)
  计划 20 30
Estimate g估计任务时间 30 30
Analysis 需求分析 10 10
Design Spec 设计 20 30
Design Review 设计复审 10 10
Design 具体设计 30 60
Coding 具体编码 40 90
Code Review 代码复审,查找语法错误 10 20
Test 测试报告 10 20
Test Report 测试,程序编译正确,运行结果正确 5 5
Size Measurement 计算工作量 5 10
Postmortem

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

5 5
原文地址:https://www.cnblogs.com/niuruixin/p/8613323.html