码迷,mamicode.com
首页 > 其他好文 > 详细

20194684 + 自动生成四则运算题第一版报告

时间:2019-09-07 22:17:52      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:analysis   public   range   gen   html   commons   generator   计划   命令行   

前提需求

要求:使用C或Java语言完成一个自动生成四则运算试题的程序

软件基本功能如下。

  1. 自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
  2. 剔除重复算式。2+3 和 2+3 是重复算式,2+3 和 3+2 不属于重复算式
  3. 题目数量可定制
  4. 相关参数可控制
    1. 是否包含乘法和除法
    2. 操作数数值范围可控
    3. 操作数是否含负数
  5. 生成的运算题存储到外部文件result.txt中

需求分析

某幼儿园,老师要每天出30道加减乘除法题目给孩子做。于是,想写一个脚本完成这件事。

功能设计

  • 基本功能
    • 可配置题目数量
    • 支持加减乘除
    • 可配置操作数范围
    • 支持操作数正负性质
  • 扩展功能
    • 可输出答案
    • 可控制题目中数字数量
    • 自动保存到文件

设计实现

项目已开源, 开源地址: https://github.com/Tomotoes/arithmetic-generator

点击此处下载应用

项目中所用到的库如下:

项目的入口函数:

package com.tomotoes;

import lombok.val;

public class Main {
    public static void main(String[] args) {
        Option option = Args.parse(args);
        Generator generator = new Generator(option);
        val arithmetics = generator.getArithmetics();
        Log log = new Log("./result.txt");
        arithmetics.forEach(log::toFile);
        log.close();
    }
}

其中Args 类用来解析命令行参数, 并配置成 Option 对象

Option 类,是项目的统一配置信息

Generator 类负责生成四则运算方程式

public void generate() {
  StringBuilder formula = new StringBuilder();

  IntStream.range(0, quantity).forEach(i -> {
    String num = number.getRandom();

    val isDiv = formula.toString().trim().endsWith("/");
    if(isDiv){
      while ("0".equals(num)) {
        num = number.getRandom();
      }
    }
    formula.append(number.getRandom());

    if (i != this.quantity - 1) {
      formula.append(' ').append(operator.getRandom()).append(' ');
    }
  });

  if (!arithmetics.contains(formula.toString())) {
    this.arithmetics.add(formula + " = " + Script.resolve(formula.toString()));
    return;
  }
  generate();
}

Log 类负责打印结果,和保存结果

测试运行

技术图片

后记

呃.. java 的轮子真圆~

PS: 能不能使用其他语言开发...

PSP

PSP2.1 任务内容 计划完成需要时间(min) 实际完成需要时间(min)
Planning 计划 5 10
Estimate 估计时间,规划步骤 5 10
Development 开发 30 145
Analysis 需求分析 5 20
Coding 具体编码 20 120
Test 测试 5 5
Reporting 报告 20 40
Postmortem&Process Improvement Plan 总结改进 20 40

20194684 + 自动生成四则运算题第一版报告

标签:analysis   public   range   gen   html   commons   generator   计划   命令行   

原文地址:https://www.cnblogs.com/jinma/p/11483298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!