小学生快乐刷题

学无止境

一、预估与实际

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划6040
• Estimate• 估计这个任务需要多少时间7001190
Development开发6501130
• Analysis• 需求分析 (包括学习新技术)50300
• Design Spec• 生成设计文档2080
• Design Review• 设计复审1035
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)105
• Design• 具体设计6060
• Coding• 具体编码360550
• Code Review• 代码复审3050
• Test• 测试(自我测试,修改代码,提交修改)3040
Reporting报告6060
• Test Repor• 测试报告2020
• Size Measurement• 计算工作量1010
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划3030
合计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="\r\n";    // 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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值