小学生快乐刷题

学无止境

一、预估与实际

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

二、需求分析

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

  • 特点1 小学1年级的加减法数字一般不会超过20,不会有小数
  • 特点2 小学1年级减法不会有小减大出现负数答案

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

  • 使用的数字小于21且大于0的整数
  • 被减数不能小于减数

三、设计

1. 设计思路

说明你如何设计这个程序

比如:

  • 这个程序有1个类,在main方法中直接通过构造函数调用
  • Math.random是可以生成随机数的关键
  • 要将字符串转换为字节流来存入txt文本
  • 找到一些输入错误的bug

2. 实现方案

写出具体实现的步骤

比如:

  • 准备工作:先在Github上创建仓库,克隆到本地...
  • 技术关键点:Math.random, byte,File的应用

四、编码

  • 用args数组来实现从命令行中接收参数,否则不能直接输入参数运行

  • 用byte把字符串转换为字节流

  • 用Math.random进行随机数的生成

1. 调试日志

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

比如:

  • 字符串无法写入到txt文本,用byte转出字节流写入

  • 数组越界,扩大数组

  • 无法用命令行直接传参,用args数组解决

2. 关键代码


/*

** Create or reuse a zero-terminated string, first checking in the

** cache (using the string address as a key). The cache can contain

** only zero-terminated strings, so it is safe to use 'strcmp' to

** check hits.

*/

    c[0] = Integer.parseInt(args[0]);
	    c[1] = Integer.parseInt(args[1]);
		String[] timu=new String[c[0]+1];	// 创建数组存入题目
		String[] daan=new String[c[0]+1];
		String huanhang="
";    // windows的换行,在cmd运行方便观看
		File file = new File("out.txt");
        FileOutputStream u = new FileOutputStream("out.txt");
		if(!file.exists()) {
			file.createNewFile();
		}    // 创建out.txt文本
}
		if(c[1]==1) {
		for(i=1;i<=c[0];i++) {
			fuhao=(int)(Math.random()*2);
			if(fuhao==0) {
			 a=(int)(Math.random()*21);   
	         b=(int)(Math.random()*21);
	         int answer=a+b;
	         System.out.println("("+i+")"+a+"+"+b+"=");
	         timu[i-1]="("+i+")"+a+"+"+b+"=";
	         daan[i-1]="("+i+")"+a+"+"+b+"="+answer;
	         byte[] ti =timu[i-1].getBytes();	// 将字符串转换为字节流为了写入txt文件
	         byte[] da =daan[i-1].getBytes();
	         byte[] h=huanhang.getBytes();
	         u.write(ti);	// 将转换好的字节流写入txt
	         u.write(h);
}

3. 代码规范

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

  • 如果有异常进行手动处理,不抛出,并人工检查代码是否符合规范

  • 左大括号前不换行。
    左大括号后换行。
    右大括号前换行。
    右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。

  • 采用4个空格缩进,禁止使用tab字符

五、测试

测试输入:java MathExam6374 5000 1测试结果:请输入1-400之间的题目数,否则题目重复,请重新输入 预期结果:符合测试
测试输入:java MathExam6374 -1 1 测试结果:输入的题目数请大于1,请重新输入 预期结果:符合测试
测试输入:java MathExam6374 10 3 测试结果:本程序仅支持1年级和2年级,请重新输入 预期结果:符合测试
测试输入:java MathExam6374 100 2 测试结果:请输入1-81之间的题目数,否则题目重复,请重新输入 预期结果:符合测试

六、总结

由于自己大一大二有些混水摸鱼,比较懒惰,现在写代码才感觉到力不从心,大三想改变一点,没放弃不断查资料,向别人求教,去花更多的时间完成别人很快能解决的问题,但我要坚持下去,不懂就问,慢慢进步

  • 并没有看“软件开发的基本策略:分而治之”

  • 勉强完成代码才看到规范,以后要注意,从规范化做起。

原文地址:https://www.cnblogs.com/nxq7/p/9629379.html