一,代码地址仓库地址

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

 

 

 

 
posted on 2018-04-10 09:11  4个字符  阅读(174)  评论(1编辑  收藏  举报