一   、需求分析

使用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

 

posted on 2019-09-16 19:44  螃蟹一号  阅读(398)  评论(3编辑  收藏  举报