小学生计算题生成器,燃烧你的梦啊!!
小学生计算题生成器,燃烧你的梦啊!!
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 60 |
• Estimate | • 估计这个任务需要多少时间 | 600 | 600 |
Development | 开发 | 300 | 300 |
• Analysis | • 需求分析 (包括学习新技术) | 45 | 30 |
• Design Spec | • 生成设计文档 | 10 | 10 |
• Design Review | • 设计复审 | 10 | 10 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
• Design | • 具体设计 | 30 | 30 |
• Coding | • 具体编码 | 60 | 60 |
• Code Review | • 代码复审 | 30 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 10 | 10 |
• Test Repor | • 测试报告 | 10 | 10 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 |
合计 | 700 |
二、需求分析
我通过百度的方式了解到,小学一年级数学有如下的几个特点:
- 特点1 一年级数学,两个加数都是100以下
- 特点2 结果不能出现负数
我通过百度的方式了解到, 小学二年级数学有如下的几个特点:
- 特点1 二年级数学,有乘法和除法了
- 特点2 除法结果不能出现小数,分数
经过分析,我认为,这个程序应当:
- 使用的数字小于100
- 减法的被减数比减数大
- 除法的结果要用有余数的表示方法
三、设计
1. 设计思路
说明你如何设计这个程序
-这个程序有一个类,主要有四个方法以实现以下的目的
--一,判断输入的题目数量,年纪等参数是否合法,不是则重新输入
--二,生成随机数,用以构建算式
--三,将题目与答案输入到文档当中
2. 实现方案
-准备工作 : 先在Github上创建仓库,,并fork老师的Mathexem2018仓库,最后克隆到本地
- 技术关键点:如何随机生成数字,与随机生成运算符
四、编码
1. 调试日志
- 最开始,我使用了int类型作为输入题目数量的参数类型,但是在运行过程中发现如果输入的不是数字程序会直接报错。后来改成了字符串类型解决了这个问题
2. 关键代码
if (grade1) {
char[] ch= {'+','-'};
for (int i=0;i<s1.length;i++) {
s1[i]=(int)(Math.random()100+1);
s2[i]=(int)(Math.random()100+1);
sign[i]=ch[ra.nextInt(ch.length)];
if (s1[i]<s2[i]) {
H=s1[i];s1[i]=s2[i];s2[i]=H;
}
if (sign[i]'+') {
s3[i]=s1[i]+s2[i];
}
else {
s3[i]=s1[i]-s2[i];
}
str[i]="("+(i+1)+")"+" "+String.valueOf(s1[i])+" "+String.valueOf(sign[i])+" "+String.valueOf(s2[i])+"\r\n";
str2[i]="("+(i+1)+")"+" "+String.valueOf(s1[i])+" "+String.valueOf(sign[i])+" "+String.valueOf(s2[i])+" "+"="+String.valueOf(s3[i])+"\r\n";
}
-这段代码的作用是,获取随机数,然后将算式整合保存成字符串类型
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条:在 if/else/for/while/do 语句中必须使用大括号。 即使只有一行代码,避免使用单行的形式: if (condition) statements;
- 第二条:方法名首字母小写
-第三条: 尽量使代码排版简洁
并人工检查代码是否符合规范
五、测试
-输入 输出
-1 请输入年级
-2 两道乘除法计算题
-dsa 请输入数字
-10 请输入年纪
-3 请输入正确年级,1或者2
六、总结
请总结过程中的教训和经验,思考
注意将每个功能的代码单独写成一个方法,便于查看和理解;尽量将代码简化优化,减少不必要的变量的使用,选用更优的算法,避免开辟不必要的空间内存;注意理清代码的层次与结构,以及每个方法之间的联系