一、需求分析:
设计一个程序,这个程序需要实现可以自动生成四则运算算式(+ - * /),并且这个程序可以自动剔除重复算式,还要注重人机交互,实现可以由用户来控制题目数量、是否包含乘法和除法、操作数数值范围可控、操作数是否含负数。最后程序生成的运算题存储到外部文件result.txt中。
我还需要一个扩展功能,那就是生成题目时用户可以控制是否需要同时生成答案以供做题参考!可选择需要或者不需要!
二、功能设计:
基本功能有:
1.自动生成四则运算算式(+ - * /)
2.题目数量可由用户控制
3.自动剔除重复算式
4.由用户控制是否包含乘法和除法
5.操作数数值范围可由用户控制
6.操作数是否含负数
7.生成的运算题存储到外部文件result.txt中
扩展的功能是:
1.可以生成每道题的答案!
2.生成题目时用户可以控制是否需要同时生成答案以供做题参考!可选择需要或者不需要!
三、设计实现:
1.Random()函数,random函数返回一个0~num-1之间的随机数,random(num)是在stdlib.h中的一个宏定义,num和函数返回值都是整型数。
2.PrintStream 打印输出流,用这个函数实现把生成的题目输出到指定的位置的文件中保存。
3.switch(){ case :},控制语句,用来控制选择生成的算式是否包含有( + - * / )。
四、测试运行:
1.程序的运行截图:
2.控制操作数值范围
3.生成题目数量可控制:
4.算式中是否需要乘除法运算:
5.算式中是否包含负数:
6.扩展功能:可由用户控制是否需要输出算式答案!
五、自己比较满意的代码段:
1 int daan[]=new int[no2];//定义一个数组跟算式数量对应大小用来存储答案 2 daan[0]=0;//给数组赋初值为0 3 for(int i=0;i<no2;){ 4 int a = rand.nextInt(no1);//在0-no1的范围内随机生成整数 5 int b = rand.nextInt(no1);//在0-no1的范围内随机生成整数 6 7 switch(rand.nextInt(no3)) { 8 case 0: 9 i++; 10 if(a+b<=no1) { 11 System.out.printf("%d + %d=%n",a,b); 12 daan[i-1]=a+b;//用定义的数组来存储算式的答案,下标跟随i的值变化 13 }else { 14 a=(int)a/2; 15 b=(int)b/2; 16 System.out.printf("%d + %d=%n",a,b); 17 daan[i-1]=a+b;//用定义的数组来存储算式的答案,下标跟随i的值变化 18 } 19 break; 20 case 1: 21 i++; 22 if(a>b) { 23 24 System.out.printf("%d - %d=%n",a,b); 25 daan[i-1]=a-b; 26 }else { 27 System.out.printf("%d - %d=%n",b,a); 28 daan[i-1]=a-b; 29 } 30 break; 31 case 2: 32 i++; 33 if(a*b<=no1) { 34 System.out.printf("%d * %d=%n",a,b); 35 daan[i-1]=a*b; 36 }else { 37 a=a%10; 38 b=b%10; 39 System.out.printf("%d * %d=%n",a,b); 40 daan[i-1]=a*b; 41 } 42 break; 43 case 3: 44 i++; 45 if(a%b==0) { 46 System.out.printf("%d / %d=%n",a,b); 47 daan[i-1]=a/b; 48 }else { 49 b=(int)(b/10); 50 a=(int)(a%10); 51 a=a*b; 52 System.out.printf("%d / %d=%n",a,b); 53 daan[i-1]=a/b; 54 } 55 break; 56 } 57 }
六、总结:
这次程序设计,通过不断地摸索,实现了课题规定的基本功能,并在基础功能上扩展了一些能给用户提供便利的功能:可由用户来选择是否需要生成算式的答案!通过这次作业的学习,我发现了自己编程功底很多的不足之处,同时相对应的也新学会了不少的知识!
七、PSP:
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
20 |
30 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
10 |
12 |
Development |
开发 |
120 |
180 |
·· Analysis |
需求分析 (包括学习新技术) |
10 |
20 |
· Design Spec |
· 生成设计文档 |
6 |
10 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
5 |
8 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
6 |
· Design |
具体设计 |
15 |
20 |
· Coding |
具体编码 |
40 |
60 |
· Code Review |
· 代码复审 |
6 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
20 |
Reporting |
报告 |
8 |
16 |
·· Test Report |
· 测试报告 |
5 |
6 |
· Size Measurement |
计算工作量 |
3 |
3 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
5 |
8 |