<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 和風細雨 閱讀(158) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 国产成人精品免费视频大全五级| jizzjizz亚洲日本少妇| 亚洲精品偷拍视频免费观看| 国产1000部成人免费视频| 三级黄色在线免费观看| 亚洲精品伦理熟女国产一区二区| 亚洲高清在线播放| 亚洲熟妇无码八AV在线播放| 日本人的色道www免费一区| 在线看片v免费观看视频777| 国产精成人品日日拍夜夜免费| 一级毛片在线完整免费观看| 久久精品国产亚洲av瑜伽| 丁香婷婷亚洲六月综合色| 久久亚洲私人国产精品vA| 亚洲精品美女久久久久99| 亚洲第一页日韩专区| 国产成人在线免费观看| 成人免费午夜在线观看| 99久久综合国产精品免费| 曰批全过程免费视频网址| 久久久久国色av免费看| 日韩视频在线观看免费| 国产啪精品视频网站免费尤物| 国产免费区在线观看十分钟| 又硬又粗又长又爽免费看| 日韩在线视频免费| 免费夜色污私人影院网站电影| 黄页视频在线观看免费| 添bbb免费观看高清视频| 免费人人潮人人爽一区二区| 曰批全过程免费视频观看免费软件| 欧洲亚洲国产精华液| 精品一区二区三区免费毛片| 国产成人高清亚洲一区久久| 阿v免费在线观看| 成人自慰女黄网站免费大全| 国偷自产一区二区免费视频| 久久精品电影免费动漫| 每天更新的免费av片在线观看| 69天堂人成无码麻豆免费视频|