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函数所以看起来代码比较冗杂~~~