<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://www.tkk7.com/Files/sitinspring/TaxCaculator20071115120519.rar

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


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


    網站導航:
     
    主站蜘蛛池模板: 日日躁狠狠躁狠狠爱免费视频| 亚洲欧洲国产成人精品| 亚洲精品GV天堂无码男同| 无码人妻久久一区二区三区免费丨| 久久夜色精品国产亚洲AV动态图 | 亚洲成综合人影院在院播放| 亚洲精品免费在线观看| 少妇中文字幕乱码亚洲影视| 久久这里只精品国产免费10| 亚洲电影一区二区三区| free哆啪啪免费永久| 亚洲偷偷自拍高清| 在线观看免费污视频| 福利片免费一区二区三区| 亚洲精品第一国产综合境外资源| www一区二区www免费| 亚洲av日韩av不卡在线观看| 亚洲视频免费在线播放| 亚洲欧洲av综合色无码 | 国产亚洲精品久久久久秋霞| 99在线免费观看| 亚洲无限乱码一二三四区| 青青久在线视频免费观看| 亚洲AV无码一区二区一二区| 亚洲人成色77777在线观看大| 久99久精品免费视频热77| 亚洲AV成人影视在线观看| 亚洲人成无码网WWW| 91精品免费不卡在线观看| 亚洲人AV在线无码影院观看| 亚洲日韩在线中文字幕第一页 | 亚洲精品无码中文久久字幕| 亚洲国产精品狼友中文久久久| 野花香在线视频免费观看大全| 亚洲最大的视频网站| 免费国产综合视频在线看| 免费在线中文日本| 亚洲日韩精品无码专区加勒比| 亚洲无线码一区二区三区| 在线观看视频免费完整版| 中文字幕一区二区三区免费视频|