首页 > 代码库 > 四则运算题目生成程序(基于控制台)

四则运算题目生成程序(基于控制台)

基于控制台的四则运算

 


 

代码地址


a.需求分析

    1. 运算符为 +, ?, ×, ÷
    2. 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
    3. 要求能处理用户输入的真分数, 如 1/2, 5/12 等
    4. 并且要求能处理用户的输入,并判断对错,打分统计正确率。

          b.功能设计

    1. 基本功能   通过从控制台随机的得到整数和真分数的四则运算,然后根据控制台输入的结果判断对错,给出正确率
    2. 扩展功能   希望改进代码可以实现带括号的复合运算(未完成)

 

        c.设计实现 

         一个测试类class Test 用来检测程序的正常运行

          一个整数类class zhengshu  里面有一个方法jisuan()用来实现整数的四则运算

          一个分数类class Fracetion 有Numerator,Denominator,fraction用来表示分子,分母和分数,然后包含了getter()方法和构建分数的方法creatfraction()

          一个分数的方法类class Mathod 里面有三个分数四则运算时要用到的方法 求最大公约数getGCD(int i,int j)约分重构分数           Reduction(int i,int j)和判断正错compare(String a, String b)

          一个分数的四则运算法则类class Calculate 里面包含四个方法,分别是加减乘除

          一个分数计算类class fenshu 里面包含一个计算方法jisuan()用来随机选择计算符号,然后判断正误

          关系:测试类只要调用class zhenghsu和class fenshu中的jisuan()方法即可测试;class Calculate需要import Fraction类和Mathod,Fraction类也import了Mathod类


 

        d.代码说明

      • 真分数的生成
 1 public String creatfraction() //创建分数并且化为最简
 2         {
 3             int i, j;
 4             Numerator = 1+(int) (Math.random() * 10);
 5             Denominator = 2+(int) (Math.random() * 10);
 6             i = Numerator;
 7             j = Denominator;
 8             j = Mathod.getGCD(i, j);
 9             Numerator = Numerator / j;
10             Denominator = Denominator / j;
11             fraction = Mathod.Reduction(Numerator, Denominator);
12             return fraction;
13 
14         }
      • Mathod类中的方法
 1 static int getGCD(int i, int j) //求最大公约数 辗转相除法。
 2     {
 3         int temp;
 4         while (i % j != 0) {
 5             temp = i % j;
 6             i = j;
 7             j = temp;
 8         }
 9         return j;
10     }
11     
12     static String Reduction(int i, int j) //约分,化为最简。
13     {
14         String k;
15         if (j == 1) {
16             k = i + "";
17         } else {
18             k = (i) + "" + "/" + (j) + "";
19         }
20         return k;
21     }
22     
23     static boolean compare(String a, String b) //比较输入值与答案,返回值为boolean类型。
24     {
25         if (a.equals(b))
26             {System.out.println("回答正确");
27             return true;}
28         else
29             {
30             System.out.println("回答错误,正确答案是" + b);
31             return false;
32             }
33     }
      • 真分数的四则运算(以加法为例,其余雷同)
 1 public String add(Fraction a, Fraction b) //加法 参考分数间加减乘除 用四个变量表示两个分数的分子分母
 2     {
 3         int i, j, k, s, m, n, p;
 4         i = a.getNumerator();// 分子
 5         j = a.getDenominator();// 分母
 6         k = b.getNumerator();
 7         s = b.getDenominator();
 8         m = i * s + j * k;
 9         n = s * j;
10         p = Mathod.getGCD(m, n);
11         return Mathod.Reduction(m / p, n / p);
12 
13     }

        e.测试运行

技术分享

 


        PSP


 

PSP2.1 Personal Software Process Stages Estimated time(min) actual time(min)
Planning 计划 12 10
· Estimate 估计这个任务需要多少时间 120 115
Development 开发 80 90
· Analysis 需求分析 (包括学习新技术) 10 10
· Design Spec 生成设计文档 7 10
· Design Review 设计复审 6 5
· Coding Standard 代码规范 4 5
· Design 具体设计 30 40
· Coding 具体编码 35 40
· Code Review 代码复审 10 15
· Test 测试(自我测试,修改代码,提交修改) 15 15
Reporting 报告 20 25
· 测试报告 5 5
· 计算工作量 4 7
· 并提出过程改进计划 4 4

         总结


 

     在做作业的时候,体会到了逻辑清晰是有多重要,不管编程能力怎么样,首先看见一道题目时不要急着就去做,想想如何做怎么做才是最重要的,如果逻辑清晰知道需要建几个类,每个类包含什么,每个类之间的关系是什么,就算个别方法不会写,大体的模子也能画出来,最后要就个别函数即可。下次我做作业的时候应该会多花时间在逻辑分析,流程图上。

 

 

 

 

四则运算题目生成程序(基于控制台)