20194667+自动生成四则运算题第一版报告

一、需求分析 

  (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.操作数是否含负数 

5.重复算式可过滤

三、设计实现

本次设计只用到一个主类,其中包含了主方法和其他方法共同实现程序的相关功能

。判断是否需要负数的方法

。判断是否需要包含乘除的方法

。获取算式得数的方法

。主方法   

四、测试运行

  五、代码片段

  • package math;
  • import java.io.BufferedWriter;
  • import java.io.File;
  • import java.io.FileOutputStream;
  • import java.io.IOException;
  • import java.io.OutputStreamWriter;
  • import java.util.ArrayList;
  • import java.util.List;
  • import java.util.Random;
  • import java.util.Scanner;

    public class SuanShi {

  • public static void main(String[] args) {
  • try {       Scanner sc = new Scanner(System.in);
  • System.out.println("这是一个自动生成四则运算试题的程序。接下来请选择相关的参数。");
  • System.out.println("请输入要生成题目的数量(数量>1)");
  • int num = sc.nextInt();
  • System.out.println("请选择是否包含乘除法(包含请输入1,不包含请输入0)");
  • int LevelFlg = sc.nextInt();
  • System.out.println("请选择结果是否包含负数(包含请输入1,不包含请输入0)");
  • int MinusFlg = sc.nextInt();
  • System.out.println("请选择结果的最大范围(比如100,200,1000)");
  • int maxNumFlg = sc.nextInt();              //生成对象,然后调用它的方法
  • SuanShi SuanShi=new SuanShi();
  • List<Equation> from = new ArrayList<Equation>();       //调用生成算式的程序,参数分别为 题目数量,是否含有乘除法,是否含有负数,最大的结果范围
  • from = SuanShi.createEquation(num,LevelFlg,MinusFlg,maxNumFlg);       //在控制台上展示算式
  • SuanShi.showEquation(from);       //将算式保存到文件中
  • SuanShi.saveEquation(from);

    } catch (Exception e){

  • System.out.println("Error!" + e);
  • System.exit(0);      }  }   // 生成算式
  • public List<Equation> createEquation(int num , int LevelFlg,int MinusFlg,int maxNumFlg) {

    List<Equation> from = new ArrayList<Equation>();      //通过一个死循环来循环生成算式,然后检查是否符合条件,将满足条件的算式添加到list中,满足数量后跳出循环

  • while(true) {             Random rand = new Random();
  • int operator = rand.nextInt(LevelFlg == 1 ? 4 : 2) + 1;// 是否乘除可控
  • int numA = rand.nextInt(maxNumFlg) + 1;
  • int numB = rand.nextInt(maxNumFlg) + 1;             //将生成的算式放入对象中
  • Equation equation = new Equation(numA,numB,operator);             //检查生成的竖式符合条件吗
  • if(check(from,equation,MinusFlg,maxNumFlg)) {             // 将产生的并且通过检查的算式添加到List集合中
  • from.add(equation);             };             //满足最大数量num后跳出循环
  • if(from.size()>=num) break;
  • }
  • return from;
  • }

    // 在控制台上展示算式

  • public  void showEquation(List<Equation> from) {
  • System.out.println("结果如下:");
  • for(int i=0;i<from.size();i++) {
  • System.out.println(from.get(i).printAnswer());
  • }
  • }

    // 保存算式

  • public  void saveEquation(List<Equation> from) {
  • BufferedWriter bufferedWriter = null;
  • String path = "D:\\homework\\result.txt" ;
  • try{       File file = new File(path);
  • if (!file.getParentFile().exists()) {
  • file.getParentFile().mkdirs();
  • }       file.createNewFile();             // 获取该文件的缓冲输出流
  • bufferedWriter = new BufferedWriter               (new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));             // 写入信息
  • bufferedWriter.write("以下为本次程序生成的试题,共有"+from.size()+"道题\r\n");
  • for (int i=0;i<from.size();i++) {        //依次写入本地文件中           bufferedWriter.write(i+1+". "+from.get(i).printAnswer()+"\r\n");
  • }       bufferedWriter.flush();// 清空缓冲区       bufferedWriter.close();// 关闭输出流
  • System.out.println("文件保存完毕!");
  • }catch (IOException e) {      e.printStackTrace();
  • }finally {             }     }         //检查生成的算式是否正确。
  • public  boolean check(List<Equation> from, Equation equation,int MinusFlg,int maxNumFlg) {
  • boolean result = true;      //判断新生成的算式是否超过最大范围
  • if(equation.getResult()>maxNumFlg) result = false;      //判断新生成的算式是否有负数
  • if(MinusFlg==0       &&equation.getResult()<0) result = false;      //判断新生成的算式是否和以前的重复
  • for(int i=0;i<from.size()-1;i++) {
  • if(from.get(i).getNumA()==equation.getNumA()
  • &&from.get(i).getNumB()==equation.getNumB()
  • &&from.get(i).getOperator()==equation.getOperator()) result = false;}      //输出通过检查的算式
  • return result;
  • } }

