zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HDU 5213 分块 容斥
    HDU 2298 三分
    HDU 5144 三分
    HDU 5145 分块 莫队
    HDU 3938 并查集
    HDU 3926 并查集 图同构简单判断 STL
    POJ 2431 优先队列
    HDU 1811 拓扑排序 并查集
    HDU 2685 GCD推导
    HDU 4496 并查集 逆向思维
  • 原文地址:https://www.cnblogs.com/zyyzy/p/11520261.html
Copyright © 2011-2022 走看看