一、需求分析
随机生成指定数目四则运算,减轻出题负担
二、功能设计
基本功能:
自动生成可定制道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
扩展功能:
1)题目数量可定制;
2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
3)相关参数可控制:
是否包含乘法和除法;
操作数数值范围可控(如操作数 在100以内 还是1000以内);
操作数是否含负数。
4)生成的运算题存储到外部文件result.txt中。
三、设计实现
用java语言完成设计实现
四、测试运行
1.可定制题目数量,包含乘除,包含正负,结果在100以内
2.可定制题目数量,不含乘除,包含正负,结果在100以内
3.可定制题目数量,不含乘除,不含正负,结果在100以内
4.可定制题目数量,包含乘除,不含正负,结果在100以内
5.剔除重复题目,因想要测试到底能不能剔除重复项,故意写小了出题范围和出题数目,且若出现重复项,将其显示到result.txt文件中,并显示剔除后的新题(本应隐藏这步,但为了观察与实现功能并未隐藏)
五、代码片段
1、是否包含负数
for(i=0;i<n;i++){ //题目数量可定制
if(f==0){ //f等于0时,不出带负号的四则运算
a=(int) (Math.random()*z);
b=(int)(Math.random()*z);
r = b+"";
}else if(f==1) { //随机出带负号的四则运算
a=(int)(Math.random()*z*(Math.random()>0.5?1:-1));
b=(int)(Math.random()*z*(Math.random()>0.5?1:-1));
if(b<0){
r = "(" + b + ")";//如果b为负数,加括号
}else{
r = b+"";
}
}
2、是否包含乘除法
switch(g){
case 1: try {
bw.write("第"+(i+1)+"题:"+a+""+j+""+r+"="+sum+"");
bw.newLine();//换行
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 0:
i--;
continue;
}
3、剔除重复项
char j = 0;
int[] a1 = new int[100];
char[] a2= new char[100];
int[] a3 = new int[100];
a1[i]=a;//算式第一个操作数赋值给数组a1
a2[i]=j;//算式操作符赋给数组a2
a3[i]=b;//算式第二个操作数赋给数组a3
int pd= 0; //判断重复
for(int h=i;h>0&&h<5;h--){//从当前位置向前遍历数组元素
if(a1[i]==a1[h-1]){//比较算式第一个数是否重复
if(a2[i]==a2[h-1]){//比较操作符是否重复
if(a3[i]==a3[h-1]){//比较算式第二个数是否重复
pd=1;//重复pd赋值为1
}
if(pd==1){
try {
bw.write(""+(a1[i])+""+(a2[i])+""+(a3[i])+"="+sum+"出现重复需剔除");
bw.newLine();
bw.write("剔除后的新题");
bw.newLine();
i--;
continue;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
3、生成的运算题存储到外部文件result.txt中代码块
Writer fw = null;
try {
fw = new FileWriter("d:\result.txt"); //输出的路径和文件名
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
BufferedWriter bw=new BufferedWriter(fw);//写入文件
bw.write("第"+(i+1)+"题:"+a+""+j+""+r+"="+sum+""); //输出算式
bw.newLine(); //换行
try {
System.out.println("出题成功,请移至result.txt查看题目");
bw.close(); //关闭
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
六、总结
自己写的代码 功能虽能保证实现 但耗时长 并且有些繁琐,不精简 希望在后续学习中能过提升自己的专业技能。
七、psp
||||||||||||||
|:--|:--|:--|:--|
|psp2.1|任务内容|计划共完成需要的时间(min)|实际完成需要的时间(min)|
|Planning|计划|10|20|
|· Estimate|估计这个任务需要多少时间,并规划大致工作步骤|60|60|
|Development|开发|120|240|
|·· Analysis| 需求分析 (包括学习新技术)|10|30|
|· Design Spec| · 生成设计文档|10|20|
|· Coding Standard| · 代码规范 (为目前的开发制定合适的规范)|10|20|
|·Coding| · 具体编码|120|200|
|·Code Review| · 代码复审|10|30|
|·Test| · · 测试(自我测试,修改代码,提交修改)|10|20|
|·Reporting| · · 报告|10|30|
|· Test Report| · · 测试报告|10|10|
|· Size Measurement| · · 计算工作量|10|10|
|· Postmortem & Process Improvement Plan| · · 事后总结 ,并提出过程改进计划|10|10|