<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      UnKn0wN-XD

       

      Java兩次航空貨運管理系統blog

      一、前言
      在兩次題目集的設計與實現中,我們完成了“航空貨運管理系統”的基礎版與擴展版開發。題目集從簡單訂單管理逐步升級為支持多類型貨物、客戶分類及支付方式的復雜系統,涉及知識點包括面向對象設計、集合框架應用、策略模式實現、輸入輸出處理等。以下從設計與分析、采坑心得、改進建議等方面展開詳細探討。

      二、設計與分析

      1. 系統架構演進
        題目集1(基礎版):

      核心類:Client(客戶)、Air(航班)、Deal(訂單)、Goods(貨物)、Display(展示類)。

      功能邏輯:

      輸入客戶信息、貨物列表、航班信息,校驗航班載重能力。

      貨物計費邏輯:基于體積與重量的最大值計算計費重量,固定費率規則。

      題目集2(擴展版):

      新增特性:

      貨物分類:普通(Normal)、危險品(Dangerous)、加急(Expedite)。

      客戶類型:個人(Individual)與企業(Corporate),享受不同折扣。

      支付方式:微信、支付寶、現金。

      架構調整:

      Goods類新增kindP(客戶類型)和kindG(貨物類型)屬性。

      Rate和Price類引入策略模式,動態計算費率與價格。

      Display類增加支付方式字段,輸出邏輯更復雜。

      1. 類圖與模塊交互
        通過類圖可見:

      核心模塊:

      數據實體:Air管理航班信息,Goods存儲貨物屬性,Deal關聯訂單與客戶。

      策略接口:Rateget(費率計算)、Priceget(價格計算)實現業務規則解耦。

      展示層:Display聚合所有數據,負責格式化輸出。

      1. 復雜度分析(基于截圖數據)
        題目集1復雜度(圖2):

      方法平均復雜度:2.1

      最大深度:4

      方法數/類:3.5
      問題點:Goods.rateWeight()和Air.canHold()方法邏輯簡單,但Display.display()因多數據聚合輸出導致圈復雜度較高(值為5)。

      題目集2復雜度(圖3):

      方法平均復雜度:3.8(↑80%)

      最大深度:6(↑50%)

      方法數/類:4.2(↑20%)
      問題點:

      Rate.rateGet()方法因多層switch-case分支,圈復雜度達8(圖3中Max Complexity=8)。

      Price.priceGet()需處理客戶類型與貨物類型組合,邏輯耦合度高。

      1. 關鍵代碼解析
        題目集2的動態費率計算:

      java
      class Rate implements Rateget {
      @Override
      public double rateGet(Goods good) {
      double weight = good.rateWeight();
      switch (good.getKindG()) {
      case "Normal":
      if (weight < 20) return 35;
      else if (weight < 50) return 30;
      else if (weight < 100) return 25;
      else return 15;
      case "Dangerous":
      // 危險品費率規則
      case "Expedite":
      // 加急貨物費率規則
      default:
      throw new IllegalArgumentException("Invalid goods type");
      }
      }
      }
      通過策略模式將費率規則與貨物類型解耦,符合開閉原則。

      題目集2的價格折扣邏輯:

      java
      class Price implements Priceget {
      @Override
      public double priceGet(Goods good, double rate) {
      double discount = 1;
      switch (good.getKindP()) {
      case "Individual": discount = 0.9; break;
      case "Corporate": discount = 0.8; break;
      }
      return rate * discount * good.rateWeight();
      }
      }
      優化方向:

      折扣策略可進一步抽象為DiscountStrategy接口,支持動態擴展。

      三、采坑心得

      1. 輸入順序與參數傳遞錯誤
        問題:在擴展版中,Main類輸入kindP(客戶類型)和kindG(貨物類型)時,順序與Goods構造函數參數不匹配,導致類型賦值錯誤。

      解決:通過單元測試發現構造參數順序應為kindP在前,調整輸入代碼:

      java
      Goods goods = new Goods(..., kindP, kindG); // 修正參數順序
      2. 接口設計冗余
      問題:題目集1的Priceget接口僅支持priceGet(double, double),擴展版需傳遞Goods對象,導致接口方法爆炸(新增priceIGet())。

      解決:重構接口為單一方法:

      java
      interface Priceget {
      double calculatePrice(Goods good, double rate);
      }
      3. 數值精度丟失
      問題:使用double存儲電話號碼(如13812345678)時,因浮點數精度丟失導致輸出異常。

      解決:將Client.phone和Deal.number改為String類型。

      四、改進建議

      使用策略模式解耦費率計算
      問題:Rate.rateGet()方法包含多層分支,維護困難。

      方案:為每類貨物定義獨立策略類:

      java
      interface RateStrategy {
      double calculateRate(double weight);
      }
      class NormalRate implements RateStrategy {
      public double calculateRate(double weight) { /* 普通費率邏輯 */ }
      }
      增強輸入校驗
      問題:未校驗支付方式輸入合法性。

      方案:在Main類中增加正則匹配:

      java
      if (!p.matches("Wechat|ALiPay|Cash")) {
      throw new InputMismatchException("Invalid payment type: " + p);
      }
      模塊化展示邏輯
      問題:Display.display()方法過長(40+行),圈復雜度高。

      方案:拆分為OrderHeaderPrinter、GoodsDetailPrinter等子模塊。

      五、總結

      1. 學習收獲
        設計模式應用:通過策略模式、接口隔離原則,提升了代碼擴展性。
        調試能力:通過單元測試與邊界條件覆蓋,顯著減少運行時錯誤。
        代碼質量意識:復雜度分析工具的使用幫助識別高風險代碼。

      結語
      兩次題目集的開發實踐,我不僅鞏固了Java編程基礎,更深刻體會到系統設計的重要性。從基礎版到擴展版的開發,像是搭積木變造房子。一開始簡單明了,后來加入貨物分類、折扣和支付方式,挑戰倍增。踩過輸入順序顛倒、數值精度丟失的坑,也學會了用模塊化設計讓代碼更靈活。

      posted on 2025-05-23 12:51  UnKn0wN__XD  閱讀(33)  評論(0)    收藏  舉報

      導航

      主站蜘蛛池模板: 特级做a爰片毛片免费看无码| 偷拍精品一区二区三区| 国产偷国产偷亚洲清高| 国产一区二区三区在线观看免费| 精品人妻蜜臀一区二区三区| 国产麻豆放荡av激情演绎| 色欲综合久久中文字幕网| 国产成人精品无码一区二区老年人| 一级国产在线观看高清| 人妻久久久一区二区三区| 日本一区二区三区在线播放| 成人区精品一区二区不卡| 朝阳县| 国产成人高清亚洲一区二区| 久久婷婷综合色丁香五月| 客服| 国产精品成人午夜久久| 9丨精品国产高清自在线看| 久久精品国产99精品亚洲| 国产成人啪精品午夜网站| 欧美另类videossexo高潮| 国产日韩乱码精品一区二区| 蜜臀久久精品亚洲一区| 国产久久热这里只有精品| 久久天堂无码av网站| 日本亚洲中文字幕不卡| 国产精品黑色丝袜在线观看 | 四虎影视www在线播放| 国产亚洲精品成人无码精品网站| 欧美裸体xxxx极品| 国产精品十八禁在线观看| 中文字幕亚洲一区二区va在线| 亚洲欧美日韩综合久久| 久久婷婷国产精品香蕉| 乱码午夜-极品国产内射| 日韩中文字幕人妻精品| 全国最大成人网| 中文字幕成熟丰满人妻| 特黄少妇60分钟在线观看播放| 国产系列高清精品第一页 | 上司人妻互换中文字幕|