燃烧我的脑细胞

一、预估与实际

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

二、需求分析

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

  • 特点1
  • 一年级上:主要还是在打计算的基础,包括20以内的进位加法,和20以内的减法,还不涉及退位减法,为了巩固好基础,也加强了连加连减的运算
  • 一年级下:主要是20以上的加减的计算,包括进位和退位之间的复杂计算
  • 二年级:主要学习表内乘法和除法,万以内数的读法和写法,万以内数的加减法(不进位、退位)含有加、减、乘、除的两步计算题和括号的认识,也就是简单的两步计算的四则混合运算的法则.简单的两步计算的应用题.

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

  • 使用的数字小于100
  • 不能使用分数

三、设计

1. 设计思路

  • 一年级二年级放一起做写的时候再想怎么分开(结果费了很长时间才做好)

2. 实现方案

写出具体实现的步骤

  • 准备工作:先在Github上创建仓库,克隆到本地.
  • 设计大纲:设置整体运算,分类输出
  • 技术关键:实现根据年级进行输出

四、编码

是编码的过程中很不小心,很多次出现bug,一个字母一个字母的检查还是发现不了错误,最后没办法删了这个片段重新打,然后就过了,到最后也没发现错误在哪,以至于有种电脑坏了的感觉。而且忘记分类了,代码已经写出来了,这个样子写其实不太好分类,绞尽脑汁,改了不知道多少次才改好==。

1. 调试日志

记录编码调试的日志,请记录下开发过程中的 debug 历程

  • emmmm....第一次没分类跑回去改
  • 第二次,输出不全,这个更麻烦,跑回去,重新打了几遍,也没怎么改(没印象有改动,因为看了代码感觉没啥问题),就过了

2. 关键代码

请展示一段程序的关键代码,并解释代码的作用
···
private static String[][] buildQuestion(int count, int grade){

	if(count < 0){
		count = 1;
	}/*修改题目数量*/
	if(grade < 1){
		grade = 1;
	}/*修改年级数量*/
	if(grade==1) {
		grade=1;
	}

	int limited = grade * 20;
	Random random = new Random();
	String[][] 	RT= new String[count][4];
	for (String[] arr : RT) {
		
		int wohenkun = random.nextInt(limited);
		
		int danshimeizuohao = random.nextInt(limited);
		
		if(grade==1) {/*分类*/
			int woxiangshuijiao = random.nextInt(2);
			if( woxiangshuijiao == 0 ) {
			arr[1] = " + ";
			arr[3] = String.valueOf(wohenkun + danshimeizuohao);	
			}/*加*/
			else if(woxiangshuijiao==1 ) {
				arr[1] = " - ";
				arr[3] = String.valueOf(wohenkun - danshimeizuohao);
				
			/*减*/
			}}
		if(grade==2) {
			int woxiangshuijiao = random.nextInt(2);
			
			 if(woxiangshuijiao==1) {arr[1] = " × ";
			arr[3] = String.valueOf(wohenkun * danshimeizuohao);/*乘*/
			}		
				
			
			
			 else {
				 arr[1] = " ÷ ";
					while(danshimeizuohao == 0){
						danshimeizuohao = random.nextInt(limited);
					}
					int remainder = (wohenkun%danshimeizuohao);/*余数*/
					if(remainder == 0){
						arr[3] = String.valueOf(wohenkun/danshimeizuohao);
					}else{
						arr[3] = String.valueOf(wohenkun/danshimeizuohao) + "..." + String.valueOf(remainder);/*除*/

					} 
			 }
	}

		  arr[0] = String.valueOf(wohenkun);
			arr[2] = String.valueOf(danshimeizuohao);
	}
	return RT;
	
}

···

3. 代码规范

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

  • 代码中的命名均不能以下划线或美元符号开始,也不能一下划线或美元符号结束。
    -第六条:任何二目、三木运算符的左右两边都需要加一个空格。 说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。

并人工检查代码是否符合规范

五、测试

请思考并记录你认为必要的测试点,并记录测试用例与测试结果
-测试点:一年级与二年级的题目是否分开
输入:5 1 输出:
(1) 14 - 2 =
(2) 6 + 7 =
(3) 11 + 17 =
(4) 3 + 16 =
(5) 6 + 17 =
------------------标准答案------------------
(1) 14 - 2 = 12
(2) 6 + 7 = 13
(3) 11 + 17 = 28
(4) 3 + 16 = 19
(5) 6 + 17 = 23
211506368 霍金池 2018年 09月 12日 04:25

六、总结

请总结过程中的教训和经验,思考
自己要学习的还很多,在编程的时候明显感觉到自己能力的不足,很多知识不会用甚至不知道,而且思路比较僵硬,有些解决方案要很久才能想出来,还有粗心的坏习惯,总是这里少写一点,那里少写一点。
经验,下次,一定一定一定要想好了在写T-T,改代码是真的伤脑子。

posted on 2018-09-12 04:53  瞎子换盆  阅读(350)  评论(2编辑  收藏  举报