第一次编程作业

keep hard!

一、预估与实际

PSP2.1 Personal Softwar Process Stages Estimated Time(分钟)  Practical Time(分钟)
Planning 计划 600 550
  • Estimate
  • 估计这个任务需要多少时间
600 550
Development 开发 570 570
  • Analysis
  • 需求分析(包括学习新技术)
80 60
  • Design Spec
  • 生成设计文档
70 50
  • Design Review
  • 设计复审(和同学审核设计文档)
20 30
  • Coding Standard
  • 代码规范(为目前的开发制定规范)
30 40
  • Design
  • 具体设计
30 30
  • Coding
  • 具体编码
250 280
  • Code Review
  • 代码复审
30 20
  • Test
  • 测试(自我测试、修改代码、提交修改)
60 60
Reporting 报告 60 50
  • Test Report
  • 测试报告
20 20
  • Size Measurement
  • 计算工作量
20 10
  • Postmortem & Process Improvement Plan
  • 事后总结,并提出过程改进计划
20 20

 

二、需求分析

 我通过上网百度查询了解到,小学一年级数学的加减运算特点如下:

  1. 不会出现小数
  2. 运算结果数字不超过百
  3. 运算结果不存在负数

小学二年级数学的乘除运算特点如下:

  1. 运算应为表内乘法
  2. 算式为除法时被除数和除数均不能有0
  3. 运算结果不存在负数

三、设计

 1.设计思路

  • 分别写两个方法生成一年级和二年级的题目
  • OutPutFile()函数将题目和答案输出到out.txt文件
  • 写一个方法将out.txt文件内的内容进行打印输出
  • 主方法判断用户的输入方式
  • 算法的关键:
    • 判断输入的参数是否合法,对于不合法的各种情况需给予提示
    • 生成的数字是否满足大纲要求时的判断逻辑

 2.实现方案

写出具体实现的步骤

  • 准备工作:
    • 先在Github上Fork仓库,再克隆到本地
    • 编写任务1代码
    • 在任务1的基础上改进逻辑并增加任务2的功能
    • 优化任务二代码,并增加注释
    • 代码测试
  • 技术关键点:拼接可变字符串、按需求产生随机数、文件io流、输入参数的各种判断

四、编码

 1.调试日志

  1.生成一年级减法数学计算题时,产生了结果为负数的算式。

  • 解决方法: 当生成的算式为减法时,判断被减数是否小于减数,若返回true,则将它们互换。

  2.OutPutFile()函数,将可变字符串转成二进制流打印却一直为空。

  • 解决方法:发现在主函数创建的可变字符串str在init()函数里面又重新创建了一次,删除init()函数里面的str可解决问题。

2.关键代码

 

// 定义商和余数
  String quotient = null;
  String remainder = null;
  // 判断算式是乘法运算还是除法运算
  if (randomSign.equals(")) {// 当算式为除法时,重新生成两个因数,使得两个因数小于81
  numberOne = randomNumber.nextInt(80) + 1;
  numberTwo = randomNumber.nextInt(80) + 1;
  // 判断被除数是否大于除数
  if (numberOne > numberTwo) {// 判断是否能够整除
  if ((numberOne % numberTwo) == 0) {
  quotient = numberOne / numberTwo + "";
  Result[i] = quotient;
  } else {
  quotient = numberOne / numberTwo + "";
  remainder = numberOne % numberTwo + "";
  Result[i] = quotient + "..." + remainder;
  }
  // 修改因数后要相应的修改算式
  Calculate[i] = "(" + i + ")" + " " + numberOne + ' ' + randomSign + ' ' + numberTwo + " = ";
  } else {
  // 当被除数小于除数时将被除数和除数互换
  if ((numberTwo % numberOne) == 0) {
  quotient = numberTwo / numberOne + "";
  Result[i] = quotient;
  } else {
  quotient = numberTwo / numberOne + "";
  remainder = numberTwo % numberOne + "";
  Result[i] = quotient + "..." + remainder;
  }
  Calculate[i] = "(" + i + ")" + " " + numberTwo + randomSign + numberOne + " = ";
  }
  } else {
  Result[i] = numberOne * numberTwo + "";
  }

  

 3.代码规范

  1. 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式
  2. 杜绝完全不规范的缩写,避免忘文不知义
  3. 不允许任何魔法值(即未经预先定义的常量)直接出现在代码中
  4. 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式
  5. if/for/while/switch/do等保留字与括号之间都必须加空格
  6. 大括号的使用约定。如果是大括号内为空,则简介地写成{}即可,不需要换行;如果是非空代码块则:
    • 左大括号前不换行
    • 左大括号后换行
    • 右大括号前换行
    • 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行
  7. 避免采用取反逻辑运算符
  8. 方法参数在定义和传入是,多个参数逗号后边必须加空格

五、测试

测试序号 具体输入 预期结果 实际结果
1 java MathExam6325 0 警告!格式错误! 符合预期结果
2 java MathExam6325 10 正常执行输出10道1年级加减运算 符合预期结果
3 java MathExam6325 10 1 正常执行输出10道1年级加减运算 符合预期结果
4 java MathExam6325 10 2 正常执行输出10道2年级乘除运算 符合预期结果
5 java MathExam6325 100 警告!格式错误! 符合预期结果

六、总结

  1. 完成了第一次的作业收获蛮多,大部分时间都花在百度翻资料上了,此外我还发现在编写代码之前的准备工作是极其重要的,逐渐感受到‘分而治之’的道理。
  2. 代码重构是编程的一个关键点,巩固好基础知识也很关键,不然经常很多东西一头雾水,所以仍需努力!

猜你喜欢

转载自www.cnblogs.com/si1ence/p/9632474.html