• 《软件工程》第二次作业:编写小学生四则运算测试软件


    一、题目:

    • 请编写一个能自动生成小学四则运算题目的 “软件”。
    • 让程序能接受用户输入答案,并判定对错。
    • 最后给出总共以及 对/错      的数量。

    二、基本要求:

    • 所编写出来的“软件”选择界面设计,选择加、减、乘、除运算。
    • 系统随机产生一百以内的两个数进行运算。
    • 使用该软件时,用户从键盘输入结果,回答正确和回答错误都有提示,结束后系统会自动给出相应的总题数和 对/错 的数量。

    三、需求分析:

    • 程序能实现0~100以内的加法、减法、乘法以及除法的运算。
    • 用户能在java控制窗口输入自己的答案,该程序能够判断用户所输入答案的对错。
    • 测试结束后,程序能给出所做题目的数量以及所做题目对/错的数量。

    四、设计:

    • 定义五个变量分别是:e, r, a, b, c,其中e表示答错的题数,表示r表示答对的题数,a, b分别表示0~100之间随机产生的两个整数
    • 使用Scanner类创建了多个对象并对不同的运算类型调用相应的方法。
    • 加、减、乘、除用一个switch控制语句来实现,整个程序的实现在主函数中体现。

    五、代码实现:

     1 import java.util.Random;
     2 import java.util.Scanner;
     3 
     4 public class qq {
     5     public static void main(String[] args) {
     6         int e = 0, r = 0;
     7         System.out.println("欢迎来到四则运算测试软件!");
     8         System.out.println("做题前请认真读题,祝您考试愉快!");
     9         Random r1 = new Random();
    10         for (int i = 0; i < 7; i++) {
    11             int m, n;
    12             int a, b, c;
    13             m = r1.nextInt() % 10;
    14             n = m % 4;
    15 
    16             switch (n) {
    17             case 0:
    18                 a = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    19                 b = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    20                 System.out.println(a + "+" + "" + b + "=?");
    21                 Scanner x1 = new Scanner(System.in);
    22                 c = x1.nextInt();
    23                 if (c != a + b) {
    24                     e++;
    25                     System.out.println("回答错误!!");
    26                 } else {
    27                     r++;
    28                     System.out.println("回答正确!!");
    29                 }
    30 
    31                 break;
    32 
    33             case 1:
    34                 a = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    35                 b = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    36                 System.out.println(a + "-" + " " + b + " =?");
    37                 Scanner x2 = new Scanner(System.in);
    38                 c = x2.nextInt();
    39                 if (c != a - b) {
    40                     e++;
    41                     System.out.println("回答错误!!");
    42                 } else {
    43                     r++;
    44                     System.out.println("回答正确!!");
    45                 }
    46 
    47                 break;
    48 
    49             case 2:
    50                 a = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    51                 b = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    52                 System.out.println(a + "*" + " " + b + " " + "=?");
    53                 Scanner y1 = new Scanner(System.in);
    54                 c = y1.nextInt();
    55                 if (c != a * b) {
    56                     e++;
    57                     System.out.println("回答错误!!");
    58                 } else {
    59                     r++;
    60                     System.out.println("回答正确!!");
    61                 }
    62 
    63                 break;
    64 
    65             case 3:
    66                 double d;
    67                 a = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    68                 b = new Random().nextInt((int) Math.pow(10, 2)) + 1;
    69                 if (b == 0)
    70                     b++;
    71                 System.out.println(a + "/" + " " + b + " " + "=?");
    72                 Scanner y2 = new Scanner(System.in);
    73                 d = y2.nextDouble();
    74                 if (d != (a / b) / 1.00) {
    75                     e++;
    76                     System.out.println("回答错误!!");
    77                 } else {
    78                     r++;
    79                     System.out.println("回答正确!!");
    80 
    81                 }
    82 
    83                 break;
    84 
    85             }
    86         }
    87         System.out.println("考试结束!!");
    88         System.out.println("您一共做了:" + (r + e) + "道题目,其中正确的有" + r + "道,错误的有" + e + "道!");
    90     }
    91 }

    六、程序效果图:

    七、PSP耗时:

       

         总结:老师刚开始布置作业的时候还没有明白是怎么回事,后来在第二次上机课的时候,老师再次的说明我才理解题目的意思。之前学过的相关计算机课程大部分都忘记了,例如c语言程序中的switch控制语句的用法以及java中类的用法也不怎么记得了,在写程序的过程中还好及时的查阅课本和资料、寻求同学和老师帮助才算完成。其中的不足之处还希望老师指出,以后继续努力!

        

         

     

     

  • 相关阅读:
    Java实习二
    Java实习一
    从0开始 Java实习 黑白棋
    从0开始 Java学习 packet用法
    解题报告:hdu 1276 士兵队列训练问题
    从0开始 数据结构 AC自动机 模板(from kkke)
    从0开始 数据结构 AC自动机 hdu 2222
    从0开始 数据结构 字典树 hdu1251
    从0开始 图论学习 拓扑排序 链式前向星表示法
    ui爬虫工具-未完成
  • 原文地址:https://www.cnblogs.com/songguangneng/p/4415350.html
Copyright © 2020-2023  润新知