结对编程练习-四则运算(第一周)

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

一、需求分析

1、随机生成题目

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

2、题目运算(判题)

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

3、题目合法性判断

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

4、扩展需求

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

二、设计思路

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

三、核心代码及注释

  • 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类的方法测试
    1047870-20180415184918418-1846303997.png

五、运行过程截图

1047870-20180415174441363-1909736571.png

六、代码托管地址

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

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

1047870-20180413195618961-1495462617.png

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

八、对接对小伙伴的评价

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

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

十、PSP表格

PSPPersonal Software Process Stages)预估耗时(分钟)实际耗时(分钟)
Planning计划3070
Estimate估计这个任务需要多少时间360500
Development开发60100
Analysis需求分析 (包括学习新技术)3040
Design Spec生成设计文档3035
Design Review设计复审 (和同事审核设计文档)2520
Coding Standard代码规范 (为目前的开发制定合适的规范)1530
Design具体设计6075
Coding具体编码180255
Code Review代码复审3025
Test测试(自我测试,修改代码,提交修改)150135
Reporting报告6090
Test Report测试报告2025
Size Measurement计算工作量105
Postmortem & Process Improvement Plan事后总结, 并提出过程改进计划6080
合计11201485

转载于:https://www.cnblogs.com/musea/p/8848688.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值