20165202 结对编程项目-四则运算 第一周

一、码云链接

二、需求分析

  • 实现一个命令行程序,要求:
  • 自动生成小学四则运算题目(加、减、乘、除)
  • 支持整数
  • 支持多运算符(比如生成包含100个运算符的题目)
  • 支持真分数
  • 统计正确率

三、设计思路(同时输出UML类图)

import java.util.Scanner;
import java.util.Random;
import java.io.IOException;
import java.lang.String;
public class sizeyunsuan {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入你想要做的题目的数量:");
        int num = scanner.nextInt();
        double result=0;
        double answer,accuracy;
        double right=0;
        for (int i=0;i<num;i++) {
            Random random = new Random();
            int num_1 = random.nextInt(100);
            int num_2 = random.nextInt(100);
            System.out.print("题目 "+(i+1)+" :\n");
            switch (random.nextInt(4)) {
                case 0:
                    result=Jisuan.add(num_1,num_2);
                    System.out.println(num_1+" + "+num_2);
                    break;
                case 1:
                    result=Jisuan.sub(num_1,num_2);
                    System.out.println(num_1+" - "+num_2);
                    break;
                case 2:
                    result=Jisuan.mul(num_1,num_2);
                    System.out.println(num_1+" * "+num_2);
                    break;
                case 3:
                    result=Jisuan.div(num_1,num_2);
                    System.out.println(num_1+" / "+num_2);
                    break;
            }
            System.out.println("请输入你的答案:");
            answer = scanner.nextInt();
            if (answer == result) {
                System.out.println("Right !!!");
                right++;
            } else
                System.out.println("Wrong !!! \nThe correct answer is : " + result);
        }
        accuracy = (double) (right / num) * 100;
        if(num==0) {
            System.out.println("答题结束 !!!");
        }
        else{
            System.out.println("答题完毕 !\n 你的正确率为 :" + accuracy + "%");
        }
    }

}

class Jisuan {
    static double add(int num_1,int num_2) {
        return (num_1+num_2);
    }

    static double sub(int num_1,int num_2) {
        return (num_1-num_2);
    }

    static double mul(int num_1,int num_2) {
        return (num_1*num_2);
    }

    static double div(int num_1,int num_2) {
        double temp;
        if (num_2!=0) {
            temp=num_1/num_2;
        }
        else
            temp=0;
        return temp;
    }
}

四、功能截图

五、结对感受

第一次正式合作结对编程,题目有一定难度所以我们在讨论设计的过程中花费了较多时间。虽然此前也接触过四则运算的编程题目,但这个项目的要求明显要高,多了很多额外条件。如果我一个人做的话,很可能因为题目的繁琐而消极怠工,无法完成。但通过我们两个人共同查阅资料,不断地交流、修改、讨论,终于解决了本题目也算是有一点点合作的成就感。我的编程水平不如李梓豪,很多时候他考虑问题要周全的多,所以在日后的合作中我还是要加强学习,努力完善自己的思维,提高自身能力。

六、PSP表格

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

七、参考或引用的设计、实现

八、结对编程照片

posted @ 2018-04-15 22:42  Haimi98  阅读(145)  评论(0编辑  收藏  举报