• 结对作业:四则运算网页版


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


    一、预期PSP:

    二、结对编程对接口的设计

    information hiding:

          信息隐藏是指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。

          我们在结对项目中将各种经常用到的类和方法放在外联,而不是内嵌在一个类中,这样每个类分工明确,便于修改。信息隐藏同时体现在各种类、算法对用户不可见,能隐藏复杂度,隐藏变化源。

    Interface Design:

          面向对象设计最大的原则就是针对接口设计。接口能够定义好,不仅便于自身维护,而且也能使上层应用不需要太多变动。所以我们在项目开工前就明确设计好了接口,避免无用功。

    Loose Coupling:

          软件工程中对象之间的耦合度就是对象之间的依赖性。对象之间的耦合度越高,维护成本越高。所以我们在项目中设计的底层函数功能尽量单一,尽量避免修改底层函数。功能相近的函数,设计2个以上,不要为了减少代码量,把一个函数的功能设计的太多,不然不便于修改。

     

    三、模块接口的设计与实现

    三个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:

    首页我们使用了bootstrap和css:

    <script src="js/jquery-3.3.1.min.js"></script>
    <link rel="stylesheet" href="css/bootstrap-3.3.7-dist/css/bootstrap.css" />
    <link rel="stylesheet" href="css/first.css" />

    出题页面download.jsp:

    <div class="center" style="background-color:gray;">
      <h1>题目要求</h1>
      <form  class="wrap" action="servlet/ChuanServlet" method="post">
        <div class="form-inline"  >
          <div class="form-group" >
            <label for="exampleInputName2"  >题目数量</label>
            <input  class="form-control" name="problem-number" placeholder="请输入数字">
          </div>
        </div>
        <div class="form-inline">
          <div class="form-group">
            <label for="exampleInputName2" >下限数值</label>
            <input type="text" class="form-control" name="down-number" placeholder="请输入">
          </div>
          <div class="form-group" >
            <label for="exampleInputEmail2">上限数值</label>
            <input  class="form-control" name="up-number" placeholder="请输入">
          </div>
        </div>
        <div class="form-inline" >
          <div class="form-group">
            <label for="exampleInputName2" >运算符数</label>
            <input  class="form-control" name="operator-number" placeholder="请输入">
          </div>
        </div>
        <div class="form-inline">
          <label for="exampleInputName2">是否需要乘除法</label>
          <select class="form-control" name="select-chengchu">
            <option>是</option>
            <option>否</option>
          </select>
          <label for="exampleInputName2" style="margin-left:8%;">是否需要括号</label>
          <select class="form-control" name="select-kuohao">
            <option>是</option>
            <option>否</option>
          </select>
        </div>
        
        <button type="submit" class="btn btn-default" style="margin-left:30%;">打印题目到本地</button>
      </form> 
      <div>  <a href="first.jsp">
      <button type="button" class="btn btn-default" style="margin-left:70%" >返回首页</button>
      </a> <a href="zuoti.jsp">
      <button type="button" class="btn btn-default" >直接做题</button>
      </a>  </div>
    </div>

    七、界面模块与计算模块的对接

          因为我们组做的是网页版的四则运算,所以我们前后端的连接与数据传输主要是通过前台js和后台servlet。用mvc模式,servlet做控制器。通过form调用表单传参至servlet,servlet调用后台的最终接口,接口再调用各种相关的类,实现题目的定制和下载。

    八、结对编程的优缺点

    结对编程的优点:

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

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

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

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

    结队编程的缺点:

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

     

    九、结对过程

     上官文钦的优点:

           逻辑思维能力强,编程严谨

           认真负责

           动手能力强,效率高

    上官文钦的缺点:

          完美主义,对于页面设计太纠结

    我的优点:

          认真仔细

          有耐心

          学习能力强

    我的缺点:

          编程经验不足

     

    十、实际PSP

     

  • 相关阅读:
    Nginx服务器环境搭建
    PostgreSQL常见问题处理方法
    Linux之awk使用
    PostgreSQL常用SQL
    用apache commons-pool2建立thrift连接池
    redis开发小结
    如何解决netty发送消息截断问题
    后端服务开发总结
    利用git reflog找回错误的重置
    TCP长链接调试利器nc
  • 原文地址:https://www.cnblogs.com/huyifeng/p/8776184.html
Copyright © 2020-2023  润新知