• 小学生快乐刷题


    学无止境

    一、预估与实际

    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之间的题目数,否则题目重复,请重新输入 预期结果:符合测试

    六、总结

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

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

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

  • 相关阅读:
    常用的android弹出对话框
    Android 启动后台运行程序(Service)
    java 日期获取时间戳
    stringbuffer与stringbuilder的区别
    Linux记录-sysctl.conf优化方案
    Linux记录-salt分析
    Hadoop记录-fair公平调度队列管理
    Linux记录-GC分析
    Hadoop记录-hdfs转载
    Linux记录-salt-minion安装
  • 原文地址:https://www.cnblogs.com/nxq7/p/9629379.html
Copyright © 2020-2023  润新知