作业MathExam

MathExam233

一、预估与实际

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划600650
• Estimate• 估计这个任务需要多少时间600650
Development开发500530
• Analysis• 需求分析 (包括学习新技术)300300
• Design Spec• 生成设计文档6060
• Design Review• 设计复审3030
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)3030
• Design• 具体设计90100
• Coding• 具体编码400420
• Code Review• 代码复审2020
• Test• 测试(自我测试,修改代码,提交修改)6040
Reporting报告6080
• Test Repor• 测试报告3060
• Size Measurement• 计算工作量1530
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划1010
合计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正确输出

六、总结

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

转载于:https://www.cnblogs.com/rickowens/p/9626966.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值