小学生最爱的计算题生成器

最可爱的标题

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划
? Estimate ? 估计这个任务需要多少时间 10 10
Development 开发
? Analysis ? 需求分析 (包括学习新技术) 30 60
? Design Spec ? 生成设计文档 30 30
? Design Review ? 设计复审 30 30
? Coding Standard ? 代码规范 (为目前的开发制定合适的规范) 5 5
? Design ? 具体设计 30 40
? Coding ? 具体编码 120 180
? Test ? 测试(自我测试,修改代码,提交修改) 30 30
Reporting 报告
? Test Repor ? 测试报告 30 30
? Size Measurement ? 计算工作量 10 20
? Postmortem & Process Improvement Plan ? 事后总结, 并提出过程改进计划 60 60
合计 495

二、需求分析

我通过查询教学大纲及研究相关试卷的方式了解到,小学一年级及二年级数学有如下的几个特点:

  • 特点1

    • 加法的和应该小于等于100
  • 特点2
    • 减法的差应该大于0
  • 特点3
    • 无论是加法还是减法,两侧数都不应该超过100
  • 特点4
    • 乘法只在99乘法表范围内
  • 特点5
    • 被除数要大于0小于100
  • 特点6
    • 除数应该是个位数

经过分析,我认为,这个程序应当:

  • 使用的数字小于100
  • 要保证加法时的不超过100
  • 要保证减法时的差不为负数
  • 乘法时左右两边都应该是个位数
  • 除法时要保证被除数大于除数
  • 被除数及除数不能为0
  • 除数及商需要为个数

三、设计

1. 设计思路

  • 这个程序有一个类,3个函数

    • 主函数负责判断传入参数是否合法并将合法参数传给math函数生成题目
    • check函数负责生成相应随机数并判断是否合适
    • math函数负责调用check函数获取合适的数值及符号最后写入文件
  • 算法的关键的关键是什么?
    • 生成合适的随机数
    • 各函数之间的功能联系
    • 出错后的提示,并且让程序顺利结束

2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地
  • 技术关键点:梳理一下设计思路,可能遇到哪些技术关键点
    • 随机数的使用,本程序需要大量的使用Math.random()方法
    • 全局静态变量的使用,本程序需要多个静态函数共享数据
    • ArrayList数组的使用,用该数组存储题目及答案的字符串,相比普通数组,该数组可以动态增加空间

四、编码

1. 调试日志

  • 在代码的什么位置,代码出现了什么问题,问题会导致什么结果,怎么解决的

    • 在主函数中判断参数时我直接将String类型的参数通过Integer.parseInt()方法转换成数值,当参数为非数值时程序则会出错。处理方法:用一个函数判断输入参数是否为数字字符串,最后再将字符串参数转为int型数值
    • 在主函数中,将字符串转为int型数值时,若传入参数数值超过int型数值范围则程序出错。处理方法:考虑到实际情况,用户需要的题目数量本就不需要太多,则可以直接限制出题数量,在判断完传入的参数字符串是数字串后直接限制字符串的长度不超过4,则可以保证数值不大于9999。

2. 关键代码

请展示一段程序的关键代码,并解释代码的作用

public static boolean checkOne() {
        a = (int) (0 + Math.random() * (100 - 0 + 1));
        b = (int) (0 + Math.random() * (100 - 0 + 1));
        // sym为1即为正,2即为负
        sym = (int) (1 + Math.random() * (2 - 1 + 1));
        if (sym == 1) {
            if ((a + b) > 100) {
                return false;
            } else {
                return true;
            }
        } else {
            if ((a - b) < 0) {
                return false;
            } else {
                return true;
            }
        }
    }
public static void mathOne(int n) {
        String prob;
        String ans;
        ArrayList<String> probs = new ArrayList<String>();
        ArrayList<String> anss = new ArrayList<String>();
        boolean end = false;
        for (int i = 1; i <= n; i++) {
            do {
                end = checkOne();
            } while (!end);
            // sym为1即为正,2即为负
            if (sym == 1) {
                prob = "(" + i + ")" + " " + a + " " + "+" + " " + b;
                ans = "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=" + " " + (a + b);
            } else {
                prob = "(" + i + ")" + " " + a + " " + "-" + " " + b;
                ans = "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=" + " " + (a - b);
            }
            probs.add(prob);
            anss.add(ans);
        }
    }
  • 该段代码有两个方法,math方法调用check方法用来生成符号及符号两边的数,并且判断生成的数是否合适,合适的时候该函数才会返回真,此时math才能继续执行,将问题及答案存入ArrayList数组。

3. 代码规范

请给出本次实验使用的代码规范:

  • 第一条、代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
  • 第二条、类名使用UpperCamelCase风格
  • 第三条、方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式。
  • 第四条、方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式。

五、测试

请思考并记录你认为必要的测试点,并记录测试用例与测试结果

测试项目 测试语句 预期结果 测试结果
不输入任何参数 java MathExam4269 输入的参数个数不为2,请重试 输入的参数个数不为2,请重试
输入一个参数 java MathExam4269 20 输入的参数个数不为2,请重试 输入的参数个数不为2,请重试
输入二个参数 java MathExam4269 20 1 成功写入20道一年级题目到文件out.txt 成功写入20道一年级题目到文件out.txt
输入二个参数且第一个参数小于0 java MathExam4269 -10 1 输入有误,请重新输入 输入有误,请重新输入
输入二个参数且第一个参数大于9999 java MathExam4269 10000 1 输入题数过大,请重试 输入题数过大,请重试
输入二个参数且第二个参数不为1和2 java MathExam4269 20 5 输入的年级有误,请重试 输入的年级有误,请重试

