2016012061 小学四则运算练习软件项目报告

小学四则运算练习软件项目报告

 

代码地址:https://git.coding.net/yangyc061/personal-project.git

一、需求分析

设计并编写一个java程序,使之能够实现小学四则运算自动出题,同时,要能够给出正确答案。

二、功能设计

(1)基本功能:

1.程序可接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题。

2.每个数字在 0 和 100 之间,运算符在3个到5个之间。

3.每个练习题至少要包含2种运算符。

4.练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。

5.当程序接收的参数为4时,以下为一个输出文件示例:

(2)扩展功能:

练习题生成好后,将自己的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息文件目录与程序目录一致。

三、设计实现

1.利用Math.random()随机生成100以内的四个数

2.利用Math.random()随机生成四则运算符号 

3.用户输入题目的数量,产生相应数量的四则运算表达式

4.输出结果到result.txt文件

四、算法详解

1.随机生成操作数与运算符

          //生成四个随机数和运算符
          int a=(int)(Math.random()*100);
          int b=(int)(Math.random()*100);
          int c=(int)(Math.random()*100);
          int d=(int)(Math.random()*100);
          int x=(int)(Math.random()+1);

2.提示用户输入题目数量

input = new Scanner(System.in);
     int n=0;
     System.out.println("文件创建成功!请输入四则运算练习题的数量:");  //提示用户输入四则运算题的数量
     
       try {            
          n=input.nextInt();
          if(n>1000||n<1){
          System.out.println("对不起,只允许输入1-1000之间的整数!");  //判断用户输入的题目数量是否合法
        return;  //结束运行
            }
        }catch (Exception e){   //判断用户的输入是否不是数字
          System.out.println("对不起,只允许输入1-1000之间的数字!");
            return;   //结束运行

        }
     

3.生成result.txt文件记录结果

File writename = new File("../result.txt");  //建立result文件来保存运算产生的结果"
    writename.createNewFile(); 
    out = new BufferedWriter(new FileWriter(writename));
     out.write("2016012061
");  //向文件中输入学号

五、测试运行

1.命令行输出

 

2.result.txt文件输出 

六、部分代码展示

private static Scanner input;
private static BufferedWriter out;

public static void main(String []args) throws IOException{

     input = new Scanner(System.in);
     int n=0;
     System.out.println("文件创建成功!请输入四则运算练习题的数量:");  //提示用户输入四则运算题的数量
     
       try {            
          n=input.nextInt();
          if(n>1000||n<1){
          System.out.println("对不起,只允许输入1-1000之间的整数!");  //判断用户输入的题目数量是否合法
        return;  //结束运行
            }
        }catch (Exception e){   //判断用户的输入是否不是数字
          System.out.println("对不起,只允许输入1-1000之间的数字!");
            return;   //结束运行

        }
     
     
     
     File writename = new File("../result.txt");  //建立result文件来保存运算产生的结果"
    writename.createNewFile(); 
    out = new BufferedWriter(new FileWriter(writename));
     out.write("2016012061
");  //向文件中输入学号 
        for(int i=0;i<n;i++)   //使用for循环随机生成n个四则运算表等式
        {
            
          //生成四个随机数和运算符
          int a=(int)(Math.random()*100);
          int b=(int)(Math.random()*100);
          int c=(int)(Math.random()*100);
          int d=(int)(Math.random()*100);
          int x=(int)(Math.random()+1);
          switch(x)
            {
             case 0:
               while(true){
                 d= (int) (Math.random()*100+1 );  //保证 分母不为零
                 if(c%d==0)
                  {
                  System.out.println(a+"+"+b+"+"+c+"÷"+d+"=");
                  out.write(a+"+"+b+"+"+c+"÷"+d+"="+(a+b+c/d)+"
");
                  break;
                    }
                         
               } 
                 

七、PSP展示

PSP

任务内容

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

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

Planning

计划

30

30

·    Estimate

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

30

30

Development

开发

360

459

·   Analysis

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

10

10

·    Design Spec

·    生成设计文档

10

6

·    Design Review

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

4

6

·    Coding Standard

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

6

5

·    Design

·    具体设计

10

12

·    Coding

·    具体编码

300

400

·    Code Review

·    代码复审

10

10

·    Test

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

10

10

Reporting

报告

15

15

·    Test Report

·    测试报告

8

7

·    Size Measurement

·    计算工作量

2

3

·    Postmortem & Process

     Improvement Plan

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

5

5

八、总结

        经过这一次项目的练习,我深刻意识到自己编码能力的低下。因为,对于这样的一个问题,我一开始简直就是毫无头绪,随后,有了些许想法之后,但我对于JAVA语言,可以说是基本不懂,于是我还得上网查阅,询问同学。最后,对于这个项目,我还得反反复复,大量的查看别的已经提交了这个作业的同学的代码,以他们的代码来作为参考,获得思路。同时,我也在此声明,由于我实在不会编写这个程序,所以我就对郑栋同学的代码做了借鉴与参考(链接地址:https://git.coding.net/moyuming/XiangMu.git)。总体来说,题目所要求的功能,经过我向同学的请教与别人作业的参考,我还是勉强实现了,但是,跟其他同学比起来,我的项目也一定还有不足之处,对此,我也深感遗憾,实在抱歉!

        其次,我的实践能力也确实低下,虽然很快就下载好了项目要求的jdk和jre,同时通过上网查阅相关资料,也很快就配置好了环境变量,但是,对于下载的ecllipse却不会使用,还得向同学请教,这就算了,也不知道是什么时候,什么原因,一不小心就把eclipse的console视图给关闭了,所以我还以为是eclipse出问题了,上网查也查不出是什么原因,最后就卸载了又重装,就这样反复了两次,最后总算终于知道是什么原因了,想一想,我还真是够愚蠢的。

       所以,经过这一次的经验与教训,我意识到自己确实还存在着很大的不足,虽然,我不能说是立马就能克服这些不足,但是,我会去一点一点的克服它,去弥补它。

原文地址:https://www.cnblogs.com/yangyc/p/8638841.html