MathExam

一、预估与实际

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

二、需求分析

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

  • 特点1:认识100以内的数
  • 特点2:不知道负数
  • 特点3:认识0
    小学二年级数学有如下的几个特点:
  • 特点1:学会9*9乘法表
  • 特点2:有余数除法
    经过分析,我认为,这个程序应当:
  • 小学1年级
  • 使用的数字小于100
  • 和小于100
  • 差大于等于0
  • 小学二年级
  • 乘法使用9*9乘法表内的数字
  • 除法除数不能为0

三、设计

1. 设计思路

  • 这个程序有1个类,4个函数【main(),gradeOne(),gradeTwo().outPut()】,在主函数中调用gradeOne(),gradeTwo().outPut()
  • 算法的关键的关键是随机数和判断用户输入的参数

2. 实现方案

  • 准备工作:先在Github上创建仓库,克隆到本地...
  • 技术关键点:参数个数的识别,符号的随机

四、编码

  • 获取用户输入的参数
  • 使用random函数随机生成100以内的数和0-1的数,用0,1表示符号
  • 生成随机题目
  • 输出到out.txt文档中
  • 输出学号姓名时间
  • 修改参数的不是正整数的时候的提示

1. 调试日志

  • 若只输入一个参数则会报错,应给grade一个初始值。
  • Random函数的随机是根据种子来随机的若种子一样则随机数一样缺省是当前的毫秒
  • 将text file encoding设置为UTF-8后cmd无法直接编译要用javac -encoding UTF-8才能编译

2. 关键代码

static Random fuhao = new Random();
static Random num1 = new Random();
static Random num2 = new Random();
for (int i = 0; i < n; i++) {
if (c[i] == 0) {
// 随机加法
while (a[i] + b[i] > 100) {
// 如果和大于100重新随机
a[i] = num1.nextInt(100);
b[i] = num2.nextInt(100);
}
} else {
// 随机减法
while (a[i] - b[i] < 0) {
// 如果差小于0重新随机
a[i] = num1.nextInt(100);
b[i] = num2.nextInt(100);}
}
}

3. 代码规范

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

  • 第一条在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用单行的编码方式:if (condition) statements;
  • 第二条类型与中括号紧挨相连来定义数组;
  • 第三条IDE的text file encoding设置为UTF-8;
  • 第四条注释的双斜线与注释内容之间有且仅有一个空格;
  • 第五条不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。
  • 第六条单行字符数限制不超过120个,超出需要换行,换行时遵循如下原则:
  • 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
  • 运算符与下文一起换行。
  • 方法调用的点符号与下文一起换行。
  • 方法调用时,多个参数,需要换行时,在逗号后进行。
  • 在括号前不要换行.
  • 第七条注意 Math.random() 这个方法返回是 double 类型,注意取值的范围 0≤x<1(能够取到零值,注意除零异常),如果想获取整数类型的随机数,不要将 x 放大 10 的若干倍然后取整,直接使用 Random 对象的 nextInt 或者 nextLong 方法。
  • 第八条if/for/while/switch/do等保留字与括号之间都必须加空格。

五、测试

测试id 测试内容 输入数据 预期结果 实际结果
1 输入1个参数 10 输出10道1年级题 符合预期
2 输入参数过大 11111 "请输入0-500的题目数" 符合预期
3 输入字符串 poi "您输入的不是正整数,请输入正整数" 符合预期
4 输入小数 7.77 "您输入的不是正整数,请输入正整数" 符合预期
5 输入000000000001 000000000001 输出1道1年级题 符合预期
6 输入2个参数 10 2 输出10道2年级题 符合预期
7 第二个参数输入字符串 10 shimakaze "您输入的不是正整数,请输入正整数" 符合预期
8 第二个参数大于2 10 10 "现只支持1-2年级,请输入1-2的数字" 符合预期

六、总结

  • 使用了“软件开发的基本策略:分而治之”;
  • 对于第一次设计和代码规范还是略有不足,望下次吸取这次的经验教训

MathExam的更多相关文章

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

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

  2. MathExam第二次作业

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

  3. MathExam任务一

    小学一二年级数学计算题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 35 • Es ...

  4. MathExam Lv2

    一个大气又可爱的算术题----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) ...

  5. MathExam V2.0

    # 隔壁村小学的小朋友都羡慕哭了2.0版 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 1 ...

  6. 作业MathExam

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

  7. MathExam作业

    作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ...

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

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

  9. 作业1MathExam

    自己取一个大气又可爱的标题 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 720 1000 ...

随机推荐

  1. vue-cli 配置 proxyTable pathRewrite

    vue-config-index.js中,proxyTable中的pathRewrite有什么用呢? 首先,在ProxyTable模块中设置了‘/api’,target中设置服务器地址,也就是接口的开 ...

  2. 求组合数的O(n^2)和O(n)解法及模板

    概率论中的组合数应该比较熟悉吧,在数论中组合数也具有重大意义,下面介绍组合数的解法: 方法一O(n^2): 利用公式(n,m)=(n-1,m-1)+(n-1,m): 模板: #include<c ...

  3. 23【notepad++】修改背景颜色

    notepad++是一款功能丰富的编辑器,运行在windows平台上的编辑工具. 但它默认设置是白色背景,黑色文字,长时间看很刺眼.那么怎么设定成为暗色背景,亮色文字呢? 点击,设置->语言格式 ...

  4. 项目总结04:SQL批量导入数据:将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库

    将具有多表关联的Excel数据,通过sql语句脚本的形式,导入到数据库 写在前面:本文用的语言是java:数据库是MySql: 需求:在实际项目中,经常会被客户要求,做批量导入数据:一般的简单的单表数 ...

  5. struct在C和C++中的使用总结

    主要理解一下两点: 1.在C和C++中struct的常规使用. 2.在C++中struct和class基本一致,除了在访问控制权限方面,即: 通过struct关键字实现的类,属性,函数默认的访问权限为 ...

  6. linux命令学习之:du

    du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 语法 du [选项][文件] 选项 -a或-all 显示目录中个 ...

  7. linux命令学习之:cd

    cd命令用来切换工作目录至dirname. 其中dirName表示法可为绝对路径或相对路径.若目录名称省略,则变换至使用者的home directory(也就是刚login时所在的目录).另外,~也表 ...

  8. python3入门教程

    python : 3.5 jdk : 1.7 eclipse : 4.5.2(有点低了,需要对应Neon 4.6,不然总是会弹出提示框) 应该学习最新版本的 Python 3 还是旧版本的 Pytho ...

  9. C#中泛型的解释(object,list,var,dynamic的区别)

    泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的 ...

  10. Django中使用django_debug_toolbar

    一 概述 django_debug_toolbar 是django的第三方工具包,给django扩展了调试功能. 包括查看执行的sql语句,db查询次数,request,headers,调试概览等. ...