第1次作业

小学数学题生成器开发
本文介绍了一个针对小学一二年级学生的数学题生成器的设计与实现过程。从需求分析出发,明确了适用年龄层的特点及功能需求,并详细记录了设计、编码、测试等阶段的工作流程与心得。

小学一二年级数学题MathExam369

一、预估与实际

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

二、需求分析

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

  • 特点1
  • 掌握数量关系和几何图形最基础知识即可
  • 特点2
  • 学生要有进行整数四则计算的能力
  • (1) 认识100以内数字
  • (2)100以内加减乘除法
  • (3)长度单位的认识
  • (4)了解某数比某数多几的特点

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

  • 使用的数字小于100
  • 不能使用分数小数
  • 不能使用负数

三、设计

1. 设计思路

说明你如何设计这个程序

比如:

  • 首先要初始化文件函数,创建文件输出流
  • 确保输入的参数不能过大,必须是正整数
  • 根据输入的参数随机生成式子
  • 运用随机数,查阅资料
  • 将题目和答案存入out.txt文件

2. 实现方案

  • 准备工作:先在Github上创建仓库,fork老师的文件,克隆到本地文件,再使用远程传输。
  • 技术关键点:远程传输时git commit clone等的用法。

四、编码

  • 在编写完运算以后,要将题目和答案都存入文件
  • 要考虑多种情况,如输入参数的大小问题

1. 调试日志

  • 一开始使用的是

    int operate = (int) (Math.random() * 2 + 1);
    int result = 0;// 每题的结果 //
    if (operate == 1) {// 1做加法 //
    int num1, num2;
    do {
    num1 = (int) (Math.random() * 101);
    num2 = (int) (Math.random() * 101);
    } while (num1 + num2 > 100);
    result = num1 + num2;}
    else if (operate == 2) { // 2做减法 //
    int num1, num2,m; // 产生两个整数,用大的减去小的 //
    num1 = (int) (Math.random() * 100);
    num2 = (int) (Math.random() * 100);
    if (num1 < num2) {
    m=num1;
    num1=num2;
    num2 = m;
    result = num1 - num2;//不够精炼//
    }

  • 但是最后的结果总是出现乱码,编译并没有什么错误,最后放弃了选择了另一种方法。

    2. 关键代码

       num1 = (int) (Math.random() * 101);
       num2 = (int) (Math.random() * 101);
       sub = (int) (Math.random() *2);
      String symbol = fuhao[sub];
      switch (symbol) {
      case "+":
          result = num1 + num2;
          break;
      case "-":
          if (num1 <num2) {
              int m = num1;
              num1 = m;
              m = num2;
          }
          result =num1 - num2;
          break;
      default:
          System.out.println("错误");
      }
  • 运用随机数随机出现两个数,在进行加法运算时,二者相加,减法运算时,若num1小于num2,则用大的减去小的数。

3. 代码规范

请给出本次实验使用的代码规范:

  • 类名首字母应该大写。每个单词的首字母大写。
  • 避免异常
  • 人工检查代码是否存在错误
  • 包名必须小写
  • 除了get set函数外其他函数要注释。
  • 资源文件后面加文件后缀。
  • 避免下划线
  • 避免类似的名字,或者仅仅是大小写不同的名字
  • 如果变量名是集合,变量名应用负数 如int [] students

五、测试

测试例结果
3000000参数过大
xbxb报错
1(1) 52 + 28 (1) 52 + 28 = 80

六、总结

  • 在理解题目要求时便花费了非常多的时间,即使构思设计了很久最后的方案还是不理想
  • 编程时对异常、文件输出流等的方法都不是很清楚,花费了非常多的时间还是无法编译成功,之后不停的改方法,编译成功后又无法在文件中输入,终于可以输入后出现的都是乱码,最后终于成功了但代码还是不够完善
  • 在遇到题目后应该首先设计思路,再施行,每一步要分工明确,不能开始打代码了才发现自己设计的不理想,而打完后应该多测试,尽量改到最好
  • 要把时间分配好,做到少而精
  • 代码规范很重要
  • 学会注释,方便以后查看

转载于:https://www.cnblogs.com/hwlc--/p/9612876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值