六、总结

 通过本次练习,学到了许多知识。经过一步步需求分析到功能的一步步实现,虽然编写过程中有很多地方不清楚,但通过网上查找和询问他人慢慢的弄明白了,收获颇多。

七、PSP

 


PSP2.1


任务内容


计划共完成需要的时间(min)


实际完成需要的时间(min)


Planning


计划


20


25


·       Estimate


·  估计这个任务需要多少时间,并规划大致工作步骤


10


20


Development


开发


300


480


··       Analysis


需求分析 (包括学习新技术)


10


20


·       Design Spec


·  生成设计文档


0


0


·       Design Review


·  设计复审 (和同事审核设计文档)


0


0


·       Coding Standard


代码规范 (为目前的开发制定合适的规范)


10


15


·       Design


具体设计


15


20


·       Coding


具体编码


300


420


·       Code Review


·  代码复审


10


10


·       Test


·  测试(自我测试,修改代码,提交修改)


10


20


Reporting


报告


10


15


··       Test Report


·  测试报告


15


20


·       Size Measurement


计算工作量


0


0


·       Postmortem & Process Improvement Plan


·  事后总结 ,并提出过程改进计划


10


20

  

原文地址:https://www.cnblogs.com/GXTSTAY/p/11522820.html

时间: 2024-10-07 05:50:56

20194667+自动生成四则运算题第一版报告的相关文章

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

一 需求分析 利用C语言或者JAVA来编写代码 通过此代码自动生成四则运算,利用自动生成四则运算题程序可以进一步培养小学生计算能力,提高运算能力,并且减少老师和家长出题工作量. 二功能设计 (1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内 (2)剔除重复算式.  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式 (3)题目数量可定制 (4)相关参数可控制

20194684 + 自动生成四则运算题第一版报告

前提需求 要求:使用C或Java语言完成一个自动生成四则运算试题的程序 软件基本功能如下. 自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内 剔除重复算式.2+3 和 2+3 是重复算式,2+3 和 3+2 不属于重复算式 题目数量可定制 相关参数可控制 是否包含乘法和除法 操作数数值范围可控 操作数是否含负数 生成的运算题存储到外部文件result.txt中 需求分析 某幼儿园,老师要每天出30道加减乘除法题目给孩子做.于是,想写一个脚本完成这件

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

一.需求分析 需要能自动生成四则运算的程序并能控制其中的一些参数,显示在txt文件中 二.功能设计 基本功能 自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内 扩展功能 (1)剔除重复算式.  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式 (2)题目数量可定制 (3)以下相关参数可控制 是否包含乘法和除法 操作数数值范围可控(如操作数 在100以内   还是

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

1.需求分析 使用C语言完成一个自动生成四则运算试题的程序. 2.功能设计 基本功能:随机生成10道100以内的2个操作数的四则运算算式,要求运算结果也在100以内. 扩展功能:(1)剔除重复算式 (2)定制题目数量 (3)是否选择包含乘法和除法 (4)操作数数值范围是否可控 (5)操作数是否含负数 (6)是否选择生成答案 (7)生成的运算题存储到result.txt文件中 3.设计实现 使用sign函数实现含有负数的随机算式.sum函数选择受否生成带有答案的算式,其他功能由主函数完成. 4.测

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

一.需求分析 需要自动生成四则运算试题的程序,取值范围在100以内,操作数是否含负数,剔除重复算式,显示在txt文件中 二.功能设计 基本功能:自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内 扩展功能:1. 剔除重复算式.2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式 2. 题目数量可定制 3. 相关参数可控制 是否包含乘法和除法 操作数数值范围可控(如操作

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

一·需求分析 通过此代码自动生成四则运算,给运算带来方便,节省老师和家长的出题时间. 二·功能设计 (1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内 (2)剔除重复算式.  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式 (3)题目数量可定制 (4)相关参数可控制 是否包含乘法和除法 操作数数值范围可控(如操作数 在100以内   还是1000以内) 操

20194630+自动生成四则运算题第一版报告

1.需求分析:自动生成四则运算,运算结果也在100之内   剔除重复算式,生成的运算题存储到外部文件result.txt中 2.功能设计: 基本功能:自动生成10道100以内的2个操作数的四则运算算式(+ - *  /) 题目数量可定制 相关参数可控制           是否包含乘法和除法           操作数数值范围可控(如操作数 在100以内   还是1000以内)           操作数是否含负数 生成的运算题存储到外部文件result.txt中 3.设计实现 设计功能全部实现

20194632+自动生成四则运算题第一版报告

一.基本功能 使用C或Java语言完成一个自动生成四则运算试题的程序. 1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内 2)剔除重复算式. 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式 3)题目数量可定制 4)相关参数可控制 是否包含乘法和除法 操作数数值范围可控(如操作数 在100以内 还是1000以内) 操作数是否含负数 5)生成的运算题存储到外部文件result.txt中 二.需求分

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

1.需求分析 使用C或Java语言完成一个自动生成四则运算试题的程序. 2.功能设计 基本功能: (1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内 (2)剔除重复算式.  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式 (3)题目数量可定制 (4)相关参数可控制 是否包含乘法和除法 操作数数值范围可控(如操作数 在100以内   还是1000以内) 操作