四则运算

需求分析:能够根据用户对题目数量的需求,生成一定数量的包含整数和真分数的题目,并且能够生成答案,判断正误,统计正确率。

 

功能设计:

1.随机生成整数和真分数的四则运算题目;

2.能够处理用户的输入,并判断正误,统计正确率;

3.能够自动计算出正确答案;

 

设计实现:代码是用java写的,写了两个类,一个是zhenshu ,用于实现整数运算,另一个是zhenfenshu ,用于实现真分数运算,在zhenfenshu类中,有写了一个yuefen的函数,用于对计算结果进行约分。

源代码链接:https://git.coding.net/echo1/liucun.git

 

代码说明:构造函数yuefen,用于对真分数进行约分,化为最简真分数,之前输出结果没有考虑到输出整数的情况,因此会出现2/1,4/2等情况,后来将这种情况又分开讨论了一下,现在就不会出现这种情况了。

     public static String yuefen(int a,int b){
                 int y = 1;
                 if(a>0){
                   for(int i=a;i>=1;i--){
                     if(a%i==0&&b%i==0){
                         y = i;
                         break;
                     }
                   }
                 }
                   else if(a<=0){
                	for(int i=a;i<=0;i++){
                	
                   }
                   }
                 int z = a/y;
                 int m = b/y;
                 if(z==0) {
                     return "0";
                 }
                 else if(z%m==0){
                	 return ""+z/m;
                 }
                 return ""+z+"/"+m;
             }

 

代码说明:随机生成分子、分母和运算符,然后利用真分数四则运算法则编写运算方法,在利用构造函数“zhenfenshu”对计算结果进行约分,这里列举了加法运算的代码,因为之前没有考虑到像1/1*4/4这种情况,现在将输出方式进行了一些更改,分情况讨论了一下,就解决了上述问题。

                for(i=0;i<x;i++){
                	m1=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                	x1=1+(int)(Math.random()*m1);//生成一个比分母小的分子,实现真分数
                    m2=1+(int)(Math.random()*B);//随机生成一个小于B的分母
                    x2=1+(int)(Math.random()*m2);//生成一个比分母小的分子,实现真分数
                	int c=(int)(Math.random()*3);//生成运算符
                	if(c==0){
                	         Z=x1*m2+x2*m1;
                	         M=m1*m2;
                	         d=yuefen(Z,M);
                	         if(x1%m1==0&&x2%m2!=0){
                	        	 System.out.print(x1/m1+" + "+x2+"/"+m2+"=       ");
                	         }
                	         else if(x1%m1!=0&&x2%m2==0){
                	        	 System.out.print(x1+"/"+m1+" + "+x2/m2+"=       ");
                	         }
                	         else if(x1%m1==0&&x2%m2==0){
                	        	 System.out.print(x1/m1+" + "+x2/m2+"=           ");
                	         }
                	         else
                	         System.out.print(x1+"/"+m1+" + "+x2+"/"+m2+"=       ");
                	              }

 代码说明:整数运算的情况比较简单,只用随机生成一些整数,然后按四则运算法则进行运算就可以了,下面是随机生成加法运算式的代码。

        for (i = 0; i < x; i++) {
            int a = (int) (Math.random() * y);// 随机生成一个1-10的整数
            int b = (int) (Math.random() * y);// 随机生成一个1-10的整数
            int c = (int) (Math.random() * 3);// 随机生成一个0-3的整数,0表示加法,1表示减法,2表示乘法,3表示除法
            if (c == 0) {
                d = a + b;
                System.out.print(a + "+" + b + "=       ");
            }

 

 

 

 

PSP:

PSP2.1

Personal Software Process Stages

Time(min) Senior Student

Time (min)

Planning

计划

5

5

Estimate

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

5

3

Development

开发

20

30

Analysis

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

3

20

·Design Spec

生成设计文档

5

3

·Design Review

设计复审

1

1

Coding Standard

代码规范

20

15

· Design

具体设计

 

15

10

Coding

具体编码

30

50

·Code Review

代码复审

 

10

10

Test

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

15

20

Reporting

报告

10

10

 

测试报告

3

3

 

计算工作量

3

5

 

并提出过程改进计划

5

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 小结:刚开始看到题目的时候,觉得无从下手,不知道从哪开始做起,就百度了很多相似的题目,照着别人做过的代码进行修改,然后再一点一点满足这个题目的要求,最后运行,出错,然后修改,到最后做好,花了两天时间,现在来看,其实题目不是很难,只是自己之前动手写代码的时间太少了,拿到题目之后不知到怎么开始,希望自己以后能够多多练习,尽量少百度网上的代码,能够自己写出代码。

 

 

 

 

 

posted @ 2017-03-05 22:10  三个砂锅  阅读(351)  评论(7编辑  收藏  举报