个人作业1

没有大气又可爱的标题

一、预估与实际

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

二、需求分析

我通过百度的方式了解到,小学一、二年级数学有如下的几个特点:

-运算范围在100以内
-运算符号只有加减乘数

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

-小学一年级:
-100以内的相加减
-不能有负数

-小学二年级:
-九九乘法表内的乘法
-一百以内的被除数除以一位数的除数
-商不能出现小数

三、设计

1. 设计思路

  • 用户输入参数,输入的参数需要进行判断
  • 随机数生成
  • 判断输入的参数需要生成什么类型的题目
  • 题目及答案生成写入文本

2. 实现方案

  • 准备工作:先在Github上创建仓库,再用git克隆到本地
  • 技术关键点:计算符号的判断

四、编码

  • 实现用户输入
  • rand.nextInt()的方法随机生成随机数
  • if判断生成什么类型的题目(规范格式)
  • 最后用IO流写入文本

1. 调试日志

  • 进行判断时让字符串args【】与整型进行判断,后改为正则运算
  • 设计除法时,忽略了生成随机数时除数会生成0
  • 不输入参数或第二个参数没输入都会报错,后增加对args进行长度判断

2. 关键代码

    Random rand = new Random();
	if (grade==1)) {
         //1为一年级,2为二年级
		int d = 0;
		String x = "";
		String y = "";
		for (int i = 1; i <= n; i++) {
			int c = (rand.nextInt(2));// 0表示加法,1表示减法
			if (c == 0) {
				int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且之和不大于100
				int b = (rand.nextInt(100 - a));
				d = a + b;
			if (i != 1) {
					x = x + "\n";
					y = y + "\n";
				      }
				x = x + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=";// 将题目存入x
				y = y + "(" + i + ")" + " " + a + " " + "+" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y

			} else {

				int a = (rand.nextInt(100));// 随机生成两个0-99的相加减的数,且b不大于a
				int b = (rand.nextInt(10));
				d = a - b;
				if (i != 1) {
					x = x + "\n";
					y = y + "\n";
				}
				x = x + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=";// 将题目存入x
				y = y + "(" + i + ")" + " " + a + " " + "-" + " " + b + " " + "=" + " " + d;// 将题目及答案存入y

			}
		}

3. 代码规范

请给出本次实验使用的代码规范:
1.左大括号前不换行。
2.左大括号后换行。
3.右大括号前换行。
4.右大括号后还有else等代码则不换行
5.表示终止右大括号后必须换行。
6.if/for/while/switch/do等保留字与括号之间都必须加空格。

五、测试

测试内容 输入 预期 实际)
第一个参数 0 输入有误,程序结束1 符合预期
-5 输入有误,程序结束 符合预期
100000000 输入有误,程序结束 符合预期
a 输入有误,程序结束 符合预期
00000000000005 输入有误,程序结束 符合预期
5.5 输入有误,程序结束1 符合预期
5 生成五道一年级的题目 符合预期
第二个参数 5 -1 输入有误,程序结束 符合预期
5 100000000000 输入有误,程序结束 符合预期
5 a 输入有误,程序结束 符合预期
5 5 输入有误,程序结束 符合预期
5 2 生成五道二年级的题目 符合预期

六、总结

使用了“软件开发的基本策略:分而治之”
从一开始看到题目就头疼,觉得无从下手;再到有了初步构思,询问度娘及同学,到最后完成。我觉得这并不是什么困难的事情即使自己是一个小白,“世上无难事,只怕有心人”。
不知道重构是什么- -!!!

posted @ 2018-09-10 21:38  LIUZIMING  阅读(183)  评论(3)    收藏  举报