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

☆题目要求

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

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

(3)题目数量可定制

(4)相关参数可控制

      是否包含乘法和除法

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

      操作数是否含负数    

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

一、需求分析

为减轻老师的教学负担,以及方便学生的自我练习,提高学生整体成绩,特推出此款软件来自动编写四则运算小学题目。

二、功能设计

1、基本功能:

    (1)自动生成10道100以内的2个操作数的四则运算算式    
    (2)符号可随机生成

2、扩展功能

    (1)可以生成(+ - *  /)随机符号
    (2)剔除重复算式
    (3)可以用户输入生成题目数量
    (4)用户可选择是否包含乘除
    (5)用户选择题目范围,包括100以内以及1000以内
    (6)用户选择是否允许出现负数
    (7)用户选择是否保存到文件中

三、设计实现

1、使用语言

    (1)java语言,版本jdk1.8

2、开发工具

    (2)eclipse

3、使用的类及作用

    (1)Scanner类:用于用户输入输出
    (2)Random类:用于随机生成数
    (3)FileWriter类:用于存储文件

4、设计的函数

    (1)inputCount函数:用户输入打印个数
    (2)opCount函数:用户判断是否存在乘除
    (3)select100or1000函数:用户选择题目范围
    (4)ifFuShu函数:用户选择是否存在负数
    (5)ifSave函数:用户选择是否存到文件内
    (6)menu函数:用户界面,菜单
    (7)optt函数:实现随机生成并打印算式

四、测试运行



五、代码展示


public void optt(int n, int opn, int sel, boolean flag, boolean ifSave) {// 通过参数控制功能
		// TODO Auto-generated method stub
		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;
	}

六、总结

    使用面向对象程序设计,其中分为,计算类,符号类,运算符类,菜单打印类,实现模块化程序设计。但由于技术有限,只能将类转化为方法,使用。这样也可以实现模块化,避免代码的重复使用。

七、PSP

posted @ 2019-09-15 10:59  刘明康20194682  阅读(193)  评论(3编辑  收藏  举报