作业MathExam
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的更多相关文章
- MathExam第二次作业
		第二次作业:MathExam 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 20 30 • ... 
- MathExam作业
		作业 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estimate • ... 
- MathExam第二次作业(升级版)
		MathExamLv2——林华伟 211506319 陈珍 211406263 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实 ... 
- MathExam小学一二年级计算题生成器V1.0
		MathExam小学一二年级计算题生成器v1.0 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning ... 
- python10作业思路及源码:类Fabric主机管理程序开发(仅供参考)
		类Fabric主机管理程序开发 一,作业要求 1, 运行程序列出主机组或者主机列表(已完成) 2,选择指定主机或主机组(已完成) 3,选择主机或主机组传送文件(上传/下载)(已完成) 4,充分使用多线 ... 
- SQLServer2005创建定时作业任务
		SQLServer定时作业任务:即数据库自动按照定时执行的作业任务,具有周期性不需要人工干预的特点 创建步骤:(使用最高权限的账户登录--sa) 一.启动SQL Server代理(SQL Server ... 
- 使用T-SQL找出执行时间过长的作业
		有些时候,有些作业遇到问题执行时间过长,因此我写了一个脚本可以根据历史记录,找出执行时间过长的作业,在监控中就可以及时发现这些作业并尽早解决,代码如下: SELECT sj.name , ... 
- T-SQL检查停止的复制作业代理,并启动
		有时候搭建的复制在作业比较多的时候,会因为某些情况导致代理停止或出错,如果分发代理时间停止稍微过长可能导致复制延期,从而需要从新初始化复制,带来问题.因此我写了一个脚本定期检查处于停止状态的分 ... 
- Python09作业思路及源码:高级FTP服务器开发(仅供参考)
		高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ... 
随机推荐
- ZOJ 3983 Crusaders Quest(思维题)
			C - Crusaders Quest Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu S ... 
- 公司架构理解 - 千万 pv 网站
			1.面试题 - 花架构图 commander 控制台,请求处理器 crp 资源分配器 相当于仓管 .推荐系统的架构流程图和每一个模块的作用一定要了解,一般会让你一边画流程图一边讲解每个模块. 2.我自 ... 
- H.264编码格式简单分析
			H.264的重要性不再提了.本文主要记录一下H.264的编码格式.H.264官方文档:https://github.com/jiayayao/DataSheet/tree/master/encode- ... 
- C++类型转换符重载
			对于用户自定义的类类型,实现它们和其他数据类型之间的转换有两种方法:(1)通过转换构造函数进行类型转换:(2)通过类型转换函数进行类型转换:转换构造函数: 类名(待转换类型) { 函数体; } ... 
- oracle 事务 数据伪列
			在用户进行数据更新操作(DML)事务一定会起作用. 事务的出现会保证数据的完整性.一致性.在整个事务的处理过程之中主要使用两个操作命令: · 事务的提交(COMMIT):是真正的向数据库之中发出更新指 ... 
- 如何在Windows版本的VMware虚拟机上安装苹果系统
			有时我想玩玩苹果系统,但自己有没有mac,只能在虚拟机上装一个苹果玩玩,但又由于某些原因虚拟机软件VMware不支持安装苹果系统,还在有大佬出于不明目的,在网上散布了适用于Windows版本的VMwa ... 
- json keyname map
			var obj = { fname:'zhao', lname:'yao', parents:{ father:'zhao' }, children:[ { dname:'zhaoyiyi' } ] ... 
- # 课堂测试(CH6)20155218
			课堂测试(CH6) 1. 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A . 1 B . 1/4 C . 1/2 D . 3/4 解析:在x[0],y[0]时发 ... 
- mfc 类对象数组
			知识点 类对象数组定义 类对象数组初始化 一.类对象数组定义 我们声明类对象数组,与我们申明内置类型数组的形式完全相同. 如: ]; ]; Tdate d[]; 二.类对象数组的初始化 .调用默认构造 ... 
- 【转载】怎样在C++工程中集成C#窗口
			原文:http://www.cnblogs.com/clever101/archive/2009/12/14/1624204.html 本文转自博客园,此文作者依据codeproject英文版本翻译! ... 
