• 第一次作业


    作业一

    一、预估与实际

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

    二、需求分析

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

    • 特点1:20以内的数的认识以及加减法
    • 特点2: 没有小数,分数以及负数的运算
    • 特点3:加减法要简单

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

    • 使用的数字小于100
    • 加减法不能有小数,与负数

    三、设计

    1. 设计思路

    • 将要输入的n个题的n存在args[0]中
    • 设置随机输入的函数
    • 将运行结果存在out.txt
    • grade1运行一年级的加减,grade2运行二年级的代码

    2. 实现方案

    • 准备工作:先在Github上创建仓库,克隆到本地
    • 技术关键点:梳理一下设计思路,可能遇到哪些技术关键点
    • 上网查找一年级数学和二年级数学的特点,加减和乘除的难度范围
    • 规划代码的布局了解要用到什么函数,方法。

    四、编码

    在编码的时候不知道该如何实现代码,有的方法要去上网查找,以及题数要存入数组args[0]中,在这次实验中不能抛异常,要解决异常,在捕获异常时,要把定义的参数放在里面不然在外面调用时会没被定义。以及在输出的out.txt在换行时" "在编译器里就是换行了,不过在window中txt没有换行,要用“ ”.

    1. 调试日志

    记录编码调试的日志,请记录下开发过程中的 debug 历程
    打印的问题与答案要空格分开,systm.out.println(" ");println已经换一行了,加上“ ”换了两行,应system。out.println();
    以及在输出的out.txt在换行时" "在编译器里就是换行了,不过在window中txt没有换行,要用“ ”.
    在除法中除数不能为零,要在除法钱判断除数是否为零

    2. 关键代码

    int operator = (int)(Math.random()2); //随即产生除法或乘法
    if(operator==0){ //乘法
    int num1 = (int)(Math.random()
    21);
    int num2 = (int)(Math.random()21);
    result = num1 * num2;//乘法的结果
    System.out.println("("+(i+1)+") " + num1 + " * " + num2);//打印
    str1[i]="("+(i+1)+") " + num1 + " * " + num2;//将问题存入字符串str1
    str2[i]="("+(i+1)+") " + num1 + " * " + num2 + " = " + result;//将答案存入字符串str1
    byte[] x1 =str1[i].getBytes();//为了将字符串存入out.txt要转换字节
    byte[] x2 =str2[i].getBytes();
    byte[] x3 =fengge.getBytes();
    shuchu.write(x1);
    shuchu.write(x3);
    }
    else if(operator==1){//随即产生除法或除法
    int x = (int)(Math.random()
    21);//生成随机数
    int y = (int)(Math.random()*21);
    if(x%y==0 && y!=0 && x>y) {余数为零且除数不为零
    result = x / y;
    System.out.println("("+(i+1)+") " + x + " / " + y);
    str1[i]="("+(i+1)+") " + x + " / " + y;
    str2[i]="("+(i+1)+") " + x + " / " + y + " = " + result;
    byte[] x1 =str1[i].getBytes();
    byte[] x2 =str2[i].getBytes();
    byte[] x3 =fengge.getBytes();
    shuchu.write(x1);
    shuchu.write(x3);
    }
    if(x%y!=0 && y!=0 ) {余数不为零,除数不为零
    result = x / y;
    System.out.println("("+(i+1)+") " + x + " / " + y);
    str1[i]="("+(i+1)+") " + x + " / " + y;
    str2[i]="("+(i+1)+") " + x + " / " + y + " = " + result + "..." + (x%y);
    byte[] x1 =str1[i].getBytes();
    byte[] x2 =str2[i].getBytes();
    byte[] x3 =fengge.getBytes();
    shuchu.write(x1);
    shuchu.write(x3);
    }

    3. 代码规范

    1谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。
    2.[强制]异常不要用来做流程控制,条件控制。
    3.[强制] catch时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的catch尽可能进行区分异常类型,再做对应的异常处理。
    4.[强制]不能使用过时的类和方法。
    5.[推荐]不同逻辑、不同语义、不同业务的代码之间插入一个空行分割开来以提升可读性。
    6.右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
    7.左大括号前不换行。
    8.左大括号后换行。

    五、测试

    1.输入0 预期结果:输入不能为零 结果:符合预期
    2.输入-1 预期结果:输入不能小于零 结果:符合预期
    3.输入101 预期结果:输入不能大于100 结果符合预期

    六、总结

    这次代码虽然花了不少时间但是大多时候是在做无用功,效率低下;以及编程能力与方法和大一刚进来好不了多少,这次代码也没有全部完成,任务一二完成了输出,但是有很多bug不知道如何解决。以及对于完成代码的方法有些都是一头雾水不知道如何下手,写出的代码又臭又长,没有规范,写完任务一不知道如何在任务一的基础上写二,而且对于异常处理不知道如何处理。这次作业体现了我编程的薄弱,要多加练习,查资料,对于我这次作业我并不满意。我要再多打代码,希望以后的作业能更好地完成。

  • 相关阅读:
    SharePoint Framework 构建你的第一个web部件(二)
    win32
    win32
    win32
    win32
    C++ 将filesystem::path转换为const BYTE*
    win32
    win32
    win32
    win32
  • 原文地址:https://www.cnblogs.com/wwq123/p/9630942.html
Copyright © 2020-2023  润新知