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

本次作业要求来自: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

六、遇到的问题与解决

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

 

 

posted @ 2018-10-10 03:11  李柔  阅读(202)  评论(2编辑  收藏  举报