• AloneQIan---第一次作业


    小学生的噩梦

    一、估计与实际

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

    二、需求分析

    我通过上网查百度和回忆自己的小学经历得到,小学一年级数学有如下特点:

    • 学习100以内的加减法
    • 100以内的比大小
      经过分析,我认为,这个程序应当:
    • 将输入数据控制在100以内

    三、设计

    1、设计思路

    • 要首先考虑用户输入数据在100以内
    • 在其中的判断语句中是否正确
    • 在不同的年级需要用什么语句去判断
    • 是否可以自己生成TXT文件
    • 要进行计算以及输出

    2. 实现方案

    • 准备工作1:先下一个QQ浏览器(具备整张网页翻译功能)
    • 准备工作2:将老师的repository中的Fork项目,将其Clone至本地
    • 在本地创建个人文件夹:
      文件夹名称:PSP6375
      源文件:MathExam6375
    • 技术关键点:Random,File,BufferedWriter

    四、编码

    • 生成随机数Manth.random()
    • 语句判断年级,符号,题目规范
    • IO流写入

    1. 调试日志

    • 输入除法是,输出错误
      解决方案:在生成数时+1
    • 输入减法是,输出有负数
      解决方案:判断第一个传入的数是否大于第二个数,如果小于,则符号“-”变为“+”
    • 输入负数时会报错
      解决方案:判断是否大于0且个数不超过9999,否则重新输入

    2. 关键代码

    for (int i = 0; i < n ; i++) {
    x = (int)(Math.random()100);//随机生成0-100的数
    y = (int)(Math.random()
    100);
    f = (int)(Math.random()*2);//随机生成0,1。0代表加号1代表减号
    // 判断加法和减法 0为加法
    if ( f == 0) {
    System.out.println("(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " ");
    str[i] = "(" + (i+1) + ")" +" " + x + "+" + y + " " + "=" + " " + (x+y);//存入数组
    }
    else{
    if (x-y < 0) {//若差为0减数被减数交换位置
    System.out.println("(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " ");
    str[i] = "(" + (i+1) + ")" +" " + y + "-" + x + " " + "=" + " " + (y-x);//存入数组
    }
    else {
    System.out.println("(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " ");//若差为0减数被减数交换位置
    str[i] = "(" + (i+1) + ")" +" " + x + "-" + y + " " + "=" + " " + (x-y);//存入数组
    }
    }
    }

    3. 代码规范

    • 常量命名全部大写,单词键用下划线隔开,力求语义表达完整,不要嫌名字长。
    • 杜绝完全不规范的缩写,避免忘文不知义。
    • 不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护

    五、测试

    • 输入5 2 预计显示二年级题目
    • 输入 5 1 预计显示一年级题目
    • 输入10 10 提示“”程序员能力有限,高年级还未完成”

    六、总结

    • 在写代码的时候要考虑到用户的使用感受以及用户的需求
    • 在写代码的过程中再清楚自己现在在写的是哪一步,下一步需要做什么
    • 要将“分而治之”的软件工程的思想运用进去,这样会使问题简单化
  • 相关阅读:
    有没有可能两个不相等的对象有有相同的 hashcode?
    适配器模式和装饰器模式有什么区别?
    JRE、JDK、JVM 及 JIT 之间有什么不同?
    我们能在 Switch 中使用 String 吗?
    解释对象/关系映射集成模块?
    解释 Java 堆空间及 GC?
    List、Set、Map 和 Queue 之间的区别?
    Java 中,Comparator 与 Comparable 有什么不同?
    两个相同的对象会有不同的的 hash code 吗?
    Java 中的编译期常量是什么?使用它又什么风险?
  • 原文地址:https://www.cnblogs.com/112233niu/p/9631880.html
Copyright © 2020-2023  润新知