六、总结

  • 开始时应该花更多时间分析需求,设计程序架构,能为后续的开发提高很多效率
  • 要考虑到后续可能的升级,把需要的功能拆分成函数,专门的功能由专门的函数处理
  • 重复的代码太多,需要进一步优化
  • 调试程序时要考虑到尽可能多的情况

原文地址:https://www.cnblogs.com/lk123/p/9630840.html

时间: 2024-11-05 23:32:37

小学生最爱的计算题生成器的相关文章

MathExam小学一二年级计算题生成器V1.0

MathExam小学一二年级计算题生成器v1.0 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 ? Estimate ? 估计这个任务需要多少时间 880 1540 Development 开发 ? Analysis ? 需求分析 (包括学习新技术) 60 100 ? Design Spec ? 生成设计文档 20 20 ? Design Review ? 设计复审 10 20 ? Co

MathExamV2.0四则混合运算计算题生成器

MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 ? Estimate ? 估计这个任务需要多少时间 60 100 Development 开发 ? Analysis ? 需求分析 (包括学习新技术) 360 440 ? Design Spec ? 生成设计文档 20 20 ? D

PMP--可能会涉及到的计算题

一.进度管理里的历时三点估算历时的三点估算可能会出现在进度管理的计算题里.以下公式,大家要记住:说一下历时的三点估算中的几个值:1.最有可能的历时估算:Tm2.最乐观的历时估算: To3.最悲观的历时估算: Tp4.活动历时的均值=(To+4Tm+Tp)/65.由于是估算,难免有误差,其方差=(Tp-To)/6此处的方差与正态分布中的西格玛含义不同.西格玛是一个概率.1 西格玛是指活动在(平均值减1 个标准差,平均值加1 个标准差)内完成的概率,是一个常数,0.6827.例题:某项目完成估计需要

关于“计算题”程序的分析和总结

这次计算题程序已收官完成,再次进行分析和总结. 一.设计思路 1. 从txt读取算式. 2. 将算式由中缀转后缀. 3. 计算后缀算式并与用户输入答案进行比较,答案正确提示正确,答案错误提示错误并输出正确的答案.与此同时,统计用户正确与错误的次数以及题目的总数量. 4. 重复,直到算式全部计算完成,输出统计的正确错误数和题目的总数量. 二.具体实现 本程序运用了面向对象的设计思路.经过资料搜索,我发现有很多参考的程序.它们已经实现了中缀转后缀并输出正确结果并统计正误的功能,但无法计算分数.因此,

#82. 【UR #7】水题生成器

链接:http://uoj.ac/problem/82 今天是世界水日,著名的水题资源专家蝈蝈大臣向世界宣布了他的一项新发明 -- 水题生成器. 每道题目都有一个正整数的难度值.水题生成器虽然强大但是功能有限.水题生成器内部有一个参数 nn,你可以告诉水题生成器一个能整除 n!n! 的正整数 dd,水题生成器就会产生一道难度值恰为 dd 的水题.这里 n!n! 表示 nn 的阶乘. 现在蝈蝈大臣的助手欧姆想用水题生成器产生不超过 nn 道水题,且难度值之和恰为 mm.保证 1≤m≤n!1≤m≤n

[软考]决策树、最短路径、最大收益、盈亏平衡点、线性规划(信息系统项目管理师-计算题汇总)

开场白:已经是第五篇软考文章了,也是最后一篇计算题的文章,基本包含了信管考试的全部计算题,因为现在离考试还早,北京地区8月11日报名,可以先学习一遍,考前再来复习一遍.这篇文章包含了许多实例,不对各实例的意义进行讲解了,都比较简单,看实例讲解,会算就可以了. 前天发布的第四篇文章没有被推上首页,可能是因为大部分题的来源都在网上可以搜到.这里我对这些题进行了分析整理,把一些错误的答案,不明确的讲解进行了完善,试题图片也是参照众多版本选出最清晰的.所以虽是网上收集来的,但也付出了很多的时间,在自己学

读书-算法《程序设计导引及在线实践》-简单计算题2:棋盘上的距离

题目:棋盘上的距离 求国际象棋中王.后.车.象从起始位置到目标位置所需的最少步骤. 行走规则如下: 王:横.竖.斜都可以走,但每步只能走一格. 后:横.竖.斜都可以走,但每步格数不限. 车:横.竖都可以走,不能斜着走,每步格数不限. 象:只能斜着走,格数不限. 我没有下过国际象棋,但题目中这四种角色的行走规则.把题目翻译一下,在一个8*8 的矩阵里面,按照给定的规则从一个点到另一个点的最近路径,好像也不用翻译,题目就是这么说的. 代码实现如下: #include <stdio.h> #incl

2016年5月信息系统项目管理师临门一脚重点串讲(综合知识、案例分析、重点论文、计算题)

http://edu.51cto.com/course/course_id-5868.html 1.旨在帮助大家快速通过软考,少受备考的折磨与孤独. 2.28小时,不到2天的时间,快速学完100天的内容 3.着重梳理综合知识重点高频考点,快速提升大家综合知识得分能力 4.多角度剖析案例分析,提升大家案例分析应试能力. 5.从论文框架与模版.到重点论文的准备,尽在掌控. 为帮助大家提高复习效率,以最小的代价通过信息系统项目管理师,本套软考冲刺临门一脚,从以下方面进行课程优化与组合:1.信息化或计算

小学计算题一次大满足

海量小学计算题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 120 300 ? Estimate ? 估计这个任务需要多少时间 600 1460 Development 开发 ? Analysis ? 需求分析 (包括学习新技术) 120 300 ? Design Spec ? 生成设计文档 30 60 ? Design Review ? 设计复审 20 30 ? Coding Sta