zoukankan      html  css  js  c++  java
  • MathExam

    MathExam v9.999

    一、预估与实际

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

    二、需求分析

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

    • 特点1:一年级的加减法都是在0-100间进行计算的
    • 特点2:都是整数,没有小数
    • 特点3:没有负数
    • 特点4:二年级乘法与除法源于九九乘法中的计算
    • 特点5:除法中除数不能为0

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

    • 加减法使用的数字为0-100
    • 生成减法时注意结果不能为负数
    • 乘法题只生成乘法表中有的

    三、设计

    1. 设计思路

    • 程序有一个类,主要有四个方法,用于实现以下几个目的:
      • 随机生成所需的数字
      • 对题目进行计算
      • 将题目与答案写入文档中
    • 算法的关键:
      • 判断输入的格式是否正确并给予提示
      • 如何按照正确的格式将题目写入文档

    2. 实现方案

    • 准备工作:先在Github上创建仓库,克隆到本地,编写代码后通过git远程上传到Github上
    • 思路:通过创建数组保存题目所需的两个数以及计算后的答案,最后按照格式写入文档中,另外在输入题数与年级时,需判断输入的格式是否正确,不正确时应给予相应的提示
    • 技术关键点:1.如何随机生成一个数字;2.如何判断输入的格式是否符合要求

    四、编码

    1. 调试日志

    首先从键盘输入一个数n,然后创建三个大小为n的整型数组和一个字符数组分别来记录题目所需的两个数、计算结果以及符号,之后随机生成n组数和符号,然后进行计算,最后按照格式将题目与答案写入文档中

    • 问题:第一次出的减法的题目中存在结果为负数的题目,后对其进行了修改,再没有对输入的数判断格式,后添加了判断其是否为数字的方法,当输入错误时给予提醒并重新输入

    2. 关键代码

    			for (int i = 0; i < a.length; i++) {
    				a[i]=(int)(Math.random()*101);
    				b[i]=(int)(Math.random()*101);
    				t=(int)(Math.random()*2);
    				while(a[i]<b[i]&&t==1) {
    					a[i]=(int)(Math.random()*101);
    					b[i]=(int)(Math.random()*101);
    					t=(int)(Math.random()*2);
    				}
    				if(t==0) d[i]='+';
    				else d[i]='-';
    			}
    		}
    		if(m==2) {
    			for (int i = 0; i < a.length; i++) {
    				t=(int)(Math.random()*2);
    				if(t==0) {
    					a[i]=(int)(Math.random()*10);
    					b[i]=(int)(Math.random()*10);
    				}
    				else {
    					a[i]=(int)(Math.random()*82);
    					b[i]=(int)(Math.random()*9)+1;
    				}
    				if(t==0) d[i]='*';
    				else d[i]='/';
    			}
    		}```
    随机生成我们所需要的数字
    
    ### 3. 代码规范
    
    请给出本次实验使用的代码规范:
    
    - 第一条:在 if/else/for/while/do 语句中必须使用大括号。 即使只有一行代码,避免使用单行的形式: if (condition) statements;
    - 第二条:表达异常的分支时, 少用 if-else 方式。如果非得使用 if()...else if()...else...方式表达逻辑,避免后续代码维护困难, 请勿超过 3 层
    - 第三条:有 try 块放到了事务代码中, catch 异常后,如果需要回滚事务,一定要注意手动回滚事务
    - 第四条:在使用正则表达式时,利用好其预编译功能,可以有效加快正则匹配速度
    - 第五条:Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。
    - 第六条:方法名首字母小写
    
    
    ## 五、测试
    - 输入:10
                  1(正确)
    - 输入:10 0/001/asdad/   545 45 4/
    			  1(请输入正确的题数)
    - 输入:10
    			1 0/001/asdasd/3(请输入正确的年级)
    - 输入:10 0/001/wqd/     4554  5 6 /
    			1 0/002/4/   1     /4  55  6/(请输入正确的题数与年级)			
    ## 六、总结
    注意将每个功能的代码单独写成一个方法,便于查看和理解;尽量将代码简化优化,减少不必要的变量的使用,选用更优的算法,避免开辟不必要的空间内存;注意理清代码的层次与结构,以及每个方法之间的联系
  • 相关阅读:
    二分搜索
    中文分词 (机械传统方法 )正向最大匹配
    推荐引擎概述(转自IBM worker)
    linux OS 多线程学习
    FastReport.Net传递报表参数
    MSSQL 2008 镜像的客户端数据库连接字符串
    FastReport.Net自动行高
    ReSharper 8.0开发版 ReSharper 8.0 Early Access
    客户端FastReport.Net默认界面语言
    ReSharper 7.0 正式版发布
  • 原文地址:https://www.cnblogs.com/txq1997/p/9630152.html
Copyright © 2011-2022 走看看