• 个人项目-小学四则运算 “软件”之初版


    本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2166 

    github远程仓库的地址:https://github.com/lirou1/git

    一、题目要求:

          任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。

    1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

    2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。

     

    二、个人软件过程耗时估计与统计表

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 3 4
    · Estimate 估计这个任务需要多少时间 30 38
    Development 开发 10 15
    · Analysis 需求分析 (包括学习新技术) 3 4
    · Design Review 设计复审 4 5
    · Coding Standard 代码规范 2 3
    · Design 具体设计 10 12
    · Coding 具体编码 15 21
    · Code Review 代码复审 7 9
    · Test 测试(自我测试,修改代码,提交修改) 3 5

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    三、代码提交

    自定义变量

     

    public static void main(String[] args){
            int number,answer,mol,z;//题目数量,答案,分子,用户输入的整数答案,
            int a,b,c,m,n;//a,b为分子,c为运算符,m,n为分母
            int h = 0;//答对题数
            System.out.printf("请输入需要生成的题目数量:");
            Scanner d = new Scanner(System.in);
            number = d.nextInt();//题目数量
            for(int i = 0 ; i < number ; i++){
                Random a1 = new Random();//生成随机数
                Random b1 = new Random();
                Random c1 = new Random();
                Random m1 = new Random();
                Random n1 = new Random();
                a = a1.nextInt(100);//随机数范围0-100
                b = b1.nextInt(100);
                c = c1.nextInt(4);//0为+,1为-,2为*,3为/
                m = m1.nextInt(100);
                n = n1.nextInt(100);

     加法的部分运算

                if(c==0){//0为+
                    if(m==0&&n==0){
                        m = m1.nextInt(100)+1;//分母不能为0
                        n = n1.nextInt(100)+1;
                        if(a%m==0&&b%n==0){//整数
                            answer = a + b;
                            System.out.printf(a+"+"+b+"= ");
                            Scanner user = new Scanner(System.in);//获取输入的答案
                            z = user.nextInt();
                            if(z==answer){
                                System.out.println("回答正确!");
                                h++;
                            }else{
                                System.out.println("回答错误!正确答案是"+answer);
                            }
                        }else if(a%m==0&&b%n!=0){//分数处理
                            String x = b + "/" + n;//存分数
                            mol = a*n + b ;//计算分子
                            System.out.printf(a+"+"+x+"= ");
                            String y =  mol + "/"+ n;//存分数计算结果
                            Scanner user = new Scanner(System.in);
                            String score = user.next();//用户输入的分数答案
                            if(score.equals(y)){
                                System.out.println("回答正确!");
                                h++;
                            }else{
                                System.out.println("回答错误!正确答案是"+y);
                            }
                        }

    减法的部分运算

                if(c==1){//1为-
                    if(m==0&&n==0){
                        m = m1.nextInt(100)+1;
                        n = n1.nextInt(100)+1;
                        if(a%m==0&&b%n==0){
                            answer = a - b;
                            System.out.printf(a+"-"+b+"= ");
                            Scanner user = new Scanner(System.in);
                            z = user.nextInt();
                            if(z==answer){
                                System.out.println("回答正确!");
                                h++;
                            }else{
                                System.out.println("回答错误!正确答案是"+answer);
                            }
                    }else if(a%m==0&&b%n!=0){
                        String x = b + "/" + n;
                        mol = a*n - b ;
                        System.out.printf(a+"-"+x+"= ");
                        String y =  mol + "/"+ n;
                        Scanner user = new Scanner(System.in);
                        String score = user.next();
                        if(score.equals(y)){
                            System.out.println("回答正确!");
                            h++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }else if(a%m!=0&&b%n==0){

    乘法的部分运算

                if(c==2){
                    if(m==0&&n==0){
                        m = m1.nextInt(100)+1;
                        n = n1.nextInt(100)+1;
                        if(a%m==0&&b%n==0){
                            answer = a * b;
                            System.out.printf(a+"x"+b+"= ");
                            Scanner user = new Scanner(System.in);
                            z = user.nextInt();
                            if(z==answer){
                                System.out.println("回答正确!");
                                h++;
                            }else{
                                System.out.println("回答错误!正确答案是"+answer);
                            }
                    }else if(a%m==0&&b%n!=0){
                        String x = b + "/" + n;
                        mol = a*b ;
                        System.out.printf(a+"x"+x+"= ");
                        String y =  mol + "/"+ n;
                        Scanner user = new Scanner(System.in);
                        String score = user.next();
                        if(score.equals(y)){
                            System.out.println("回答正确!");
                            h++;
                        }else{
                            System.out.println("回答错误!正确答案是"+y);
                        }
                    }else if(a%m!=0&&b%n==0){

    除法的部分运算

    if(c==3){
                    if(b==0){
                        b = b1.nextInt(100)+1;
                        if(m==0&&n==0){
                            m = m1.nextInt(100)+1;
                            n = n1.nextInt(100)+1;
                            if(a%m==0&&b%n==0){
                                if(a%b!=0){
                                    String x=a+"/"+b;
                                System.out.printf(a+"÷"+b+"= ");
                                Scanner user = new Scanner(System.in);
                                String score = user.next();
                                if(score.equals(x)){
                                    System.out.println("回答正确!");
                                    h++;
                                }else{
                                    System.out.println("回答错误!正确答案是"+x);
                                }
                                }else{
                                    answer = a / b;
                                    System.out.printf(a+"÷"+b+"= ");
                                    Scanner user = new Scanner(System.in);
                                    z = user.nextInt();
                                    if(z == answer){
                                        System.out.println("回答正确!");
                                        h++;
                                    }else{
                                        System.out.println("回答错误!正确答案是"+answer);
                                    }
                                }
                        }else if(a%m==0&&b%n!=0){

    具体代码已提交至github上

     

    四、需求分析

            用户输入生成题目的个数,并能够自动随机生成100以内的加减乘除四则运算,运算包括整数和分数的运算,答完题后判断对错并输出正确答案,并在最后能统计答对的题数与正确率。

    五、构思设计

           整个设计都是main函数里面实施的,以多重判断的语句来实现整数跟分数的运算,用到的环境是idea

    六、遇到的问题与解决

           分数跟整数的判断,特别是在除法运算立马所要做的判断以及计算是最复杂的,要思路非常清晰才可以,这部分有去问同学。这次的程序耗时很大,原因是自己的基础不足,今后应该多看看基础知识,多积累经验,多向有经验的同学请教也是有用的,希望可以把专业学好。

     

     

  • 相关阅读:
    idea安装好python后显示无SDK问题
    使用idea在windows上连接远程hadoop开发_配置环境
    最小二乘法估计----MATLAB最小二乘法求一元线性回归
    MATLAB最小二乘法求线性回归
    MATLAB求解线性规划(含整数规划和0-1规划)问题
    蒙特卡洛方法蒙特卡洛方法 matlab 实现 matlab 实现
    MATLAB神经网络实例及训练结果各参数解释
    单元格添加斜线
    ppt的高级设计法——虚实结合
    word中插入六角括号的方法﹝﹞
  • 原文地址:https://www.cnblogs.com/lirou/p/9764177.html
Copyright © 2020-2023  润新知