1.四则运算题目自动生成程序

 

a.需求分析:

 


 

1.除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
2.运算符为 +, −, ×, ÷
3.并且要求能处理用户的输入,并判断对错,打分统计正确率。
4.要求能处理用户输入的真分数, 如 1/2, 5/12 等
5.使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目
Myapp.exe -n 10

b.功能设计

 


 

1.生成自定义数目算术题。

2.支持整数和分数的加减乘除。

3.输入答案判断对错,错误后写出正确答案。

4.最后统计正确率。

c.设计实现

 


 

程序就一个main函数包含全部功能,采用循环和if判断实现算法。

d.代码说明  (congding.ent:https://git.coding.net/wangrf/java-sizeyunsuan.git

 


 

.随机数与运算符号

 1         int x=1+(int)(Math.random()*10);        
 2         int y=1+(int)(Math.random()*10);    
 3         int z=1+(int)(Math.random()*80);//产生运算符
 4         int q=1+(int)(Math.random()*10);
 5         int w=1+(int)(Math.random()*10);

 .产生算式

 1         if( z<=10 ) {//整数部分
 2            strz = "+";
 3            sum=x+y; 
 4            t=1;
 5         }
 6         if( z>10 && z<=20 ) {
 7              strz = "-";
 8              sum=x-y;
 9              t=1;
10         }
11         if( z>20 && z<=30) {
12             strz = "×";
13             sum=x*y;
14             t=1;
15             }        
16       
17         if( z>30 && z<=40 ) {
18            
19             strz = "÷";
20             sum1=String.valueOf(q)+'/'+String.valueOf(w);
21             t=1;
22             }
23         if( z>40 && z<=50 && x<y && q<w ) {//分数部分
24             strz = "+";
26             sum1=String.valueOf( x*w+q*y )+'/'+String.valueOf(y*w);
27             t=1;
28             }
29         if( z>50 && z<=60 && x<y && q<w)  {
30             strz = "-";
32             sum1=String.valueOf( x*w-q*y )+'/'+String.valueOf(y*w);
33             t=1;
34             }
35         if( z>60 && z<=70 && x<y && q<w)  {
36             strz = "×";    
38             sum1=String.valueOf( x*q )+'/'+String.valueOf(y*w);
39             t=1;
40             }
41         if( z>70 && z<=80 && x<y && q<w )  {
42            strz = "÷";
43            int qq=x*w;int ww=q*y;
44            sum1=String.valueOf(qq)+'/'+String.valueOf(ww);
45            t=1;
46           }

.输出与校验

 1         String strx = String.valueOf( x );
 2         String stry = String.valueOf( y );
 3         String strq = String.valueOf( x )+'/'+String.valueOf( y );
 4         String strw = String.valueOf( q )+'/'+String.valueOf( w );
 5         String strsum=String.valueOf( sum );
 6         String ques = " " + strx + strz + stry + "=";
 7         String ques2 = " " + strq + strz + strw + "=";
 8         System.out.print( i );
 9         if( z>0 && z<=30 ) 
10         {System.out.print("." + ques );}
11         else {    System.out.print("." + ques2 );}
12             Scanner input = new Scanner(System.in);
13             String ans = input.nextLine();
14             if(z>=0 && z<30 && ans.equals(strsum) )
15                {
16             j++;
17             System.out.print( "正确\n" );    
18             }
19             if(z>=0 && z<30 &&!ans.equals(strsum)  )  
20                 {
21                 System.out.print("错误!正确答案是:"+strsum +"\n");
22                 }
23           
30            if( z>=30 && z<80 && ans.equals(sum1) )
31             {
32             j++;
33             System.out.print( "正确\n" );    
34             }
35             if(z>=30 && z<80 & !ans.equals(sum1) ) { System.out.print("错误!正确答案是:"+sum1 +"\n");}

 

e.测试运行

 


 

 

 

 

 

PSP表格

 


 

 

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

 

 

小结

 


 程序说难不难,但对我也不简单了,在处理分数运算方面花了比较多时间。特这次代码也还有挺多不完善之处,由于只有一个main函数所以看起来代码比较冗杂~~~

posted @ 2017-03-06 10:21  wangrf  阅读(325)  评论(3编辑  收藏  举报