zoukankan      html  css  js  c++  java
  • 结对编程练习-四则运算(第一周)

    20165226 结对编程项目-四则运算 阶段总结

    一、需求分析

    1、随机生成题目

    • 生成的题目个数从命令行输入
    • 用户可选择生成不同难度的题目,比如通过参数指定: (1) 运算符个数范围 (2) 运算符限定(小学一年级题目只生成 + - 题目)
    • 能多次生成题目

    2、题目运算(判题)

    • 支持多运算符
    • 支持整数
    • 支持真分数
    • 转换为后缀表达式(也可以直接计算中缀表达式)

    3、题目合法性判断

    • 可独立使用
    • 可用于测试生成题目的正确性

    4、扩展需求

    • 题目去重
    • 支持多语言
    • 处理生成题目并输出到文件
    • 完成题目后从文件读入并判题

    二、设计思路

    1、设计一个IntNumber类,用来实现整数的四则运算
    2、设计一个Judgement类,用来判断用户输入与实际计算值是否相等,并统计正确的次数
    3、设计主类,生成随机数,生成题目,并判断正确率
    4、设计测试类,测试整数类的四则运算

    三、核心代码及注释

    • Calculate
    import java.text.NumberFormat;
    import java.util.*;
    public class Calculate {
        public static void main(String[] args) {
            NumberFormat number = NumberFormat.getPercentInstance();
            Random ran = new Random();
            Scanner scan = new Scanner(System.in);
            while (true) {
                System.out.print("请输入要生成的题目数量:");
                int A = scan.nextInt();
                for (int i = 0; i < A; i++) {
                    int B = ran.nextInt(2);
                    int C = ran.nextInt(4);
                    IntNumber in1 = IntNumber.obj();
                    IntNumber in2 = IntNumber.obj();
                    Fraction score1 = Fraction.obj();
                    Fraction score2 = Fraction.obj();
                    if (B == 0) {//随机生成整数的计算题目
                        switch (C) {
                            case 0:
                                int num = in1.add(in2);
                                String num1 = "" + num;
                                int n = scan.nextInt();
                                Judgement.judge(n == num, num1);
                                break;
                            case 1:
                                num = in1.subtract(in2);
                                num1 = "" + num;
                                n = scan.nextInt();
                                Judgement.judge(n == num, num1);
                                break;
                            case 2:
                                num = in1.multiply(in2);
                                num1 = "" + num;
                                n = scan.nextInt();
                                Judgement.judge(n == num, num1);
                                break;
                            case 3:
                                num1 = in1.divide(score1);
                                String Q = scan.next();
                                Judgement.judge(Q.equals(num1), num1);
                                break;
                        }
                    } 
                System.out.println("你答对的题目总数:" +  Judgement.getTrues());
                double T = (double) Judgement.getTrues() / A;//计算正确率
                System.out.println("正确率为:" + number.format(T));
                System.out.println("是否继续生成题目?(y/n):"  );//多次生成题目,直到用户选择退出
                String s1 = scan.next();
                if (s1.equalsIgnoreCase("n")){
                    break;
                }
            }
        }
    }
    

    四、测试方法

    • IntNumber类的方法测试

    五、运行过程截图

    六、代码托管地址

    七、遇到的困难及解决方法

    • 问题1:- 问题一:看教程,本来应该在插件安装对话框的搜索中输入junit,单击JunitGenerator V2.0,单击绿色的Install按钮安装。但我没有搜到JunitGenerator V2.0

    • 问题一解决方案:通过百度搜索,在网上查找并下载:到本地,然后找到插件所在位置,再install plugin from disk

    八、对接对小伙伴的评价

    • 结对搭档:20165230田坤烨
    • 整个编程过程中最困难的是程序设计,其次是如何进行产品代码测试(具体测试哪一部分),最开始可谓是毫无头绪。通过讨论,先构建出基本的框架写出主函数,再一层一层套用函数,在编译运行成功之后写测试代码,不断调试之下,我们完成了整个项目。本次编程,我们更进一步学会了四则运算的编写及junit的测试运用,在不断地调试更改错误的过程中,收益很大。两个人的思维碰撞,显然更有效,但在之后的结对学习中希望能更明确自己的优势,使分工更明确,来提高结对学习效率。

    九、参考获引用的设计、实现

    十、PSP表格

    PSP Personal Software Process Stages) 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 30 70
    Estimate 估计这个任务需要多少时间 360 500
    Development 开发 60 100
    Analysis 需求分析 (包括学习新技术) 30 40
    Design Spec 生成设计文档 30 35
    Design Review 设计复审 (和同事审核设计文档) 25 20
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 15 30
    Design 具体设计 60 75
    Coding 具体编码 180 255
    Code Review 代码复审 30 25
    Test 测试(自我测试,修改代码,提交修改) 150 135
    Reporting 报告 60 90
    Test Report 测试报告 20 25
    Size Measurement 计算工作量 10 5
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 60 80
    合计 1120 1485
  • 相关阅读:
    有感于《CommunityServer 2007 beta》版本的发布
    企业内部办公自动化之---预定系统
    企业办公自动化之三--内部网的部分实现
    推荐一个超人气的类似MSN弹出的控件
    如何创建类型FreeTextBox的编辑器
    输出EXCEL文件的通用函数,很实用
    ASP导出Excel数据的四种方法
    常用的一些工具总结
    ASP2DLL工具
    分層排序的SQL
  • 原文地址:https://www.cnblogs.com/musea/p/8848688.html
Copyright © 2011-2022 走看看