给小学生减轻负担的小程序
给小学生减轻负担的小程序
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 15 | 30 |
• Estimate | • 估计这个任务需要多少时间 | 720 | 1100 |
Development | 开发 | 50 | 60 |
• Analysis | • 需求分析 (包括学习新技术) | 30 | 50 |
• Design Spec | • 生成设计文档 | 30 | 50 |
• Design Review | • 设计复审 | 10 | 15 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 30 |
• Design | • 具体设计 | 40 | 60 |
• Coding | • 具体编码 | 300 | 500 |
• Code Review | • 代码复审 | 50 | 60 |
• Test | • 测试(自我测试,修改代码,提交修改) | 30 | 30 |
Reporting | 报告 | 70 | 90 |
• Test Repor | • 测试报告 | 35 | 45 |
• Size Measurement | • 计算工作量 | 10 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 1100 |
二、需求分析
我通过百度的方式了解到,小学一二年级数学有如下的几个特点:
-
特点1:数值过大,100以内的数
-
特点2:没有负数,都为正整数
-
特点3:减法需要减数大于被减数
-
特点4:乘法需要个位数,除法要有余数
经过分析,我认为,这个程序应当:
- 使用的数字小于100
- 数字要大于等于0
- 两数之差不能小于0
- 两数之和不能大于100
- 除数不能为0
三、设计
1. 设计思路
- 这个程序需要一个主类,三个方法
- 主类的作用是通过用户传入的年级和出题数从而来判断要调用哪个方法来运行
- 方法的作用是通过传入的题目数来决定要出几道题,并且通过算法随机出题,并把题目和答案存在数组里
- 第三个方法用来输出这个数组
- 还需要一个文本txt把题目和答案打印在这个文本文件里
2. 实现方案
- 先在Github上创建仓库,克隆到本地
- 如果要在eclipse上编写代码然后在cmd上运行,需要把package去掉
- 要用args[]来判断参数的个数
- 需要使用File类来创建一个txt文件
- 用try catch 来排除那些不合格的参数
四、编码
1. 调试日志
记录编码调试的日志,请记录下开发过程中的 debug 历程
- 刚开始只能用Scanner来进行参数的输入不好进行参数的计数,后来了解到args原来是个数组,就用args.length来计算参数的数量以此来判断是否有二年级的题目需要进行随机生成
- 在刚开始时没有考虑的参数的种类只能是正整数,从而使得测试的时候输入负数,小数使运行结果出错,后面使用try catch 排除了不合格的参数
- 除数不能为0的情况
2. 关键代码
if(args.length==1) {//判断参数个数
try {
n = Integer.parseInt(args[0]);
if (n <= 0) {
System.out.println("题目数量不能为0或负数,请重新输入!");
}
} catch(NumberFormatException e) {
System.out.println("题目数量必须为正整数,请重新输入!");
}
String[] str= new String[50];
File file =new File("out6333.txt");//创建txt文件
PrintStream ps = new PrintStream(file);
System.setOut(ps);//把题目答案放到txt文件里
n = Integer.parseInt(args[0]);
grade1(n,str);//调用方法随机生成一年级数学题
System.out.println("-------------标准答案------------");
answer(n,str);//把答案打印出来
}
3. 代码规范
请给出本次实验使用的代码规范:
- 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
- 中括号是数组类型的一部分,数组定义如下: String[] args
- 不允许任何未经定义的常量直接出现在代码中
- 在 if/else/for/while/do 语句中必须使用大括号。 即使只有一行代码,避免使用单行的形式
并人工检查代码是否符合规范
五、测试
实验1
- 输入参数0时 输出:题目数量不能为0或负数,请重新输入! 符合预期
- 输入参数-1时 输出:题目数量不能为0或负数,请重新输入! 符合预期
- 输参数1.1时 输出:题目数量必须为正整数,请重新输入! 符合预期
实验2
- 输入参数5 3时 输出:高年级题目还未编译完成,敬请期待!符合预期
- 输入参数5 0时 输出:年级不能为0或负数,请重新输入!符合预期
- 输入参数5 -1时 输出:年级不能为0或负数,请重新输入!符合预期
六、总结
请总结过程中的教训和经验,思考
- 在写代码的时候需要认真思考分析用户的需求
- 在编写代码时需要认真思考每一步需要做什么,不要像个无头苍蝇写到一半才思考下一步的内容
- 多向身边的人请教