一、需求分析
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
二、功能设计
基本功能:自动生成四则运算试题
扩展功能:(1)算出答案
(2)多操作数运算
(3)用户可以自己选择用加减,乘除,正负,整分
(4)预留了多余的空间
三、设计实现
我设计了一个Test类,包括了变量的定义,变量的赋值,判断语句,遍历,循环等,最后完成了功能的实现。
四、测试运行
1.包含加减,不含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能
2.包含加减乘除,不含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能
3.只包含加减,含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能
4.包含加减乘除,含正负,两个操作数的,选择操作数范围和题目数量并去掉重复的功能
5.三个操作数的,其他同上,选择操作数范围和题目数量并去掉重复的功能
五、代码片段
1.控制操作代码块
//控制操作 System.out.println("请选择100以内或1000以内"); m=sc.nextInt()+1;//输入你想要的范围 System.out.println("请输入要产生的题数"); n=sc.nextInt();//输入你想要的题数 System.out.println("请输入0(不含)或1(含)表示是否含有乘除"); y=sc.nextInt(); System.out.println("请输入0(不含)或1(含)表示是否含有负数"); z=sc.nextInt();//判断操作 if(y==0&&z==0||y==0&&z==1||y==1&&z==0||y==1&&z==1){ if(y==0){ if(z==0){ for(i=0;i<n;i++) { a1=(int)(Math.random()*m); a2=(int)(Math.random()*m); a3=(int)(Math.random()*m); b=(int)(Math.random()*2); b2=(int)(Math.random()*2); //控制运算符开关 switch (b) { case 0: result=a1+a2; break; case 1: result=a1-a2; break; case 2: result=a1*a2; break; case 3: result=a1/a2; break; default: break; }
2.生成的运算题存储到外部文件test.txt中代码块
PrintWriter out;//定义变量 try{ out=new PrintWriter("e:/test.txt");//输出的路径和文件名 }catch(FileNotFoundException e){throw new RuntimeException(e);} out.println("第"+(i+1)+"题:"+a1+s[b1]+a2+s[b2]+a3+"="+result);//输出算式 out.close(); //关闭
3.去掉重复算式的代码块
//定义数组 int[] a = new int[100]; String[] d = new String[100]; int[] e = new int[100]; //存入算式值 a[i]=a1; d[i]=f[b]; e[i]=a2; //定义判断参数 int c= 0; //判断重复 for(int j=i;j>0&&j<5;j--){//从当前位置向前遍历数组元素 if(a[i]==a[j-1]){//比较操作数x是否重复 if(d[i]==d[j-1]){//如重复比较操作符是否重复 if(e[i]==e[j-1]){//如重复比较最后一个操作数是否重复 c=1; } } } }
六、总结
先把整体框架搭建出来,把最基本的变量等都设置出来并赋值,再根据需求划分模块,将每个模块的功能依次实现,并最后进行整合测试,保证程序能够顺利运行。
七、PSP
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
15 |
20 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
15 |
20 |
Development |
开发 |
350 |
410 |
·· Analysis |
需求分析 (包括学习新技术) |
10 |
20 |
· Design Spec |
· 生成设计文档 |
0 |
0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 |
0 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
5 |
5 |
· Design |
具体设计 |
15 |
20 |
· Coding |
具体编码 |
300 |
340 |
· Code Review |
· 代码复审 |
10 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
15 |
Reporting |
报告 |
30 |
40 |
·· Test Report |
· 测试报告 |
20 |
25 |
· Size Measurement |
计算工作量 |
0 |
0 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
10 |
15 |
我在具体编写代码过程中估计和实践相差巨大,因为在编写代码时有不懂得地方查阅了以下资料,导致最后与估计事件相差过多。