MathExam第二次作业

第二次作业:MathExam

一、预估与实际

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

二、需求分析

我通过上网查询的方式了解到,小学一年级数学有如下的几个特点:

  • 循序渐进
  • 要注重题目的简易程度,且必须让孩子在学习的过程中既不能过于简单,且还要培养好孩子的学习的兴趣

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

  • 使用的数字不大于100
  • 加法的计算多考验孩子的进位,且不能出现孩子一年级还不能接受的:比如一个比较小的数字减去另一个比较大的数字,答案出现了一个孩子没有见过的负数。因为在小学一年级大部分的老师会给孩子们讲:我有5个苹果,分给了你3个,还剩几个?这是比较传统的减法的引入,如果有负数的出现,不仅不能让完整孩子做题,更不利于教师的教学
  • 对于小学二年纪的学生来说,乘除法还比较局限于乘法口诀表,所以乘法方面最好不要出现两位数乘以两位数,有可能出现超纲的情况。

    三、设计

1. 设计思路

  • 本程序的基本的要求就是小学的加减乘除的四则运算,所以题目的主体应该是判断使用者的年级,从而判断使用者做题的难易程度,若为一年级,则做加减法,若为二年级,则出加减乘除

2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地...
  • 技术关键点:random随机数值的设置必须要符合实际,本次的题目和答案全部保存在question和answer的两个数组中,且不能用System.out,println的输出方法输出了。import java.io.File能实现文件的操作,实参和形参之间的传送数据。

四、编码

第一个代码中设置一个值,从而可以判断加法还是减法,循环输出随机的题目。

1. 调试日志

try {
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("out.txt")), true));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
这一段代码是上学期Java高级开发学会的

2. 关键代码

public class MathExam2{

static int n;
static int grade;

public static boolean test(String A, String B) {
    grade=Integer.parseInt(B);
    n=Integer.parseInt(A);
    if(n>100) {
        System.out.println("输入的题数过多,请输入100以下的数字");
        return false;
    }
    return true;
}

public static void main(String[] args) {
    Random ran = new Random();
    int a;
    if(test(args[0], args[1])) {
        String[] question = new String[n+1];
        String[] answer = new String[n+1];
        File file = new File ("out.txt");
        try {
            System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("out.txt")), true));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

这段代码实现了实参和形参的传递,将问题和答案保存在String字符串中,方便输出。同时防止输入的题数过多,造成不必要的浪费。

3. 代码规范

  • 字母的大小写区分
  • 不可抛出异常
  • 命名不可使用拼音,严格使用英文,方便阅读者的阅读

    五、测试

第一组:10 2
输出结果:输出了10道加减乘除的题目
第二组:200 1
输出结果:输入的题数过多,请输入100以下的数字
第三组: 37 1
输出结果:输出了37道加减的题目

六、总结

本次代码的难度不算太难,只要想清楚其中的逻辑结构即可,但是题目中的错误处理确实是生活中会出现的问题,比如输入了过多的题数,或者输入了不是数字,则会使程序崩溃。所以在编程前一定要写好需求,在编程的过程中要随手记下出现的问题,及时解决,帮助文档是个好帮手,不懂的问题要及时去查。

转载于:https://www.cnblogs.com/L960416/p/9631011.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值