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

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

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

    和風細雨

    世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

    薪水計算續

    本文是 "從薪水計算的例子看一段程序在不同環境中的變化 " 的續文.

    如果需求發生如下變化:
     

    如果說國家改變了公民福利制度,具體就是500元以下的每人補充300,超過20000元的在原有基礎上再扣除20%,請問該如何編程?

    具體等級稅率:

    等級                             稅率                            額定扣除數

    不超過500               5%                              0 (低保每人補助300)

    大于500小于2000       10%                             25

    大于2000小于5000     15%                             125

    大于5000小于20000    20%                             375

    超過20000               25%                             1375(在計算完的基礎上再乘以80%)

     

    這時原有公式就不適用了,我們沒有必要回到分支語句的老路上去,將計算公式歸并成SalaryGrade的一個函數getSalaryAfterTax,然后從SalaryGrade分別擴展兩個類HigherSalaryGrade和LowerSalaryGrade,然后分別實現各自的getSalaryAfterTax函數即可.

    代碼如下:
    SalaryGrade類:
    package com.sitinspring.oostyleadv;

    /**
     * 工資等級類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     
    */

    public class SalaryGrade {
        
    // 月薪界限
        protected double grade;

        
    // 稅率
        protected double ratio;

        
    // 折扣
        protected double discount;

        
    public SalaryGrade(double grade, double ratio, double discount) {
            
    this.grade = grade;
            
    this.ratio = ratio;
            
    this.discount = discount;
        }

        
        
    public double getSalaryAfterTax(double salary){
            
    return salary*(1-ratio)-discount;
        }


        
    public SalaryGrade() {
            
    this(0.0f0.0f0.0f);
        }


        
    public double getDiscount() {
            
    return discount;
        }


        
    public double getGrade() {
            
    return grade;
        }


        
    public double getRatio() {
            
    return ratio;
        }

    }

    HigherSalaryGrade類:
    package com.sitinspring.oostyleadv;

    /**
     * 超高收入工資等級類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     
    */

    public class HigherSalaryGrade extends SalaryGrade{
        
    public HigherSalaryGrade(double grade, double ratio, double discount) {
            
    super(grade,ratio,discount);
        }

        
        
    public double getSalaryAfterTax(double salary){
            
    return (salary*(1-ratio)-discount)*0.8;
        }


        
    public HigherSalaryGrade() {
            
    this(0.0f0.0f0.0f);
        }

    }

    LowerSalaryGrade類:
    package com.sitinspring.oostyleadv;

    /**
     * 低保工資等級類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     
    */

    public class LowerSalaryGrade extends SalaryGrade{
        
    public LowerSalaryGrade(double grade, double ratio, double discount) {
            
    super(grade,ratio,discount);
        }

        
        
    public double getSalaryAfterTax(double salary){
            
    return salary*(1-ratio)-discount+300;
        }


        
    public LowerSalaryGrade() {
            
    this(0.0f0.0f0.0f);
        }

    }

    SalaryCaculator類:
    package com.sitinspring.oostyleadv;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    /**
     * 工資計算類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     
    */

    public class SalaryCaculator{
        
    private List<SalaryGrade> grades;
        
        
        
    public SalaryCaculator(){
            grades
    =new ArrayList<SalaryGrade>();
            
            grades.add(
    new LowerSalaryGrade(500,0.05,0));
            grades.add(
    new SalaryGrade(2000,0.1,25));
            grades.add(
    new SalaryGrade(5000,0.15,125));
            grades.add(
    new SalaryGrade(20000,0.20,375));
            grades.add(
    new HigherSalaryGrade(99999999,0.25,1375));
        }

        
        
    // OO化的查詢方法
        public double getSalaryAfterTax(double total){
            SalaryGrade taxGrade
    =null;
            
            
    for(Iterator it=grades.iterator();it.hasNext();){
                taxGrade
    =(SalaryGrade)it.next();
                
                
    if(total>taxGrade.getGrade()){
                    
    continue;
                }

                
    else{
                    
    break;
                }

            }

            
            
    return taxGrade.getSalaryAfterTax(total);
        }

    }

    Main:
    package com.sitinspring.oostyleadv;

    /**
     * Main函數所在的類
     * 
    @author sitinspring(junglesong@gmail.com)
     *
     
    */

    public class Main{
        
    public static void main(String[] args){    
            SalaryCaculator caculator
    =new SalaryCaculator();
            
            
    for(double total=100;total<30000;total+=1000){
                System.out.println(
    "稅前薪水="+total+" 稅后薪水="+caculator.getSalaryAfterTax(total));
            }
            
        }

    }

    代碼下載:
    http://m.tkk7.com/Files/sitinspring/TaxCaculator20071115120519.rar

    posted on 2008-02-22 10:32 和風細雨 閱讀(159) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲成色WWW久久网站| 亚洲第一成年男人的天堂| 国产yw855.c免费视频| 国产精品成人无码免费| 亚洲精品成人片在线观看精品字幕| 亚洲精品天天影视综合网| 亚洲国产欧美一区二区三区| 好吊色永久免费视频大全| 精品熟女少妇av免费久久| 午夜一区二区免费视频| 久久99国产亚洲高清观看首页| 三上悠亚在线观看免费| 免费视频中文字幕| 亚洲av无码片vr一区二区三区| 免费无码毛片一区二区APP| 国产三级免费电影| 亚欧洲精品在线视频免费观看| 啦啦啦中文在线观看电视剧免费版 | 猫咪免费人成网站在线观看入口| 大地资源在线资源免费观看 | 久久久久亚洲?V成人无码| 亚洲色图.com| 精精国产www视频在线观看免费| 亚洲精品无码mv在线观看网站| 久久中文字幕免费视频| 亚洲美女在线国产| 中文字幕乱码亚洲无线三区| 成人电影在线免费观看| 亚洲欧洲精品国产区| 免费看黄的成人APP| 亚洲伊人久久大香线蕉在观| 久久免费视频网站| 久久精品九九亚洲精品天堂| 99re在线精品视频免费| 亚洲av永久无码精品秋霞电影秋| 久久亚洲国产成人精品无码区| 37pao成人国产永久免费视频| 亚洲精品午夜国产VA久久成人| 亚洲精品在线免费观看| 色费女人18女人毛片免费视频 | 亚洲国产精品无码久久SM |