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)

四、测试运行

生成基本加减法运算
1791015-20190915130434314-574383276.png

生成四则运算
1791015-20190915130636825-515163498.png

输出结果的四则运算
1791015-20190915130846414-312390974.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
1791015-20190914215654590-209807779.png

转载于:https://www.cnblogs.com/zyyzy/p/11520261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值