第二次软件工程作业
一、需求分析
需要自动生成四则运算试题的程序,取值范围在100以内,操作数是否含负数,剔除重复算式,显示在txt文件中
二、功能设计
基本功能:自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
扩展功能:1. 剔除重复算式。2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
2. 题目数量可定制
3. 相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
4. 生成的运算题存储到外部文件result.txt中
三、代码片段
1.实现输入数量,产生随机的整数加减乘除算式
(1)实现100以内的固定数量的随机加
r1[i]=(int)(1+Math.random()*100); r2[i]=(int)(1+Math.random()*100);
(2)实现随机的(“+”,“-”,“*”,“\”)
建立储存运算符的char组
static String[] r3={"+","-","*","/"};//存储运算符
用随机的c=random(),实现4以内的数字(0,1,2,3),就能随机产生运算符
int a=(int)(0+Math.random()*4);//用0,1,2,3来代表四个运算符 s1[i]=r3[a];
(3)实现可定制数量
System.out.println("请输入出题数量:"); Scanner reader2 =new Scanner(System.in); int number =reader2.nextInt(); r1=new int[number]; r2=new int[number];
(4)避免算式重复(最满意的代码片段)
for(int j=0;j<i;j++) { if(r1[i]==r1[j]&&r1[i]==r1[j]&&s1[i].equals(s1[j]))//判断两个运算的数字是否相同 { r1[i]=(int)(1+Math.random()*100); r2[i]=(int)(1+Math.random()*100); j=0; } }for(int j=0;j<i;j++) { if(r1[i]==r1[j]&&r1[i]==r1[j]&&s1[i].equals(s1[j])) { r1[i]=(int)(1+Math.random()*100); r2[i]=(int)(1+Math.random()*100); j=0; } }
(5)生成的运算题存储在外部文件test.txt中
PrintWriter out;//定义变量 try{ out= new PrintWriter(" e:/ test. txt");//输出的路径和文件名} catch( FileNotFoundException e){ throw new RuntimeException( e);} out. println("第"+( i+1)+"题r1[i]+"/"+r2[i]+"÷"+n3[i]+"/"+n4[i]+"=");//输出算式 out. close();//关闭
(6)程序运行结果截图
四、总结
自己在程序编写的过程中还是需要依赖上网查很多的资料,自己缺乏独立思考的能力,没有基本的构图,还有许多错误,需要不断调试,运算结果重复输出的错误还没调试出来,
今后应该先在脑子里形成具体思路完成基本框架搭建,再去做题。
五、psp
PSP2.1 |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
10 |
20 |
Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
10 |
20 |
Development |
开发 |
90 |
120 |
Analysis |
需求分析 (包括学习新技术) |
6 |
10 |
Design Spec |
· 生成设计文档 |
5 |
6 |
Design Review |
· 设计复审 (和同事审核设计文档) |
4 |
6 |
Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
3 |
3 |
Design |
具体设计 |
10 |
12 |
Coding |
具体编码 |
30 |
60 |
Code Review |
· 代码复审 |
7 |
9 |
Test |
· 测试(自我测试,修改代码,提交修改) |
13 |
21 |
Reporting |
报告 |
20 |
30 |
Test Report |
·总结改进 |
10 |
20 |