个人作业1——四则运算题目生成程序(基于控制台)

码市地址:https://coding.net/u/H1159650478/p/huangrui/git/blob/master/软件工程.txt
1、 a、需求分析: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷ 并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目 Myapp.exe -n 10
b、功能设计: 1.产生随机数。
2.随机进行整数和真分数的运算并且可以判断正确并给出正确答案。
3.可以算出正确率。
c、设计实现: 我是用eclipse软件写的java代码。由于知识掌握的不够好,所以我是用比较繁琐的switch来完成整数和分数的四则运算,一共用到8个case。然后运用了Random完成了随机数的生成,最后当程序跳出while循环后进行了正确率的运算,整个编程也写完了。
d、代码说明:
这段代码实现了我要自主做的题目数,并实现了用while循环使题目随机生成。

        int c = 0;
        while (c < x) {
            Random r = new Random();
            int i;// 分子
            int j;
            int d;// 分母
            int e;

这段代码就是用switch和case开始了四则运算。

            switch (s) {
            case 0: {
                i = r.nextInt(23);// 随机数在0到23之间产生
                j = r.nextInt(23);
                System.out.print(+i + "+" + j + "=");
                Scanner sc = new Scanner(System.in);
                int str = 0;
                str = sc.nextInt();
                int sum = i + j;
                if (str == sum) {
                    System.out.println("correct");
                    a++;
                    c++;
                } else {
                    System.out.println("wrong");
                    int p = i + j;
                    System.out.println("the right answer is:" + p);
                    c++;
                }
            }
                break;

这段代码就是这次编程我觉得最难的地方了,用到辗转相除法求最大公约数。

                    int n1 = i * e;
                    int m1 = j * d;
                    int k = m1 % n1;
                    int l = n1;
                    int o = 0;
                    if (k == 0) {
                        m1 = m1 / n1;
                        n1 = 1;
                    } else {
                        while (m1 % k != 0 || n1 % k != 0) {
                            o = k;
                            k = l % k;
                            l = o;

                        } 
                        m1 = m1 / k;
                        n1 = n1 / k;
                    }// 辗转相除求出最大公约数 

e、测试运行:
个人作业1——四则运算题目生成程序(基于控制台)_第1张图片
正确错误都有显示出来,最后计算出来对的正确率。
2、展示PSP
个人作业1——四则运算题目生成程序(基于控制台)_第2张图片
3、小结:这次作业对我而言很有挑战,真的发现自己差了很多。而且以前的知识由于没有巩固忘记的也很快,所以编程很吃力。虽然思路简单但是知识储存太少,导致编程的工作量增加了很多。说实话一开始随机数怎么做都完全不知道,这次的收获大概在于学懂了一点点随机生成吧,当然也向同学们寻求了很多帮助,希望下次作业可以再有进步。

你可能感兴趣的:(个人作业1——四则运算题目生成程序(基于控制台))