zoukankan      html  css  js  c++  java
  • 软件工程个人作业02

    个人项目-四则运算2

    题目:可怜的二柱子同学,老师又对他的自动出题系统提出了新的要求: 可以控制下列参数: 是否有括号(最多可以支持十个数参与计算); 是否有乘除法; 数值范围; 加减有无负数;除法有无余数!

    设计思想:在四则运算一的基础上,通过添加if条件,增加所要求的功能(有无乘除法、有无负数);通过随机生成多个数,增加括号的功能。

    源程序代码:

    import java.util.*;
    public class yunsuan {
        public static Scanner in=new Scanner(System.in);
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int s;
            while(true)
            {
                System.out.println("请输入要进行的运算:");
                System.out.println("1.整数四则运算:");
                System.out.println("2.真分数四则运算:");
                System.out.println("3.退出:");
                s=in.nextInt();
                if(s==1)
                {
                    System.out.println("请输入要生成题目的个数:");
                    int n=in.nextInt();
                    System.out.println("请输入数值范围:");
                    int p=in.nextInt();
                    int q=in.nextInt();
                    System.out.println("是否有括号? 1:有 2:否");
                    int k=in.nextInt();
                    if(k==1)
                    {
                        parentheses(n,p,q);
                    }
                    else
                    {
                        IntYuan(n,p,q);
                    }
                    continue;
                }
                if(s==2)
                {
                    System.out.println("请输入要生成题目的个数:");
                    int m=in.nextInt();
                    for(int j=0;j<m;j++)
                    {
                    TrueNum();
                    }
                    continue;
                }
                if(s==3)
                {
                    break;
                }
                else
                {
                    System.out.println("输入错误,请重新输入:");
                    s=in.nextInt();
                }
            }
            in.close();
        }
        public static void IntYuan(int n,int p,int q)
        {
            int a1=0;
            int a2=0;
            int result1;
            char ch;
            System.out.print("是否有乘除法? 1:有 2:否");
            int c=in.nextInt();
            System.out.print("加减有无负数? 1:有 2:否");
            int f=in.nextInt();
            System.out.print("除法有无余数? 1:有 2:否");
            int y=in.nextInt();
            for(int i=0;i<n;i++) 
            {
                a1=ranNum(a1,p,q);
                a2=ranNum(a2,p,q);
                if(c==1)
                {
                    ch=ranChar1();
                }
                else
                {
                    ch=ranChar2();
                }
                //当加减不能出现负数时执行此操作
                if(f==2 &&((a1<0||a2<0)||(a1<a2 && ch=='-')))
                {
                    i--;
                }
                //当除法不能有余数时执行此操作
                else if(y==2 && ch=='/' && a1%a2!=0)
                {
                    i--;
                }
                else
                {
                    System.out.print(a1);
                    System.out.print(ch);
                    System.out.println(a2+"=");
                    System.out.print("请输入答案:");
                    result1=in.nextInt();
                    if(ch=='+'&&(result1==a1+a2))
                    {
                        
                        System.out.println("计算正确!");
                    }
                    else if(ch=='-'&&(result1==a1-a2))
                    {
                        System.out.println("计算正确!");
                    }
                    else if(ch=='*'&&(result1==a1*a2))
                    {
                        System.out.println("计算正确!");
                    }
                    else if(ch=='/'&&(result1==a1/a2))
                    {
                        System.out.println("计算正确!");
                    }
                    else
                    {
                        System.out.println("计算错误!");
                    }
                }
             }
        }
        public static void parentheses(int n,int p,int q)//带括号运算
        {
            int num=(int)(Math.random()*11+2);
            int[] a={0,0,0,0,0,0,0,0,0,0};
            for(int i=0;i<n;i++)
            {
                int a1=0;
                a1=ranNum(a1,p,q);
                System.out.print(a1);
                System.out.print(ranChar1()+"(");
                for(int j=0;j<num-4;j++)
                {
                    System.out.print(ranNum(a[j],p,q));
                    System.out.print(ranChar1());
                }
                System.out.println(ranNum(a[num-3],p,q)+")=");
            }
        }
        public static int ranNum(int a,int b,int c)
        {
            a=(int)(Math.random()*(c-b+1)+b);//随机数值范围为从b到c
            return a;
        }
        public static char ranChar1()
        {
            char[] b={'+','-','*','/'};
            int c=(int)(Math.random()*4);
            return b[c];
        }
        public static char ranChar2()
        {
            char[] b={'+','-'};
            int c=(int)(Math.random()*2);
            return b[c];
        }
        public static void TrueNum()
        {
            int b1,b2,b3,b4;
            b1=(int)(Math.random()*100);
            b2=(int)(Math.random()*100);
            b3=(int)(Math.random()*100);
            b4=(int)(Math.random()*100);
            yuefen(b1,b2);
            yuefen(b3,b4);
                if(b1<b2 && b3<b4)
                {
                    System.out.print(b1+"/"+b2);
                    System.out.print(ranChar1());
                    System.out.println(b3+"/"+b4+"=");
                }
                else
                {
                    TrueNum();
                }
        }
        public static void yuefen(int a1,int a2)
        {
            int min=Math.abs(a1)<Math.abs(a2)?Math.abs(a1):Math.abs(a2);
            int yueshu=1;
            for(int i=min;i>=1;i++)
            {
                if(a1/i==0 && a2/i==0)
                {
                    yueshu=i;
                    break;
                }
            }
            a1/=yueshu;
            a2/=yueshu;
        }
    }

    运行结果截图 :

    项目计划日志:

    周活动总结表

    学生:曹婷婷                              日期:2017.3.13

    日期 听课(min) 编写程序(min) 查阅资料(min) 日总计(min)
    周一3.6   20 10 30
    周二3.7        
    周三3.8   30   30
    周四3.9        
    周五3.10 60 180 60 240
    周六3.11   120 30 150
    周日3.12   60   60
    周总计: 60 410 100 510

    时间记录日志:

    时间记录日志

    学生:曹婷婷                                                               日期:2017.3.13

    教师:王建民                                                             课程:软件工程概论

    日期 开始时间 结束时间 中断时间 净时间 活动 备注
    3.10 14:00 16:00 10min 110min 上课 休息
    18:10 19:00 0 50min 在“二柱子01”基础上做改动  
    20:24 21:10 10min 36min 写“二柱子02”添加“数值范围;加减有无负数”两个功能 休息
    3.11 10:00 11:35 13min 82min 写“二柱子02”添加“是否有乘除法;除法有无余数”两个功能 休息
    16:15 18:36 30min 111min 写“二柱子02”添加括号功能 玩儿手机
    3.12 9.35 11.42 30min 97min 写“二柱子02”添加括号功能 休息

    缺陷记录日志:

    缺陷记录日志

    学生:曹婷婷                             教师:王建民

    程序:“二柱子02”                   日期:2017/3/13

    日期 编号 引入阶段 排除阶段 修复时间 修复缺陷
    3.10 1 编码 编译 15min 控制随机数范围
    3.11 2 编码 编译 30min 控制不符合条件的重新生成
    3.12 3 编码 编译 40min 括号的随机生成
  • 相关阅读:
    PHP pcntl
    Linux 远程登录命令telnet
    git .gitignore不生效
    使用 GoLand 启动 运行 Go 项目
    Go语言: 万物皆异步
    MYSQL 单表一对多查询,将多条记录合并成一条记录
    详解PHP中instanceof关键字及instanceof关键字有什么作用
    all_user_func()详解
    python的反射
    python 的魔术方法
  • 原文地址:https://www.cnblogs.com/ttzz/p/6533320.html
Copyright © 2011-2022 走看看