MathExam

这是标题

一、预估与实际

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

二、需求分析

我通过询问亲戚家的小孩以及结合自身经验的方式了解到,小学一年级数学有如下的几个特点:

  • 特点1
  • 1.小学一年级的数学主要范围是10以内的加减法,其结果不会超过20。
  • 2.小学一年级的数学是以自然数为基础上建立的。
  • 3.分母不能为零。

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

  • 使用的数字小于10。
  • 应该使用int型数据类型。
  • 不应该出现负数。

三、设计

1. 设计思路

说明你如何设计这个程序

  • 用户输入的数据是否是该程序所需要的数据类型。
  • 程序本身生成的数据是否符合虚要。
  • 文件生成

2. 实现方案

写出具体实现的步骤

  • 准备工作:先在Github上创建仓库,克隆到本地

技术关键点:

  • 1.如何导出文件
  • 2.如何实现当输入字母是可以提示错误并重新输入
  • 3.随机符号的生成及应用

四、编码

  • 1.使用String path = "D:\java\out.txt"代码可以将输出的内容导出文件
  • 2.用char[]型保存一组数据,并判断每个数组保存的数据是否在0-9之间,然后转化为int型并用for循环实现将各个字符转换为一个数字。
  • 3.用数字代表符号并用Math.random函数实现数字的随机生成。

1. 调试日志

2. 关键代码

                    if(d == 1){//用d作为标记区分是小学几年级数学
			int a = (int) (0 + Math.random() * (11));
			int b = (int) (0 + Math.random() * (11));
			x[i] = a;//随机生成一个数字保存在x的数组里
			y[i] = b;//随机生成一个数字保存在y的数组里
			if(e == 0){//用e作为标记区分加减
				c[i] = '+';
				z[i] = x[i] + y[i];//记入结果
			}
			else{
				c[i] = '-';
				z[i] = x[i] - y[i];
			}
		}
		else if(d == 2){
			if(e == 0){//用e作为标记区分乘除
				int a = (int) (0 + Math.random() * (10));
				int b = (int) (0 + Math.random() * (10));
				x[i] = a;
				y[i] = b;
				c[i] = '*';
				z[i] = x[i] * y[i];
			}
			else{
				int a = (int) (0 + Math.random() * (10));
				int b = (int) (1 + Math.random() * (10));
				x[i] = a;
				y[i] = b;
				c[i] = '/';
				z[i] = x[i] / y[i];
				z1[i] = x[i] % y[i];//记入余数
			}
		}

3. 代码规范

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

  • 1.再循环语句与判断语句后应该用缩进4格
  • 2.注意缩写规范,避免忘文不知义
  • 3.不允许任何未经预先定义的常量直接出现在代码中
  • 4.左大括号前不换行,左大括号后换行,右大括号前换行,右大括号后还有东西这不换行,表示终止的右大括号后必须换行。

五、测试

  • 1.输入0,-1,11,等临界的数据
  • 2.输入面值极大的数据
  • 3.输入字母符号类数据

六、总结

请总结过程中的教训和经验,思考

  • 将一个个大问题分化为一个个小问题,并创建不同的java文档进行独立测试可以判断思路是否真确,
    然后将可以结合在一起的各个代码进行组合,可以轻松判断什么地方写的不完善。
  • 一个好的设计思路可以节省不少编写程序上的难度,
    规范的格式可以使你在不同时间编写的时候可以更加轻松的理解和修改,
    有效的测试是保证程序少出错的基本保证。
posted @ 2018-09-11 18:41  林书浩  阅读(216)  评论(0编辑  收藏  举报