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

coding.net地址:https://git.coding.net/zhaorx1998/zrx.demo.git

      测试步骤    :1.打开src文件夹

                          2.命令处行输入:javac -encoding utf-8 Main.java(回车)

                          3.输入java Main 20(回车)

                          4.产生result.txt文件 

【项目开发流程简介】

一、需求分析:

(1)程序接受参数n后,可生成n道加减乘除四则运算练习题,每个数字在0~100之间,运算符3~5个之间

(2)每个习题至少要包含2运种算符

(3)练习题中不得出现负数和小数

(4)练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中

二、功能的设计、实现及代码展示:

(1)实现运算符3~5个之间,将两个运算符、三个运算符、四个运算符的固定公式进行循环操作,随机产生3~5个运算符的随机四则运算题目,及相应答案

    String rstring1;
        Random r=new Random();
        int p=r.nextInt(3);
        if(p==0){
        for(int i=0;i<3;i++)
        {
            Random rand=new Random(); 
            if(i!=1)a[i]=rand.nextInt(3);
            else a[i]=rand.nextInt(2);
        }        
         rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2]+""+operator[a[2]]+""+num[3];
        
        ArrayList<String> expression1=new ArrayList<String>();//运算式
        }
        else if(p==1){
        for(int i=0;i<2;i++)
        {
            Random rand=new Random(); 
            if(i!=1)a[i]=rand.nextInt(3);
            else a[i]=rand.nextInt(2);
        }        
         rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2];
    
        ArrayList<String> expression2=new ArrayList<String>();//运算式
        }else{
            for(int i=0;i<4;i++)
            {
                Random rand=new Random();
                if(i!=1)a[i]=rand.nextInt(4);
                else a[i]=rand.nextInt(2);
            }        
             rstring1=num[0]+""+operator[a[0]]+""+num[1]+""+operator[a[1]]+""+num[2]+""+operator[a[2]]+""+num[3]+""+operator[a[3]]+""+num[4];
            
            ArrayList<String> expression=new ArrayList<String>();//运算式
        }

(2)加减乘除的先后运算顺序,list容器存储数字和符号,用数组存储加减乘除,random随机产生符号,用数字大小判断符号优先级(此部分是参照了一些博主的博文完成的,是这次项目中遇到的比较难的部分)

(3)练习中不得出现负数:在输出处进行“过滤”,带有负数的运算会被“过滤”掉

   try{
            System.out.println("请输入要生成的算式个数:");
            PrintStream ps = new PrintStream("result.txt");// 创建一个打印输出流
            System.setOut(ps);    
            System.out.println("2016012010");
            int num=0;
            int corr=0;
            num=in1.nextInt();
            for(int i=0;i<num;i++){
            corr+=cre();
            if(flag==0){
                i--;
                flag=1;
             }
            }
List<String> list = s.list;
        String oo=s.yunsuan(list);
        if(Float.valueOf(oo)>=0.000000001){
         System.out.println(rstring1+ "="+oo);
         
        }else{
            flag=0;
        }

三、结果展示:

实现:学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中

四、PSP数据:

SP2.1

    Personal Software

       Process Stages

            Time :

     SeniorStudent(min)

 Time :

SDE(min)

           Planning

                 计划

       20

      35

Estimate

  估计这个任务需要多少时间

                       10

                   20+

         Development

                  开发

                      1000

                  1200+

           Analysis

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

                       420

                   700+

         Design Spec

           生成设计文档

                         0

                    0

        Design Review

               设计复审 

                         0

                    0

         Coding Standard

               代码规范 

                        30

                    20

             Design

               具体设计

                        30

                    50

             Coding

               具体编码

                       450

                   600

           Code Review

               代码复审

                        30

                    40

              Test

                  测试

                        40

                    50

           Reporting

                  报告

                       180           

                    300 

  •  Test Report

                测试报告

                        120

                    240 

  •  Size Measurement

              计算工作量

                        30 

                     20     

  • Postmortem& ProcessImprovement Plan

                事后总结

       并提出过程改进计划

           30 

        40 

五、总结

这次的项目比我预计要花费的时间多了一半,很费劲儿,多半时间都在学习实现功能的方法上。从刚开始自己有了大概的思路,然后去看一些相关博客,学习一些相关的知识和方法,再到自己敲代码,还有最后的调bug,每一个环节都很不容易,一步一坎,边学边做,感觉到自己的知识储备和实践能力的匮乏,曾尝试用布尔方法识别运算符来实现附加的括号功能,因为作业截止时间有限,至今没有成功。为自己Java水平的low而深感痛心,直到完成这个项目,心里还是很堵,感觉自己还有很多的不足,在整个项目从头到尾我都在思考和学习,虽然基础一般,但也在尽自己最大的努力做好这个项目,在过程中还是有一些收获的,之后会再多加尝试和努力的!

原文地址:https://www.cnblogs.com/mrxueren/p/8638369.html