結對作業:四則運算網頁版
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(intscope_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
結對作業:四則運算網頁版