zoukankan      html  css  js  c++  java
  • 20194599+自动生成四则运算题第一版报告

    1. 需求分析:


        为了对学生的算数进行锻炼,家长每天给孩子出题成为一个难题,需要做出一个程序,每天生成一定数量且不重复的题目,分解家长们的压力。

    2. 功能设计:


        基本功能:

    1. 自动生成10道100以内的2个操作数的四则运算算式(+ - *  /),要求运算结果也在100以内------>实现
    2. 剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式------>实现
    3. 题目数量可定制------>实现
    4. 相关参数可控------>实现
      1.  是否包含乘法和除法

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

      3. 操作数是否含负数  

    5. 生成的运算题存储到外部文件result.txt中------->实现

        拓展功能:

            自动生成答案

            添加学号,并为每个学号生成不同的试题

            

    3. 设计实现:


    1. 使用构造函数PrintStream Scanner ,PrintStream ps = new PrintStream("d:/result.txt");
    2. System.setOut(ps);调用此函数,可以将所有System.out.println();输出语句,打印到i我们创建的文件夹中
    3. Scanner t=new Scanner(System.in); 控制我们从键盘输入
    4. Math.random();产生随机不重复函数,我做了以下测试
     1 /*
     2  * 验证random会不会产生相同的随机数
     3  * 做个10万次循环看看,发现结果为0
     4  *java不像c,c会大概率产生相同的随机数,甚至会下次运行可能会和上次
     5  * 产生的随机数是一样的,因此用C写得初始化一个时间种子,才能尽可能的保证随机数不相同
     6  *java的random函数10万次运行都很难出现一次相同的随机数,所有random不产生重复函数
     7  */
     8 public class text_002{
     9     public static void main(String args[]){
    10             int count = 0;
    11             double first = 0;
    12             double second = 0; 
    13             for(int i=0; i<99999; i++){
    14                 first = Math.random();
    15                 second = Math.random();
    16                 if (first == second)
    17                     count ++;
    18                 }
    19             System.out.print(count);
    20     }
    21 }

    4. 测试运行:


     基本加减法

     四种运算符

     

      

    自动生成100以内答案

    四个运算符生成无限制答案

     添加学号,并且给不同部分学号的生产不同的套题

    5. 代码解释


    •   生成的第一个操作数
     1 //第一个操作数的选择
     2             int a=(int)(Math.random()*tf+1);
     3             
     4             if(zf==1) {//有负数
     5             int p=(int) (Math.random()*2);
     6                 switch(p) {
     7                 case 0:a=a*(-1);//取负数
     8                        System.out.print(a);break;
     9                 case 1:
    10                           System.out.print(a);break;
    11                 }
    12             }
    13             if(zf==0) {//没有负数
    14                     System.out.print(a);
    15                     }
    •   运算符号的选择
     1 System.out.println("请选择是否包含*或者/:2:否 4:是 ");
     2         int fu=t.nextInt();
     3 if(fu==2) {//选择两个字符‘+’‘-’
     4                 int k=(int)(Math.random()*2);
     5                 switch(k) {//随机选择运算符
     6                 case 0:System.out.print("+");
     7                        break;
     8                 case 1:System.out.print("-");
     9                        break; 
    10                                                }
    11 if(fu==4) {//四个字符的‘+’‘-’‘*’‘/’
    12             int k=(int)(Math.random()*4+1);
    13             switch(k) {//随机选择运算符
    14             case 1:System.out.print("+");break;
    15             case 2:System.out.print("-");break;
    16             case 3:System.out.print("*");break;
    17             case 4:System.out.print("/");break;
    18             }
    •   等号右侧结果
     1 //等号
     2             
     3             System.out.print("=");
     4             //运算结果
     5             if(k==1) {
     6                 c=a+b;System.out.println(c);
     7             }
     8             if(k==2) {
     9                 c=a-b;System.out.println(c);
    10             }
    11             if(k==3) {
    12                 c=a*b;System.out.println(c);
    13             }
    14             if(k==4) {
    15                 c=a/b;System.out.println(c);
    16             }

    6. 总结


     

    1 .控制题目个数 :for循环

     
     

    2. 控制题目范围 :scanner传参 和随机函数相乘

     
     

    3. 控制正负号:随机函数+switch产生随机正负数

     
     

    4. 控制运算符号:随机函数+switch产生随机符号

     

    7. PSP


     

  • 相关阅读:
    新随笔(二)用户体验:用户注册表单中的“年份”设计乱象
    新随笔(一) 从用户心理体验谈慎用瀑布流设计
    产品经理,你来自江湖
    对你同样重要的非技术贴,8个方法让你成为下一个晋升对象
    非技术贴,10件事证明你跟错了人
    Android开发工程师,前行路上的14项技能
    SVN报错:Error Updating changes:svn:E155037的解决方案同样适用于svn clean up失败解决方案
    方法命名问题
    controller 获取data: JSON.stringify(param)
    毕业设计----maven使用ueditor编辑器
  • 原文地址:https://www.cnblogs.com/victorykingliu/p/11499108.html
Copyright © 2011-2022 走看看