作业

一、预估与实际

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

二、需求分析

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

  • 特点1
  • 多数为100以内的加减法运算

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

只出现100以内的加减法,且减法的结果不能出现负数

三、设计

1. 设计思路

说明你如何设计这个程序

  • 控制台负责传入输入的题目数量
  • 生成对应的题目
  • 要保证不能出现负数
  • ...

2. 实现方案

写出具体实现的步骤

比如:

  • 准备工作:先在Github上创建仓库,克隆到本地...
  • 技术关键点:Random,File.Scanner的使用

四、编码

  • 编码过程:
  • Math方法:
    • 传入数字n
    • 定义一个str字符串接收n,并判断n是否是合法输入
    • 定义两个随机数和一个运算符进行运算,并将过程结果添加到ArrayList集合中
    • 写入out.txt文件中
  • mian函数
    • 调用Math方法,运行程序

1. 调试日志

  • 输入非法字符时,程序会出现异常
  • 只出现加法或减法的题目

2. 关键代码

			ArrayList<String> info = new ArrayList<String>();
String answerinfo = "";
for (int m = 0; m < n; m++) {
int x = (int) (Math.random() * 2);
int y = (int) (Math.random() * 101);
int z = (int) (Math.random() * 101);
if ((y - z) < 0) {
x = 0;
}
if (x == 0) {
symbol = "+";
answerinfo = y + " " + "+" + " " + z + " " + "=" + " "
+ (y + z);
info.add("\n" + "(" + (m + 1) + ")" + " " + answerinfo);
} else {
symbol = "-";
answerinfo = y + " " + "-" + " " + z + " " + "=" + " "
+ (y - z);
info.add("\n" + "(" + (m + 1) + ")" + " " + answerinfo);
} System.out.println("(" + (m + 1) + ")" + " " + y + " "
+ symbol + " " + z + " " + "=");
input.close();
}
System.out.println("----------------------" + "标准答案 "
+ "-----------------------");
System.out.println(info);

3. 代码规范

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

  • 第一条

    左大括号前不换行

    左大括号后换行

    右大括号前换行

    右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行

  • 第二条 出现异常时使用try-catch处理,不用throws抛出

五、测试

测试序号 具体输入 结果
1 java MathExam6347 0 未显示题目
2 java MathExam6347 10 生成10道一年级题目
3 java MathExam6347 -1 请输入正确的数字
4 java MathExam6347 s 请输入正确的数字
5 java MathExam6347 # 请输入正确的数字

六、总结

  • 第一次看到作业题目的时候自己就和无头苍蝇一样无从下手,上网查阅了一些资料之后有了一些头绪,在写代码的过程中不停地在碰壁,经常出现bug,异常,死循环,或者没有出现想要的运算结果,还好没有放弃,最后勉强完成了作业,虽然中间还有很多瑕疵,但这次作业对自己来说是一次真正的历练,对自己以后的编程学习有非常大的帮助,希望自己以后更加努力,写出更好的代码

MathExam作业的更多相关文章

  1. MathExam第二次作业

    第二次作业:MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 30 • ...

  2. MathExam第二次作业(升级版)

    MathExamLv2——林华伟 211506319 陈珍 211406263   一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ...

  3. 作业MathExam

    MathExam233 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 600 650 • ...

  4. MathExam小学一二年级计算题生成器V1.0

    MathExam小学一二年级计算题生成器v1.0 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning ...

  5. python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)

    类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ...

  6. SQLServer2005创建定时作业任务

    SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ...

  7. 使用T-SQL找出执行时间过长的作业

        有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下:   SELECT sj.name , ...

  8. T-SQL检查停止的复制作业代理,并启动

        有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ...

  9. Python09作业思路及源码:高级FTP服务器开发(仅供参考)

    高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...

随机推荐

  1. P2049 魔术棋子

    题目描述 在一个M*N的魔术棋盘中,每个格子中均有一个整数,当棋子走进这个格子中,则此棋子上的数会被乘以此格子中的数.一个棋子从左上角走到右下角,只能向右或向下行动,请问此棋子走到右下角后,模(mod ...

  2. SICP 习题 (1.35)解题总结

    SICP 习题 1.35要求我们证明黄金切割率φ 是变换函数 x => 1+ 1/x 的不动点,然后利用这一事实通过过程fixed-point 计算出φ的值. 首先是有关函数的不动点,这个概念须 ...

  3. MapReduce开发程序,运行环境配置

    Hadoop主机:linux 开发环境主机:Win7 + Itellij 本地运行 1. 下载hadoop安装包,放到本地目录中. 2. 配置环境变量$HADOOP_HOME及$PATH=$HADOO ...

  4. C++ 动态内存

    原文:https://www.w3cschool.cn/cpp/cpp-dynamic-memory.html C++ 动态内存 了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员 ...

  5. Subsonic 介绍

    SubSonic:一个数据层构建器(BLL) 导言 一 个易维护的应用程序,不同的类之间有不同的分工,通常分为界面层.业务层和数据访问层.虽然这一技术有利于更好地组织应用,一些开发人员不愿这么做.创建 ...

  6. 2017-2018-2 《网络对抗技术》 20155322 Exp4 恶意代码分析

    [-= 博客目录 =-] 1-实践目标 1.1-实践介绍 1.2-实践内容 1.3-实践要求 2-实践过程 2.1-Mac下网络监控 2.2-Windows下网络监控 2.3-Mac下恶意软件分析 2 ...

  7. mysql是否区分大小写

    1.是否区分 库名.表名.列名.别名 的大小写? ------------------------------------------------------------------ [ Linux] ...

  8. 3 huigu

    w   +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 组件复用 --------------- ...

  9. 【LG3722】[HNOI2017]影魔

    [LG3722][HNOI2017]影魔 题面 洛谷 题解 先使用单调栈求出\(i\)左边第一个比\(i\)大的位置\(lp_i\),和右边第一个比\(i\)大的位置\(rp_i\). 考虑\(i\) ...

  10. 基于Cocos2d-x-1.0.1的飞机大战游戏迁移到Cocos2d-x-3.0版本,并移植到Android平台成功运行

    一.版本迁移中的问题 1.游戏元素Sprite.Label.Action等等的创建函数名都改为create. 2.函数的回调callfunc_selectorcallfuncN_selectorcal ...