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

一、需求分析
为了对广大中小学生的算数进行锻炼,家长每天给孩子出题成为一个难题,需要做出一个程序,每天生成一定数量且不重复的题目,分解家长们的压力。从而有效节省学生学习效率,和节省家长的时间。

二、功能设计
2.1 基本功能:

    自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内------>实现
    剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式------>实现
    题目数量可定制------>实现
    相关参数可控------>实现
    1.是否包含乘法和除法
    2.操作数数值范围可控(如操作数 在100以内 还是1000以内)
    3.操作数是否含负数
    生成的运算题存储到外部文件result.txt中------->实现
2.2 拓展功能:
    1. 自动生成答案

三、设计实现

   •使用构造函数PrintStream Scanner ,PrintStream ps = new PrintStream(“d:/result.txt”); 在d盘创建result.txt文档。


   •System.setOut(ps);调用此函数,可以将所有System.out.println();输出语句,打印到创建的result.txt文档中


   •Scanner t=new Scanner(System.in); 控制从键盘输入的值


   •Math.random();产生随机不重复函数,我做了以下测试
        1.验证random会不会产生相同随机数,通过一万次运行发现没有生成一个重复的随机数。证明java不会很大概率生成相同的随机数。
          ![](https://img2018.cnblogs.com/blog/1791015/201909/1791015-20190915131915060-1594398099.png)

四、测试运行

生成基本加减法运算

生成四则运算

输出结果的四则运算

五、实现代码
1.第一个操作数的选择
for(int i=0;i<ts;i++){ //用循环控制题目个数
int a=(int)(Math.random()tf+1); //生成随机数赋值给a
if(zf==0){ //zf=0有负数
int c=(int)(Math.random()
2);
switch (c) { //输出带负数的随机数a
case 0:a=a*-1;
System.out.print(a); break;
case 1:
System.out.print(a); break;
}
}

		if(zf==1){  // 输出不带负数的随机数a
		    System.out.print(a);
		}   
 2.运算符号的选择
             System.out.println("请选择是否有乘除,“1.是”,“2否”:");	
	int fh=sc.nextInt();
	//控制是否生成乘除
            int f=(int)(Math.random()*2);
		if(fh==2){  //输出“+”,“-”
		    switch (f) {   // 随机生成运算符
		    case 0:	System.out.print("+");break;
		    case 1:	System.out.print("-");	break;
			}
3.控制是否输出结果
                    System.out.print("是否输出运算结果.1否,2是:");  
	int jg=sc.nextInt();
	// 选择是否输出运算结果
            	if(jg==2){	//控制是否输出结果
				if(f==0){
					int n=a+b;
					System.out.println("="+n);
					}
				if(f==1){
					int n=a-b;
					System.out.println("="+n);
					}
					// 输出等号
				}else{
			System.out.println("=");	// 输出等号
			}

4.生成的运算题存储到外部文件result.txt中
            PrintStream ps = new PrintStream ("d:/result.txt");
	System.setOut(ps);

六、总结
程序使用了for循环来控制题目个数,控制题目范围用scanner来传参和控制随机数相乘,用switch和随机数来控制产生正负数同意用随机数和switch来产生随机运算符号。
程序设计之初计划采用面向对象编程方法。把软件分为提示菜单类,加减法类,乘除法类。生成随机数类。相互调用来实现功能。编程过程中由于调用语法的遗忘,被迫采用了一个类的方法写完了代码,这种编程方法导致代码存在大量重复,效率低。
七、PSP

posted @ 2019-09-14 21:57  mz张洋洋  阅读(216)  评论(1编辑  收藏  举报