一 、需求分析
使用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 =