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. .Net操作Excel公式实现

    //传入Excel公式,获取公式计算结果private string GetValue(string formula) { string result = ""; try { Ob ...

  2. vbs获取当前主机IP

    Function GetIP GetIP = ""        Dim objWMIService, colAdapters, objAdapter    strComputer ...

  3. 【星云测试】Devops微服务架构下具有代码级穿透能力的精准测试

    微服务是Devops场景下热门的开发框架,在大型项目中被广泛采用.它把一个大型的单个应用程序和服务拆分为数十个的支持微服务,独立部署.互相隔离,通过扩展组件来处理功能瓶颈问题,比传统的应用程序更能有效 ...

  4. Redis全方位详解--数据类型使用场景和redis分布式锁的正确姿势

    一.Redis数据类型 1.string string是Redis的最基本数据类型,一个key对应一个value,每个value最大可存储512M.string一半用来存图片或者序列化的数据. 2.h ...

  5. IntelliJ IDEA 历史版本下载地址

    地址:https://confluence.jetbrains.com/display/IntelliJIDEA/Previous+IntelliJ+IDEA+Releases scala插件:htt ...

  6. FPGA中ROM与RAM相关知识总结(五)

    把看到的关于存储的一些东西整理一下,有些话来自于网友,所以还是那句话,看到的人要带着自己的思考去看,记住尽信书不如无书,fighting!!! 一.基本概念 最熟悉的两个词语应该是RAM与ROM,RA ...

  7. Linux入门第二天——基本命令入门(上)

    一.常用命令介绍 常见命令可参考:http://man.linuxde.net/ http://linux.51yip.com/ 请对照参考! 常用的快捷键:http://blog.csdn.net/ ...

  8. c++ 条件判断

    if语句 认识算术比较 运算符表达式用法 关系运算符表达式 一. 基本的if语句 if (条件成立) { 则执行此语句 }; // ) printf("条件成立"); 二.认识算术 ...

  9. 3 huigu

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

  10. Asp.net中使用缓存(cache)

    做了一个时间优化的项目,目的就是缩短程序过程中的时间花费,最后发现了asp.net和asp.net core 中都有缓存工具来进行缓存,以加快访问速度. 找了官方demo来进行分析: ObjectCa ...