<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    和風(fēng)細(xì)雨

    世上本無(wú)難事,心以為難,斯乃真難。茍不存一難之見(jiàn)于心,則運(yùn)用之術(shù)自出。

    關(guān)于分類匯總的一個(gè)常見(jiàn)技巧

    如果有以下需求,你是一個(gè)貨棧的倉(cāng)庫(kù)保管員,貨棧進(jìn)口以下多種水果,目前主要是蘋(píng)果,香蕉和桔子,貨棧不但需要記錄每批次的品種,單價(jià),還要得出每種水果的總個(gè)數(shù),總錢(qián)數(shù). 請(qǐng)問(wèn)該如何編制程序.

    記錄每批次不難,一個(gè)批次鏈表就可以解決問(wèn)題,有點(diǎn)意思的部分在于得出每種水果的總個(gè)數(shù),總錢(qián)數(shù),如果說(shuō)在加入批次信息時(shí)進(jìn)行處理,根據(jù)類型分別判斷,用六個(gè)量(分別針對(duì)每種水果的總個(gè)數(shù),總錢(qián)數(shù))分別進(jìn)行統(tǒng)計(jì).這種方法容易使程序固化,如果增加一個(gè)水果品種的話會(huì)導(dǎo)致增加兩個(gè)變量,所以說(shuō)這里統(tǒng)計(jì)信息需要?jiǎng)討B(tài)起來(lái),用List或Hashtable是個(gè)不錯(cuò)的選擇,相對(duì)而言Hashtable在種類較多時(shí)更好.


    具體來(lái)說(shuō)做法是用一個(gè)Hashtable存儲(chǔ)統(tǒng)計(jì)信息,Hashtable的鍵為水果類型,Hashtable的值為統(tǒng)計(jì)信息;每當(dāng)有新批次水果到達(dá)時(shí),查看Hashtable中是否有這種類型的統(tǒng)計(jì)信息,有則取出信息,在原基礎(chǔ)上加上新值,否則加入一個(gè)新統(tǒng)計(jì)信息.

    代碼如下:

    package com.sitinspring;

    /**
     * 水果基類
     * 
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class Fruit {
        
    // 水果批次類型
        protected String type;

        
    // 水果批次數(shù)量
        protected int count;

        
    // 單價(jià)
        protected double unitPrice;

        
    public Fruit(int count, double unitPrice) {
            
    this.count = count;
            
    this.unitPrice = unitPrice;
        }

        
    public int getCount() {
            
    return count;
        }

        
    public String getType() {
            
    return type;
        }

        
    public double getUnitPrice() {
            
    return unitPrice;
        }

        
    public String toString() {
            
    return "類型=" + type + " 數(shù)量=" + count + " 單價(jià)=" + unitPrice + " 合計(jì)="
                    
    + count * unitPrice + "\r\n";
        }
    }

     

    package com.sitinspring;

    /**
     * 蘋(píng)果類
     * 
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class Apple extends Fruit {
        
    public Apple(int count, double unitPrice) {
            
    super(count, unitPrice);

            
    this.type = "Apple";
        }
    }

     

    package com.sitinspring;

    /**
     * 香蕉類
     * 
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class Banana extends Fruit {
        
    public Banana(int count, double unitPrice) {
            
    super(count, unitPrice);

            
    this.type = "Banana";
        }
    }
    package com.sitinspring;

    /**
     * 桔子類
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class Orange extends Fruit{
        
    public Orange(int count,double unitPrice){
            
    super(count,unitPrice);
            
            
    this.type="Orange";
        }
    }


    package com.sitinspring;

    /**
     * 水果統(tǒng)計(jì)信息類
     * 
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class FruitSumary {
        
    // 類型
        protected String type;

        
    // 總數(shù)
        protected int count;

        
    // 總價(jià)
        protected double price;

        
    public FruitSumary(String type, int count, double unitPrice) {
            
    this.type = type;
            
    this.count = count;
            
    this.price = unitPrice;
        }

        
    public String toString() {
            
    return "類型=" + type + " 總數(shù)量=" + count + " 總合計(jì)=" + price + "\r\n";
        }

        
    public int getCount() {
            
    return count;
        }

        
    public void setCount(int count) {
            
    this.count = count;
        }

        
    public double getPrice() {
            
    return price;
        }

        
    public void setPrice(double price) {
            
    this.price = price;
        }

        
    public String getType() {
            
    return type;
        }

        
    public void setType(String type) {
            
    this.type = type;
        }
    }


    package com.sitinspring;

    import java.io.BufferedWriter;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Hashtable;
    import java.util.List;

    /**
     * 貨棧進(jìn)貨記錄
     * 
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class StockHouseMemo {
        
    // 水果批次記錄
        private List<Fruit> fruits;

        
    // 統(tǒng)計(jì)信息
        private Hashtable<String,FruitSumary> fruitSumaries;

        
    /**
         * 添加水果批次記錄
         * 
         * 
    @param fruit
         
    */
        
    public void addFruit(Fruit fruit) {
            
    // 添加批次記錄
            if (fruits == null) {
                fruits 
    = new ArrayList<Fruit>();
            }
            fruits.add(fruit);

            
    // 添加統(tǒng)計(jì)記錄
            if (fruitSumaries == null) {
                fruitSumaries 
    = new Hashtable<String,FruitSumary>();
            }

            String fruitType
    =fruit.getType();
            
            
    // 取出同類型的統(tǒng)計(jì)信息
            FruitSumary sumaryFound = findSummaryByType(fruitType);
            
    if (sumaryFound != null) {
                
    // 有記錄
                sumaryFound.setCount(sumaryFound.getCount()
                        
    + fruit.getCount());
                sumaryFound.setPrice(sumaryFound.getPrice()
                        
    + fruit.getUnitPrice() * fruit.getCount());
            } 
    else {
                
    // 無(wú)記錄
                fruitSumaries.put(fruitType,new FruitSumary(fruit.getType(),
                        fruit.getCount(), fruit.getUnitPrice() 
    * fruit.getCount()));
            }
        }

        
    /**
         * 取得和fruitInput類型對(duì)應(yīng)的統(tǒng)計(jì)信息記錄
         * 
         * 
    @param fruitInput
         * 
    @return
         
    */
        
    private FruitSumary findSummaryByType(String fruitType) {
            
    if(fruitSumaries.containsKey(fruitType)){
                
    return fruitSumaries.get(fruitType);
            }
            
            
    return null;
        }

        
    /**
         * 取得水果進(jìn)貨詳細(xì)信息
         * 
         * 
    @return
         
    */
        
    public String getDetailFruitInfo() {
            String retval 
    = "----------水果進(jìn)貨詳細(xì)信息-----------\r\n";
            
            
    for (Fruit fruit : fruits) {
                retval 
    += fruit; // 等于fruit.toString()
            }

            retval 
    += "----------------------------------------";
            
    return retval;
        }

        
    /**
         * 取得水果進(jìn)貨統(tǒng)計(jì)信息
         * 
         * 
    @return
         
    */
        
    public String getSummaryFruitInfo() {
            String retval 
    = "----------水果進(jìn)貨統(tǒng)計(jì)信息-----------\r\n";

            
    for (FruitSumary fruitSumary : fruitSumaries.values()) {
                retval 
    += fruitSumary; // 等于fruitSumary.toString()
            }

            retval 
    += "----------------------------------------";
            
    return retval;
        }

        
    public void writeToFile(String fileName) {
            
    try {
                BufferedWriter out 
    = new BufferedWriter(new FileWriter(fileName));

                String outputText 
    = getDetailFruitInfo()+"\r\n";
                outputText 
    += getSummaryFruitInfo();

                out.write(outputText);
                out.close();
            } 
    catch (IOException e) {
                e.printStackTrace();
            }
        }
    }


    package com.sitinspring;

    /**
     * 程序入口
     * 
    @author: sitinspring(junglesong@gmail.com)
     * @date: 2007-11-25
     
    */
    public class Main{
        
    public static void main(String[] args){
            StockHouseMemo stackHouseMemo
    =new StockHouseMemo();
            
            stackHouseMemo.addFruit(
    new Apple(10,0.5));
            stackHouseMemo.addFruit(
    new Apple(12,1.5));
            stackHouseMemo.addFruit(
    new Banana(13,2.5));
            stackHouseMemo.addFruit(
    new Banana(14,3.5));
            stackHouseMemo.addFruit(
    new Banana(15,4.5));
            stackHouseMemo.addFruit(
    new Orange(16,5.5));
            stackHouseMemo.addFruit(
    new Orange(17,6.5));
            
            System.out.println(stackHouseMemo.getDetailFruitInfo());    
            System.out.println(stackHouseMemo.getSummaryFruitInfo());
            
            stackHouseMemo.writeToFile(
    "輸出信息.txt");
        }
    }


    輸出為:

    ----------水果進(jìn)貨詳細(xì)信息-----------
    類型
    =Apple 數(shù)量=10 單價(jià)=0.5 合計(jì)=5.0
    類型
    =Apple 數(shù)量=12 單價(jià)=1.5 合計(jì)=18.0
    類型
    =Banana 數(shù)量=13 單價(jià)=2.5 合計(jì)=32.5
    類型
    =Banana 數(shù)量=14 單價(jià)=3.5 合計(jì)=49.0
    類型
    =Banana 數(shù)量=15 單價(jià)=4.5 合計(jì)=67.5
    類型
    =Orange 數(shù)量=16 單價(jià)=5.5 合計(jì)=88.0
    類型
    =Orange 數(shù)量=17 單價(jià)=6.5 合計(jì)=110.5
    ----------------------------------------
    ----------水果進(jìn)貨統(tǒng)計(jì)信息-----------
    類型
    =Orange 總數(shù)量=33 總合計(jì)=198.5
    類型
    =Apple 總數(shù)量=22 總合計(jì)=23.0
    類型
    =Banana 總數(shù)量=42 總合計(jì)=149.0
    ----------------------------------------

     

    代碼下載:

    http://www.tkk7.com/Files/sitinspring/StockHouseManager20071125101919.rar

    posted on 2008-02-22 10:31 和風(fēng)細(xì)雨 閱讀(339) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99re6在线视频精品免费下载 | 国产免费网站看v片在线| 免费永久国产在线视频| 亚洲欧美综合精品成人导航| 在线观看人成网站深夜免费| 亚洲人AV在线无码影院观看| 国产又大又粗又硬又长免费 | 亚洲欧美成人综合久久久| 在线观看免费为成年视频| 蜜芽亚洲av无码一区二区三区| 全部免费毛片免费播放| 久久免费观看视频| 亚洲国产一区二区a毛片| 免费观看的毛片大全| 亚洲精品无码日韩国产不卡av| 免费人成在线观看播放国产| 本道天堂成在人线av无码免费 | 亚洲人成免费电影| 成全高清视频免费观看| 美女羞羞喷液视频免费| 精品亚洲视频在线观看| 99精品视频在线观看免费专区| 久久亚洲日韩看片无码| 男女交性永久免费视频播放| a一级爱做片免费| 亚洲美女免费视频| 免费国产在线观看| 少妇无码一区二区三区免费| 亚洲一卡2卡三卡4卡无卡下载| 伊人久久亚洲综合影院| 99久久99久久精品免费观看| 亚洲精品日韩一区二区小说| 亚洲熟妇av一区二区三区| 99久久免费国产精品特黄| 无码精品人妻一区二区三区免费| 无码久久精品国产亚洲Av影片| 欧美三级在线电影免费| 大妹子影视剧在线观看全集免费| 亚洲一区二区三区精品视频 | 亚洲精品在线视频| 真人做人试看60分钟免费视频|