作业1---四则运算

   一.需求分析:

除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24

运算符为 +, −, ×, ÷

并且要求能处理用户的输入,并判断对错,打分统计正确率。

要求能处理用户输入的真分数, 如 1/2, 5/12 等

使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目。

 

 二.功能设计:

根据所写的代码,随机生成数字以及运算符号,并且组合成式子。

能生成分数,并且是最简分数。

输入计算结果后,如正确,输出正确,错误,则输出正确答案,并且能统计出错的题目个数。

   

三.设计实现:

此次实验,设置了4个class,主类--Main用来调用其他类,负责输入输出,判定结果以及统计错误个数

                                    类--result 计算

                                    类--fenshu 求最大公约数

                                    类--qqq用来生成的式子

 

四.代码说明:

主要的是main和qqq两个类

main类:用循环语句来计算错误的个数,当number=0时,则跳出循环错误个数加1.

import java.util.Scanner;
public class Main {
    static randomqqq rand = new randomqqq();
    static result end = new result();

    public static void main(String[] args) {
        int number = 0;
        int falseNum = 0;
        String userresult, trueresult, fenzi, fenmu;
        Scanner in = new Scanner(System.in);
        System.out.print("输入随机生成的式子个数:");
        number = in.nextInt();
        for (; number != 0; number--) {
            rand.randTest();
            System.out.println("你输入的答案是:");
            Scanner result = new Scanner(System.in);
            userresult = result.nextLine();
            trueresult = Integer.toString(rand.result);
            if (rand.m == 0 && rand.randNum != 3) {
                trueresult = Integer.toString(rand.result);
            } else {
                trueresult = Integer.toString(rand.fenzi) + "/" + Integer.toString(rand.fenmu);
            }

            if (userresult.equals(trueresult)) {
                System.out.println("答案正确!");

            } else {
                falseNum++;
                System.out.println("答案错误!  正确的答案:" + trueresult);
            }
        }
        System.out.println("错误的个数:" + falseNum);
    }
}

 

类qqq:选择参数,计算出式子

int temp1 = yuefen.getnumber(a, c);
        int temp2 = yuefen.getnumber(b, d);
        int temp4 = yuefen.getnumber(a, b);        
        int fz = end.up(a, b, c, d, randNum);
        int fm = end.fenmu(a, b, c, d, randNum);
        int temp3 =yuefen.getnumber(fz,fm) ;
        switch (m) {
        case 0:
            if (b == 0 && randNum == 3)
                System.out.println(b + " " + ch[randNum] + " " + a + " " + "=");
            else
                System.out.println(a + " " + ch[randNum] + " " + b + " " + "=");
            break;
        case 1:
            System.out.println(
                    a / temp1 + "/" + c / temp1 + " " + ch[randNum] + " " + b / temp2 + "/" + d / temp2 + " " + "=");
            break;
        }
        if (m == 0 && randNum != 3)
            result = end.result1(a, b, randNum);
        else if (m == 0 && randNum == 3) {
            fenzi = a / temp4;
            fenmu = b / temp4;
        } else {
            fenzi = fz/ temp3;
            fenmu = fm / temp3;

        }

 

 

五.测试运行:

PSP:

PSP2.1

Personal Software Process Stages

Time (%) Senior Student

Time (%)

Planning

计划

8

5

· Estimate

估计这个任务需要多少时间

20

5

Development

开发

25

20

· Analysis

需求分析 (包括学习新技术)

5

5

· Design Spec

生成设计文档

5

5

· Design Review

设计复审

0

0

· Coding Standard

代码规范

3

3

· Design

具体设计

10

15

· Coding

具体编码

50

40

· Code Review

代码复审

5

5

· Test

测试(自我测试,修改代码,提交修改)

10

15

Reporting

报告

5

5

·

测试报告

1

1

·

计算工作量

2

5

·

并提出过程改进计划

3

2

 

实验总结:

 在编程之前,需要思考好可能忽略的问题以及可能出现的问题,比如此次实验,分数需要最简化,分数中,分母不为0的情况。计算错误的题数时,如何设计循环语句使其能够正确计算个数,生成式子时可能会出现错误的式子,式子的格式要规范等问题。有问题自己积极思考,思考不出来呢就问百度,找同学。 编程需要一步一步训练,才能有所进步。

 

posted @ 2017-03-07 12:32  lasolitude  阅读(200)  评论(1编辑  收藏  举报