• 实验二


    实验名称:简单四则运算

    Github地址:https://github.com/wulezha/Sizyunsuan/tree/master

    1、实验目的与要求

    (1)掌握软件项目个人开发流程。

    (2)掌握Github上发布软件项目的操作方法。

    2、实验内容和步骤
     
    任务1:
    尝试按照《构建之法》第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个包含3到5个数字的四则运算练习的命令行软件开发题目参考:http://www.cnblogs.com/xinz/p/7417960.html
    软件基本功能要求如下:
    • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
    • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
    • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt中,不要输出额外信息,文件目录与程序目录一致。
    • 当程序接收的参数为4时,以下为输出文件示例。

    3.软件附加功能要求如下:(请有余力的同学完成)
    • 支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。(5分)
    • 扩展程序功能支持真分数的出题与运算,例如:1/6 + 1/8 + 2/323/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1/6=2/3,而非4/6。(5分)

    4.需求分析:

    1. 自动生成小学四则运算,需要用到随机数,用随机数随机生成数字,能够随机生成符号加减乘除(除数不为0)。
    2. 支持分数和整数的四则运算,同样是利用随机数分别生成分子与分母(分母不为0).

    5.功能设计:

    1. 根据用户输入的参数生成相应数量的题目。
    2. 利用Random语句实现随机生成的整数、分子、分母以及加减乘除。
    3. 根据用户选择生成难易程度不同的题。

    6.设计实现:

    1.实现100以内的两位数以及三位数的混合运算。

    7.测试运行:下面是我的测试结果截图

     

    8.核心代码:

    复制代码package sizeyunsuan2;
    import java.util.Scanner;
    public class Caculator {
         public static void main(String[] args) {
            System.out.println("0表示结束运算,1代表加减运算,2代表乘除运算,3代表混合运算,请选择:");
            Yunsuan bn=new Yunsuan();
            Jiajian an=new Jiajian();
              Chengchu cn=new Chengchu();
              Hunhe dn=new Hunhe();
     Scanner in=new Scanner(System.in);
              int L=in.nextInt();
             
              if(L==0)
              {
                  bn.Showme();
              }
              if(L==1)
              {
                  System.out.println("当M=10时表示两位数的加减运算,M=100时表示三位数的加减运算...请选择");
                  int M=in.nextInt();
                  an.setM(M);
                  System.out.println("请输入需要打印多少道题,10的倍数:");
                  int N=in.nextInt();
                  an.setN(N);
                  an.Showme();
              }
              if(L==2)
              {
                  System.out.println("当M=10时表示两位数的乘除运算,M=100时表示三位数的乘除运算...请选择");
                  int M=in.nextInt();
                  cn.setM(M);
                  System.out.println("请输入需要打印多少道题,10的倍数:");
                  int N=in.nextInt();
                  cn.setN(N);
                  cn.Showme();
              }
              if(L==3)
              {
                  System.out.println("当M=10时表示两位数的混合运算,M=100时表示三位数的混合运算...请选择");
                  int M=in.nextInt();
                  dn.setM(M);
                  System.out.println("请输入需要打印多少道题,10的倍数:");
                  int N=in.nextInt();
                  dn.setN(N);
                  dn.Showme();
              }
             
          }
     
      }
      class Yunsuan
      {
          public int N;
          public int getN() {
              return N;
          }
          public void setN(int n) {
              N = n;
          }
          public int M;
          public int getM() {
              return M;
          }
          public void setM(int m) {
              M = m;
          }
          //int a,b;
          public void Showme()
          {
              System.out.println("结束运算。");
          }
      }
      class Jiajian extends Yunsuan
      {
          public char o[]={'+','-'};
          public void Showme()
          {
              for(int i=0;i<N/10;i++)
              {
                  for(int j=0;j<10;j++)
                  {
                    int a=(int)(Math.random()*M)+1;
                     int b=(int)(Math.random()*M)+1;
                     int c=(int)(Math.random()*2);
                     System.out.print(a);
                     System.out.print(o[c]);
                     System.out.print(b+"=  ");
                 }
                 System.out.println();
             }
         }
     }
     class Chengchu extends Yunsuan
     {
         public char p[]={'*','/'};
         public void Showme()
         {
             for(int i=0;i<N/10;i++)
             {
                 for(int j=0;j<10;j++)
                 {
                     int a=(int)(Math.random()*M)+1;
                     int b=(int)(Math.random()*M)+1;
                     int c=(int)(Math.random()*2);
                     System.out.print(a);
                     System.out.print(p[c]);
                     System.out.print(b+"=  ");
                 }
                 System.out.println();
             }
         }
     }
     class Hunhe extends Yunsuan
     {
         public char m[]={'+','-','*','/'};
         public void Showme()
         {
             for(int i=0;i<N/10;i++)
             {
                 for(int j=0;j<10;j++)
                 {
                     int a=(int)(Math.random()*M)+1;
                     int b=(int)(Math.random()*M)+1;
                     int d=(int)(Math.random()*M)+1;
                     int f=(int)(Math.random()*M)+1;
                     int c=(int)(Math.random()*4);
                     int e=(int)(Math.random()*4);
                     int g=(int)(Math.random()*4);
                     System.out.print(a);
                     System.out.print(m[c]);
                     System.out.print(b);
                     System.out.print(m[e]);
                     System.out.print(d);
                     System.out.print(m[g]);
                     System.out.print(f+"=  ");
                 }
                 System.out.println();
    }
        }
    }

    9.总结:通过一周的学习软件工程的个人项目做完了,由于很久没有在用JAVA,几乎对JAVA的知识点已经忘的一干二净了,通过重看JAVA书,参考网上的代码总算好不容易完成这次的任务,因为是第一次软件工程个人项目,所以有太多东西不会,以后会努力做得更好。

    10.展示PSP

    PSP2.1

    任务内容

    计划完成需要的时间(min)

    实际完成需要的时间(min)

    Planning

    计划

    10

    15

    ·       Estimate

    ·  估计这个任务需要多少时间,并规划大致工作步骤

    10

    8

    Development

    开发

    100

    80

    ··       Analysis

      需求分析 (包括学习新技术)

    10

    15

    ·       Design Spec

    ·  生成设计文档

    5

    30

    ·       Design Review

    ·  设计复审 (和同事审核设计文档)

    0

    0

    ·       Coding Standard

      代码规范 (为目前的开发制定合适的规范)

    3

    20

    ·       Design

      具体设计

    60

    100

    ·       Coding

      具体编码

    100

    200

    ·       Code Review

    ·  代码复审

    7

    5

    ·       Test

    ·  测试(自我测试,修改代码,提交修改)

    13

    21

    Reporting

    报告

    30

    50

    ··       Test Report

    ·  测试报告

    5

    3

    ·       Size Measurement

      计算工作量

    10

    5

    ·       Postmortem & Process Improvement Plan

    ·  事后总结 ,并提出过程改进计划

    5

    3

     11.实验总结:因为JAVA基础没有学好在加很久没有接触JAVA这次感觉有点吃力,课后仔细阅读了JDK帮助文档和JAVA的学习笔记和学习视频,通过从网上查阅大量的参考资料完成了这次作业,做得可能有些功能不符合老师的实验要求但是我会努力一次比一次更好,以后不会的问题我会找方法去解决,而不是不去尝试就放弃,很感谢老师给我们又给了一次机会,并让我们了解了学习是要去不断尝试或许做出来的结果并没有想象中的好,但是做过以后多多少少会有自己的一点收获。

  • 相关阅读:
    [转]Go语言中的make和new
    Python中的get和set方法
    协程是个啥玩意
    聊聊Python中的is和==
    聊聊Python中的闭包和装饰器
    聊聊Python中的生成器和迭代器
    聊聊动态语言那些事(Python)
    在mac上安装svn客户端
    关于mac mini组装普液晶显示器
    IOS 日志输出控制
  • 原文地址:https://www.cnblogs.com/wlzha/p/8615524.html
Copyright © 2020-2023  润新知