zoukankan      html  css  js  c++  java
  • 201571030143 小学四则运算练习软件项目报告

      GitHub地址:https://github.com/t-Poison/Sweet-ly

    实验要求:  

      我们从小学就开始学习四则运算,现在要完成一个包含3到5个数字的四则运算练习的命令行软件开发,软件的基本功能要求如下:

    • 程序可接收一个输入参数n,然后随机产生n道加减乘除练习题,每个数字在 0 和 100 之间,运算符在3个到5个之间。
    • 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
    • 练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。
    • 当程序接收的参数为4时,以下为输出文件示例。

                    

    一、需求分析 

    • 程序需要输入参数n,确定输出算式的个数;
    • 生成有3~5个运算符的两位数运算表达式;
    • 表达式的结果不能是小于0的数,也不能是小数;
    • 将运算结果以及学号输出到文本文档中。

    二、功能设计

    • 输入n后,在0~100随机生成n个表达式;
    • 将运算表达式的计算结果以及学号输出保存到result.txt。

    三、设计实现

      程序流程图如下所示:

    四、测试运行

      如下图所示,运行Main.java文件后,当输入n为10时,随机产生运算式,并同时在result.txt文件中输出结果。

                     

    五、核心代码

    1 //创建流文件,并将学号写入
    2         File writename = new File("result.txt"); // 相对路径,如果没有则要建立一个新的result。
    3          writename.createNewFile(); // 创建新文件
    4          BufferedWriter out = new BufferedWriter(new FileWriter(writename));
    5          out.write("201571030143
    "); // 
    即为换行
     1 for(int i=1;i<=n;i++)
     2         {
     3             int a=(int)(Math.random()*100);
     4             int b=(int)(Math.random()*100);
     5             int a1=(int)(Math.random()*100);
     6             int b1=(int)(Math.random()*100);
     7             int c=(int)(Math.random()*4);
     8             switch(c)
     9             {
    10                 case 0:
    11                     while(true){
    12                         a1= (int) (Math.random()*100 + 0);
    13                         b1= (int) (Math.random()*100 + 1);
    14                         if(a1%b1==0)
    15                         {
    16                              System.out.println(a+"+"+b+"+"+a1+"/"+b1+"=");
    17                              out.write(a+"+"+b+"+"+a1+"/"+b1+"="+(a+b+a1/b1)+"
    ");
    18                              break;
    19                              //count++;
    20                         }
    21                     }
    22                     break;
    23                 case 1:
    24                     if(a<b)
    25                     {
    26                         int temp=a;
    27                         a=b;
    28                         b=temp;
    29                     }
    30                     System.out.println("("+a+"-"+b+")"+"+"+a1+"*"+b1+"=");
    31                     out.write("("+a+"-"+b+")"+"+"+a1+"*"+b1+"="+((a-b)+a1*b1)+"
    ");
    32                     break;
    33                 case 2:
    34                     System.out.println(a + " * " + b+"+" +a1+"+ "+b1+" = ");
    35                     out.write(a + " * " + b+"+" +a1+"+ "+b1+" = "+(a*b+a1+b1)+"
    ");
    36                     break;
    37                 case 3:
    38                     while(true){
    39                         a = (int) (Math.random()*100 + 0);
    40                         b = (int) (Math.random()*100 + 1);
    41                         if(a%b==0)
    42                         {
    43                             if(a/b+a1>=b1)
    44                              System.out.println(a + " / " + b +"+"+ a1+"-"+b1+" = " );
    45                              out.write(a + " / " + b +"+"+ a1+"-"+b1+" = " +(a/b+a1-b1)+"
    ");
    46                              break;
    47                              //count++;
    48                         }
    49               
    50                     }
    51             }
    52              out.flush(); // 把缓存区内容压入文件
    53         }

    六、总结

      1.本次的项目实验做的不是很顺利,由于平时很少用java写程序,刚拿到题目时分析了很久,才渐渐对java语言熟悉起来。本次程序我用了一个for循环实现了运算式的生成,但是也是在一步步的设计中琢磨出来的,将运算结果写入文件的部分,起初写的相对路径的写法是错误的,查找了资料后才掌握了正确的方法。在随机生成运算式的部分,加减乘除也是随机生成的,开始的时候只写了两个数之间的四则运算,但是老师的题目要求三到五个运算符,由于我开始未作程序设计,导致自己的思路定势在上述代码的设计上,于是投机取巧又加了两个运算符,并将运算符号写死,但是其中的数字都是随机产生的,表达式的结果中也没有负数和小数出现。

      2.通过本次实验,我认识到在开发一个项目程序时,必须先要做好需求分析,虽然看似简单,但是很重要。在写代码的时候,先要做代码设计,想好每一步应该做的,不能直接就上手开始写。在这次实验中,代码是一步一步写出来的,也算是有收获吧,在之后的学习中,我也会将该程序功能完善,希望下次能有所进步。

    七、展示PSP

    PSP2.1

    任务内容

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

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

    Planning

    计划

    15

    25

    ·       Estimate

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

    10

    20

    Development

    开发

    200

    360

    ··       Analysis

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

    10

    15

    ·       Design Spec

    ·  生成设计文档

    8

    10

    ·       Design Review

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

    8

    10

    ·       Coding Standard

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

    15

    15

    ·       Design

      具体设计

    30

    45

    ·       Coding

      具体编码

    180

    260

    ·       Code Review

    ·  代码复审

    12

    20

    ·       Test

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

    20

    30

    Reporting

    报告

    30

    45

    ··       Test Report

    ·  测试报告

    10

    15

    ·       Size Measurement

      计算工作量

    6

    6

    ·       Postmortem & Process Improvement Plan

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

    10

    20

     

     

     

  • 相关阅读:
    python处理csv数据
    python数据持久存储:pickle模块的基本使用
    使用SVD方法实现电影推荐系统
    使用矩阵分解(SVD)实现推荐系统
    多维数组分解----SVD在推荐系统中的应用-
    Logistic Regression--逻辑回归算法汇总**
    Netflix推荐系统:从评分预测到消费者法则
    从决策树学习谈到贝叶斯分类算法、EM、HMM
    数据挖掘中 决策树算法实现——Bash
    决策树算法
  • 原文地址:https://www.cnblogs.com/Ztian/p/8613265.html
Copyright © 2011-2022 走看看