20194658自动生成四则运算题第一版报告

一.需求分析

(1)自动生成10道100以内的2个操作数的四则运算算式(+ - *  /)

(2)剔除重复算式。  2 + 3 =    和  2 + 3 =     是重复算式      2 + 3 =   和   3 + 2 =  不属于重复算式

(3)题目数量可定制

(4)相关参数可控制

         是否包含乘法和除法

         操作数数值范围可控(如操作数 在100以内   还是1000以内)

         操作数是否含负数    

  (5)生成的运算题存储到外部文件result.txt中

二.程序设计

主要流程图:

四则运算Calculator类:

三.功能设计

    基本功能

(1)自动生成小学生的四则运算,需要用随机数生成数字

       1.先实现随机数相加    

        r1[i]=(int)(number3+Math.random()*(number4-number3));
        r2[i]=(int)(number3+Math.random()*(number4-number3));   

        S1[i]=(r1[i]+r2[i]);

      2.然后生成随机运算符

         建立了一个数组r3,将运算符存储在数组r3中

         static String[] r3={"+","-","*","/"};

      3.能够确保生成符号加减乘除计算

     扩展功能

(1)自动生成100以内四则运算

(2)相关参数可以控制

(3)操作数数值范围可控制

    是否包括负数

    是否包括乘法或者除法

(4)生成的运算题存储到外部

   

 四.代码片段

1.选择所需要的功能

 

while(true)
        {
            Scanner scan1=new Scanner(System.in);
            System.out.println("请输入四则运算的选项:1:整数计算  2:退出");
            //System.out.println("");
            //使用choose来存储从键盘输入的数据
            int choose=scan1.nextInt();
            if(choose==1)
            {
                System.out.println("功能1:请输入定制数量:");
                Scanner scan2=new Scanner(System.in);
                int number=scan2.nextInt();
                
                //是否有乘除法
                System.out.println("功能2:是否有乘除:0.否  1.是");
                int number2=scan2.nextInt();
                
                //输入数值范围
                System.out.println("功能3:输入数值范围:");
                System.out.println("请输入上界:");
                int number3=scan2.nextInt();
                
                System.out.println("请输入下界:");
                int number4=scan2.nextInt();
                
                //加减有无负数 
                System.out.println("功能4:加减有无负数:0.否  1.是");
                int number5=scan2.nextInt();
                
                //除法有无余数
                System.out.println("功能5:除法有无余数:0.否  1.是");
                int number6=scan2.nextInt();
}
}

2.显示结果

 System.out.println("是否输出定制结果?(1.输出    其他: 不输出)");
                Scanner scan3=new Scanner(System.in);
                int judge1=scan3.nextInt();
                if(judge1==1)
                {
                    for(int i=0;i<number;i++)
                    {
                        System.out.println("第"+(i+1)+"个算式的结果为:"+S1[i]);
                    }
                }
            

3.退出答题系统

if(choose==2)
            {
             System.out.println("您已退出自动出题系统");
             System.exit(0);
             }    

4.将结果保存在result.txt文件中

 PrintStream as=new PrintStream("d:/result.txt");
//设置并初始化流对象,设置将要输入的文件目录和文件格式
  System.setOut(as);
//将流对象中数据输出文件中

 

五.总结

设计四则运算算法,在运行无误后,根据客户需求逐一增加代码功能,每增加一步进行测试,测试无误后,写下一个功能。

六.PSP

 

PSP2.1

任务内容

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

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

Planning

计划

10

20

·       Estimate

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

10

20

Development

开发

820

1020

··       Analysis

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

60

120

·       Design Spec

·  生成设计文档

0

0

·       Design Review

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

0

0

·       Coding Standard

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

5

10

·       Design

  具体设计

10

10

·       Coding

  具体编码

625

720

·       Code Review

·  代码复审

60

80

·       Test

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

60

80

Reporting

报告

20

120

··       Test Report

·  测试报告

0

0

·       Size Measurement

  计算工作量

0

0

·       Postmortem & Process Improvement Plan

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

20

120

 

七.分析

在本次实验中,主要在代码完成、调试中花了很多时间。我感觉一方面由于跨专业没有接触过编程语言,对于Java语法结构等知识方面都严重匮乏。另一方面还是对于软件工程这门课理解有偏差。不过在同学的帮助下以及自己查找资料下完成了作业。

 

posted on 2019-09-13 20:37  张璐20194658  阅读(211)  评论(11编辑  收藏  举报