小学生最爱的计算题生成器
最可爱的标题
一、预估与实际
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 | 成功写入20道一年级题目到文件out.txt | 成功写入20道一年级题目到文件out.txt |
输入二个参数 | 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
小学生最爱的计算题生成器相关推荐
- 小学计算题生成器横式(C语言版)
#include <stdio.h> #include <stdlib.h> #include<math.h>int main(void) {float a;flo ...
- python计算公式程序_小学生计算题的自动程序Python,生成,python
小学生的计算题自动生成小程序「python」 #!/usr/bin/python # -*- coding: UTF-8 -*- #liuqiping fred from docx import Do ...
- 懒人版小学生1-6年级计算题练习(口算练习)可直接电脑上答题或者打印题目
[懒人版]小学生1-6年级计算题练习 欢迎使用 软件编程语言 软件功能 软件操作流程 下载地址 软件使用到的工具 欢迎使用 网上众多小学生计算题练习(小学生口算练习)软件使用起来都不是很方便.网上现有 ...
- 小学生计算题软件产品设计
原型设计加用户规格说明 蔡晨旸349 蔺皓雯369 工具:墨刀 博客作业:https://edu.cnblogs.com/campus/fzzcxy/2016SE/homework/2180 原型链接 ...
- 中国式小学生计算题软件规格说明书
功能规格说明书 此次作业说明:原型设计 + 用户规格说明书 原型设计工具:墨刀 作业效果:MathExam 开发者 ?? 335 吴沂章 ?? 318 林锃寒 一.引言 编写目的 明确MathExam ...
- 【运算】超长小学生计算题
超长小学生计算题 给你一个序列,序列长2e6,接下来给出你2e7个运算操作,包括加减乘除四种操作,其中,加减操作是单点修改,除法操作是全局修改,对于除法操作我们保证不会产生分数,也就是说这个过程中一定 ...
- 一位粗心的同学在用计算机计算某题时,浅谈如何纠正小学生在数学中做题粗心的问题...
浅谈如何纠正小学生在数学中做题粗心的问题 宝塔区南关小学课题组 李 乐 摘 要:粗心,是孩子的通病,低年级学生尤为突出.粗心问题是学生错题.导致学习成绩不好的最主要原因,如何纠正学生做题粗心的问题,是 ...
- 小学生的计算题自动生成小程序「python」
小学生的计算题自动生成小程序「python」 #!/usr/bin/python # -*- coding: UTF-8 -*- #liuqiping fred from docx import Do ...
- 第15周-小学生计算题(0-10的随机数乘法运算记分系统)
问题及代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:questions.cpp *作 者:单昕昕 *完成日期 ...
最新文章
- python怎么画形状_python – matplotlib – 如何绘制随机导向的矩形(或任何形状)?...
- android的文本框内容居中显示图片,DIV+CSS中让布局居中_背景图片居中_文字内容居中...
- Kubernetes安装之十:配置node节点之kube-proxy
- 如何提高Google Adsense单价:点击率篇
- !--[if IE]….![endif]-- (!--[if !IE]||![endif]--)的用法
- php图片抖动,css3,jquery_css3图片抖动,css3,jquery - phpStudy
- c++word书签_「职场必备」干货!WORD办公软件快捷键,小编整理拿走不谢
- 背景图层和普通图层的区别_图层样式(一)—高级混合选项
- wxWidgets第四课 EVT_LEFT_UP关联鼠标弹起事件不生效
- sqlserver中某列转成以逗号连接的字符串及逆转、数据行转列列转行
- rabbitmq队列中消息过期配置
- 根据自身工作经验总结的一个工作问题解决思路
- MySQL group by语句用法
- 净空法师质疑,人的生命真的变长了吗
- 五种经典网页布局设计
- Labview 中AniGIF控件及注册方法
- LINUX下汉化CodeBlocks
- ccproxy如何设置
- 安卓开机自启动app
- 在c语言的switch 语句中,的case后面的表达式,switch语句中case后面的值必须是什么?...
热门文章
- Windows Mobile开发总结 (转帖)
- html中字在圆形上怎么写代码,绘制圆形在文档里面
- 百度交易中台之订单系统架构浅析
- docker:更换镜像源
- Java企业级开发概念辨析
- 荒野行动显示未选择服务器咋弄,荒野行动连接不上服务器怎么办 荒野行动连接不上服务器解决方法...
- 数字信息化时代,VR会议开启商务云洽谈新方式
- 为什么Python在列表和元组的末尾允许使用逗号?
- 【书】《查令十字街84号》
- MT5G芯片天玑800/MTK6873/MT6873WiFi6+Android10.0 NSA和SA双模5G核心板