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

[亡魂溺海] 提交于 2019-11-29 19:26:16

一   、需求分析

使用c或者java进行自动生成四则运算题。

二、功能设计

基本功能:

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内

辅助功能:

(1)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

(2)题目数量可定制

(3)相关参数可控制

          是否包含乘法和除法

          操作数数值范围可控(如操作数 在100以内   还是1000以内)

          操作数是否含负数    

  (4)生成的运算题存储到外部文件result.txt中

三、设计实现

(1)使用语言   java

(2)开发工具   IDEA

(3)使用的类和作用  1、scanner类 用于输入输出 2、random类 用于生成随机数 3、FileWriter用于存储文件。

(4)设计的函数

 

 

 

五、代码展示

 

ava.util.Iterator; import java.util.Scanner; import java.util.Random; import java.io.FileWriter; import java.io.IOException; import java.util.*; class Optt {    int num1;    int num2 = 1;    int op;    char opt[] = { '+', '-', '*', '/' };    String str1 = new String();    String str2 = new String();    Scanner S = new Scanner(System.in);    Random r = new Random();    StringBuffer w = new StringBuffer();    public void optt(int n, int opn, int sel, boolean flag, boolean ifSave) {//生成       for (int i = 0; i < n; i++) {          num1 = r.nextInt(sel) + 1;//随机生成num1          op = r.nextInt(opn);          switch (op) {          case 0:             num2 = r.nextInt(sel - num1);             break;          case 1:             num2 = r.nextInt(num1);             break;          case 2:             num2 = r.nextInt(sel / num1);             break;          case 3:             num2 = r.nextInt(num1);             break;          }         if (flag) {             int f = r.nextInt(2);             int p = r.nextInt(2);             if (0 == f)                num1 = -num1;             if (0 == p)                num2 = -num2;          }          if (num1 < 0)             str1 = "(" + num1 + ")";          else             str1 = "" + num1;          if (num2 < 0)             str2 = "(" + num2 + ")";          else             str2 = "" + num2;          if (ifSave) {             w.append(str1 + "" + opt[op] + str2 + "=" + "   ");              try {                FileWriter fw = new FileWriter("d:/result.txt");                fw.write(w.toString());                fw.close();             } catch (IOException e) {                e.printStackTrace();             }          }          System.out.println(str1 + "" + opt[op] + str2 + "=");       }           }    public int inputCount() {//输入打印个数       int n;//       n = S.nextInt();       return n;    }   public int opCount() {//判断是否有乘除;1有,其他没有       int opn;       opn = S.nextInt();       if (1 == opn)          return 4;       else          return 2;    }    public int select100or1000() {//选择一百以内的还是一千以内的       int sel;       sel = S.nextInt();       if (1 == sel)          return 101;       else          return 1001;    }    public boolean ifFuShu() {//判断是否有负数 ;1有,其他没有       int flag;       flag = S.nextInt();       if (1 == flag)          return true;       else          return false;    }    public boolean ifSave() {//是否存       int flag;       flag = S.nextInt();       if (1 == flag)          return true;       else          return false;    }    public void menu() {       int inputCount, opCount, select100or1000;       boolean ifFuShu, ifSave;       System.out.println("欢迎使用,首先进行设置");       System.out.println("请输入您要打印的题目数量:");       inputCount = this.inputCount();       System.out.println("请问您需要题目出现乘除吗?(输入1出现,输入其他不出现)");       opCount = this.opCount();       System.out.println("请选择打印100或1000以内的题目,输入1打印100以内的,输入其他输入打印1000以内");       select100or1000 = this.select100or1000();       System.out.println("请选择是否出现负号,输入1出现负号,不出现");       ifFuShu = this.ifFuShu();       System.out.println("请选择是否存到d:/result.txt中,输入1存,输入其他数字不存");       ifSave = this.ifSave();       this.optt(inputCount, opCount, select100or1000, ifFuShu, ifSave);    } } public class Exam{   public static void main(String[] args) {       Optt op = new Optt();       op.menu();    } }

六、总结

看起来简单做起来很难,有很多操作都不是很明白,通过百度来解决这些。

七、psp

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!