MathExam233

一、预估与实际

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

二、需求分析

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

  • 特点1
  • 在数学加减方面加减法必须在100范围以内,减法得出的结果不是能为负数
  • 特点2
  • 在数学乘除方面乘法必须满足乘法口诀表,除法方面除数必须为个位数,而且商也必须为个位数。

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

  • 小学一年级
  • 使用的数字必须小于100
  • 减法方面得出的结果必须为正整数
  • 小学二年级
  • 在乘法方面两个数满足乘法口诀表,小于10
  • 在除法方面,被除数小于90,商和除数还有余数必须为个位数。
  • 乘除法得出的结果为正数

三、设计

1. 设计思路

说明你如何设计这个程序

比如:

-对输入的数进行判断分析是否符合要求以及随机数

  • 根据输入的数判断一年级还是二年级
  • 熟悉加减法在一年级的需求
  • 熟悉乘除法在二年级的需求
  • IO流文件将题目和答案写入

2. 实现方案

写出具体实现的步骤

比如:

  • 准备工作:先在Github上创建仓库,克隆到本地,在本地文件夹中创建psp文件,再用桌面版的github comit传到本地仓库。
  • 技术关键点:

    1根据args[]输入来判断一年级还是二年级

    2用do while语句来判断除法的合理性

    3如何输出out.txt文件

四、编码

  • 随机数的生成 Math.random()
  • 根据args[]的length与正则表达式语句判断输入的符合加减运算还是乘除运算
  • 用IO流写入文本out.txt

1. 调试日志

  • 在为输入判断时防止输入字母和0开头的数字,用正则表达式解决
  • 在如何将args[]如何转换为整型用integer.valueof解决

    -在除法方面忽略了除数不能等于0的问题,以及商不能为两位数。

    -在输入方面忽略了范围的缩小,后来将最大题目数修改为1000以内。

2. 关键代码

for(int i=0;i<num;i++) {
String j="("+(i+1)+")"+" ";
d=(int) (Math.random()*10);
if(d%2==0 ) {
a=(int) (Math.random()*9+1);
b=(int) (Math.random()*9+1);
p="*";
k=String.valueOf(a*b);
}else {
p="/";
do {
a=(int) (Math.random()*90+1);
b=(int) (Math.random()*10+1);
e=a/b;
f=a%b;
if(f!=0) {
k=e+"..."+f;
}else {
k=String.valueOf(e);
}
}while(e<=0 || e>=10 || b==0);

这是一段乘除法运算的代码,通过随机生成d是否整数2来判断时乘还是除,因为乘法满足惩罚口诀表内的范围,所以将两个数的随机生成范围缩小到1-9,在do while循环里如果除数等于0或者被除数小于除数或者商大于0的时候重新生成随机数再次运算。

3. 代码规范

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

  • 在for循环/do while/if等语句必须加括号以及字与括号间的空格
  • 在if里嵌套多个if 要对应好if 与else 防止出错
  • 一般情况下使用空格缩进
  • 在括号方面在结束的时候必须换行,左边大括号后面要换行,右边大括号换行
  • 不能使用未定义的变量

五、测试

测试输入 输出 是否符合预期效果
001 输入错误。请重新输入
0 输入错误。请重新输入
0.1 输入错误。请重新输入
-10 输入错误。请重新输入
-10 1 输入错误。请重新输入
-10 2 输入错误。请重新输入
10 -1 输入错误。请重新输入
10 -2 输入错误。请重新输入
a 输入错误。请重新输入
a a 输入错误。请重新输入
1000 输入错误。请重新输入
1000 1 输入错误。请重新输入
1000 2 输入错误。请重新输入
999 正确输出
999 1 正确输出
999 2 正确输出

六、总结

  • 是否使用了“软件开发的基本策略:分而治之”,是否需要重构

    • 使用了“软件开发的基本策略:分而治之”,没有明显用到重构方法
  • “高质量的设计、规范的编码以及有效的测试是保证软件产品质量的三个重要方面”,你是否采用了相关的手段,是否需要重构
    • 适当的采用,重构能力弱用的不是很多。

作业MathExam的更多相关文章

  1. MathExam第二次作业

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

  2. MathExam作业

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

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

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

  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. 用NDK生成so给第三方用

    参考了https://blog.csdn.net/zi413293813/article/details/50074239 然后自己重新整理补充 我用的ndk-r10d ndk下载地址http://d ...

  2. javaScript真值和假值以及相等操作符

    真值和假值 相等操作符(==和===) 下面分析一下不同类型的值用相等操作符(==)比较后的结果 toNumber 对不同 类型返回的结果如下: toPrimitive 对不同类型返回的结果如下: = ...

  3. day91 DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

  4. linux ssh 连接设置

    ! 本文编辑中 centos ssh 无法连接

  5. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...

  6. C# 用QQ企业邮箱发邮件

    问题System.Net.Mail下的SmtpClient来发送邮件,而System.Net.Mail only仅支持Explicit SSL 不要465端口,用25,不用EnableSsl = tr ...

  7. RabbitMQ 安装 rabbitmq_delayed_message_exchange插件

    rabbitmq_delayed_message_exchange插件主要是实现延迟队列 一.下载插件 下载地址:http://www.rabbitmq.com/community-plugins.h ...

  8. x5webview 自定义全屏界面

    集成X5WEBVIEW可以选择全屏模式为标准全屏还是x5全屏,而不设置默认为false. 首先看看标准全屏的基本设置, if (webView.getX5WebViewExtension() != n ...

  9. android安卓生成密钥keystore(命令控制)

    android安卓生成密钥keystore(命令控制) • 配置JDK 详细教程 https://blog.csdn.net/u012934325/article/details/73441617/ ...

  10. Linux学习之常用命令(二)

    1.上次介绍了一些常用的系统命令,这次又总结了一些小命令,故分享一下: 网卡地址查询的命令: ifconfig #不同于Windows系统,它的是ifconfig而不是ipconfig ip -a # ...