20194613 自动生成四则运算第一版报告

一、需求分析

随机生成指定数目四则运算,减轻出题负担

二、功能设计

基本功能:

自动生成可定制道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|

原文地址:https://www.cnblogs.com/lzcl/p/11509343.html