• 结对项目


    一,代码地址仓库地址

    coding克隆仓地址:https://git.coding.net/huyifeng1998/jieduixiangmu.git

    二,psp

    PSP

    任务内容

    计划时间(min)

    完成时间(min)

    Planning

    计划

    60

     

         Estimate

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

    60

     

    Development

    开发

    300

     

        Analysis

        需求分析

    100

     

        Design Spec

        生成文档

    0

     

        Design Review

        设计复审

    120

     

        Coding Standard

        代码规范

    30

     

        Design

        具体设计

    100

     

        Coding

        具体编码

    540

     

        Code Review

        代码复审

    300

     

        Test

        测试

    30

     

    Reporting

    报告

    120

     

        Test Report

        测试报告

    30

     

        Size Measurement

        计算工作量

    30

     

       Postmortem& ProcessImprovement Plan

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

    120

     

    信息隐藏:

    对于面向对象的程序设计而言,信息隐藏是一种重要的软件开发手段,它与对象的封装(encapsulation)与模块化(modularity)密切相关。在我看来,信息隐藏使得一个类把复杂的、敏感的、一旦被外界捕获可能会引起不良后果的内容封装在自身内部,这个类以外的代码得不到此类信息(通过反射等手段可能对得到),以提高程序的安全性与健壮性。

    松散耦合:

    有关松散耦合与接口的使用

    一个软件,它具有许多类,类与类之间需要互相调用,一旦某个类与另一个类具有紧密耦合关系的时候,这个软件的重用性就会大大降低。所以一个软件的重用性的高低就取决于它的耦合程度的高低。

    而耦合度是指程序模块之间的关联、依赖程度;

    为避免这种情况,需要降低A与B之间的耦合度,目的就在于,无论B的形式如何,只要B仍然能够实现A所需要的功能,A就不需要重写代码。

    接口:方便各个模块之间的联系

    四,计算模块接口的设计与实现过程

    三个jsp页面:

    first.jsp是首页,可以选择跳转至download或zuoti

    download.jsp是下载页面,可以在此页面定制题目,并下载

     zuoti.jsp是做题页面,可以上传文件批改,也可以在线做题

    两个servlet:

    ChuanServlet是用于做题传参获取题目,调用dangejisuan类的方法来获取题目并传递到前台

    xianshi是用于下载打印,并从前台获取参数传递到类的方法中,调用创建题目的两个类creat和creat1,分别构造不含乘除的表达式和包含乘除的表达式

    五,计算模块接口部分的性能改进

     六,计算模块部分单元测试展示

    七,异常处理

    题目数量的异常处理:

    复制代码
    public static void scopeOfSumError(int num) throws Exception{
    
            if(num<=0||num>10000)
    
                throw new Exception("输入范围有误,请重新输入");
    
        }
    复制代码

    运算数上下界的异常处理:

    复制代码
    public static void ScopeOfArgsMError(int scope_Lower,int scope_Upper) throws Exception{
    
            if(scope_Lower<1||scope_Lower>100||scope_Upper<50||scope_Upper>1000)
    
                throw new Exception("m的输入范围有误");
    
            if(scope_Lower>=scope_Upper)
    
                throw new Exception("上界要大于下界");
    
        }
    复制代码

    运算符的异常处理:

    复制代码
    public static void OperationError(int Operation)throws Exception{
    
            if(Operation<=0||Operation>10000)
    
                throw new Exception("o的输入有误,-o 范围为 1 到 10");      
    
        }
    复制代码

     

    八、界面模块的详细设计过程

    首页first.jsp:

    出题页面download.jsp:

     九,界面模块与计算模块的对接

    public static void  Create( int l, int m1, int m2,int n,String q ) {// 产生1个包含p个运算符的四则运算的方法
                ArrayList<String> a = new ArrayList<String>();
                for(int k=0;k<l;k++){
                    String re = "";//result
                     //  int p=3+(int)(Math.random()*3);
                        char oper[]={'+','-','*','÷'};//operator
                        int Num[]=new int[30];//存储算式中的运算数
                        char Op[]=new char[30];//   运算符
                            for(int he=n-1;he>=0;he--){
                                Op[he]=oper[(int) (Math.random()*4)];
                            }
                            for(int hhe=n;hhe>=0;hhe--){
                             //   Num[hhe]=(int) (Math.random()*100)+1;
                               Num[hhe]=(int) (Math.random()*m1)+m2-m1;
                               while(true)
                               {
                                   if(Num[hhe]>m1) {
                                      break;
                                   }else {
                                      Num[hhe]=(int) (Math.random()*m1)+m2-m1;
                                   }
                               }
                            }
    
                            for(int e=0;e<n;e++){
                                if(Op[e]=='*'||Op[e]=='÷')
                                   Op[1+e]=oper[(int) (Math.random()*2)];
                                    if(Op[e]!='*'&&Op[e]!='÷')
                                        Op[1+e]=oper[(int) (Math.random()*4)];
                            }
                           
                            
                              re=re+Num[0];
                          
                            for(int e=0;e<n;e++){
    
                                  if(q.equals("yes")&&e==4) {
                                      re=re+Op[e]+"("+Num[e+1];
                                  }
                                  else if(q.equals("yes")&&e==5) {
                                         re=re+Op[e]+Num[e+1]+")";
                                      }
                                  else if(q.equals("yes")&&e==0) {
                                         re="("+re+Op[e]+Num[e+1];
                                      }
                                   
                                  else if(q.equals("yes")&&e==1) {
                                     re=re+")"+Op[e]+Num[e+1];
                                  }
                                  else {
                                      re=re+Op[e]+Num[e+1];
                                  }
                                
                                 
                               
                                 
                            }
                         
                           a.add(re);      
                    System.out.println(re);//返回一个合法的算式
                     
                    }
                    
                shuchu wan=new shuchu();
                try {
                    shuchu.test(a);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                }        
        }

     

    十,结对

    十一,结对编程的优缺点

    结对编程的优点:

    1、程序员能够互帮互助,提高效率 

    2、各抒己见,增强代码和产品质量 

    3、共享知识,降低现学的成本 

    4、在编程中,相互讨论,可能更快更有效地解决问题。

    结队编程的缺点:

    1、与合不来的人一起编程容易发生争执,不利于团队和谐。
    2、经验丰富的老手可能会对新手产生不满的情绪。
    3、开发者之间可能就某一问题发生分歧,产生矛盾,造成不必要的内耗。
    4、开发人员可能会在工作时交谈一些与工作无关的事,分散注意力,造成效率低下。

     

     

    十二、实际PSP

     

     

     
  • 相关阅读:
    ServerSocket类的常用方法
    socket互传对象以及IO流的顺序问题
    socket之线程来提高吞吐量
    利用socket传递图片
    socket经典案例-发送数据
    NIO基础方法一
    NIO基础
    java版本的Kafka消息写入与读取
    搭建真正的zookeeper集群
    安装部署Kafka集群
  • 原文地址:https://www.cnblogs.com/sgwq/p/8776362.html
Copyright © 2020-2023  润新知