且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

个人所得税计算器

更新时间:2022-08-21 12:42:17

 今天心血来潮,编写了一个个人所得税计算器,呵呵,虽然功能不是很强,而且也是重复造***(网上也有许多的个人所得税计算器),不过“纸上得来总觉浅,绝知此事要躬行”,自己动动手绝对有好处的。

个人所得税计算器
下面是个人所得税计算的类:
1namespace SalaryComputer
  2{
   public class PersonalIncomeTax
   {
       字段/属性#region 字段/属性
       /**//// <summary>
       /// 税率
       /// </summary>
       private double[] taxRate = { 0, 0.05, 0.10, 0.15, 0.20, 0.25, 0.30, 0.35, 0.40, 0.45 };
 11        /**//// <summary>
       /// 税率(税率***保存在数据库表里或xml文件,当国家出台新的个人所得税政策法规时,不需要修改代码部分)
       /// </summary>
       public double[] TaxRate
       {
           get { return taxRate; }
           set { taxRate = value; }
       }
 20        /**//// <summary>
       /// 速算扣除数
       /// </summary>
       private double[] subtractNumber = { 0, 0, 25, 125, 375, 1375, 3375, 6375, 10375, 15375 };
 25        /**//// <summary>
       ///  速算扣除数
       /// </summary>
       public double[] SubtractNumber
       {
           get { return subtractNumber; }
           set { subtractNumber = value; }
       }
 34        /**//// <summary>
       /// 超过起征税的数额
       /// </summary>
       private double[] surpassAmount = { 0, 500, 2000, 5000, 20000, 40000, 60000, 80000, 100000 };
 39        /**//// <summary>
       /// 超过起征税的数额
       /// </summary>
       public double[] SurpassAmount
       {
           get { return surpassAmount; }
           set { surpassAmount = value; }
       }
 48        /**//// <summary>
       /// 征税起点工资
       /// </summary>
       private double startTaxSalary;
 53        /**//// <summary>
       ///  征税起点工资
       /// </summary>
       public double StartTaxSalary
       {
           get { return startTaxSalary; }
           set { startTaxSalary = value; }
       }
       #endregion
 63        构造函数#region 构造函数
       /**//// <summary>
       /// 无参构造函数
       /// </summary>
       public PersonalIncomeTax()
       {
           StartTaxSalary = 2000;
       }
 72        /**//// <summary>
       /// 征税基本工资有时会随国家政策,法律变更
       /// </summary>
       /// <param name="baseSalary">征税基本工资</param>
       public PersonalIncomeTax(double taxSalary)
       {
           StartTaxSalary = taxSalary;
       }
       #endregion
 82        自定义方法#region 自定义方法
       /**//// <summary>
       /// 计算个人所得税,返回应缴税收,征税后所得薪水
       /// </summary>
       /// <param name="Salary">薪水</param>
       /// <param name="Welfare">五险一金数额</param>
       /// <param name="IsChinaNationality">是否是中国国籍</param>
       /// <param name="taxedSalary">税后所得实际工作</param>
       /// <returns>返回个人所得税</returns>
       public double CalculatePersonTax(double Salary, double Welfare, bool IsChinaNationality, out double taxedSalary)
       {
           double RateSalary = 0;
 95            RateSalary = Salary - StartTaxSalary - Welfare;
 97            if (!IsChinaNationality)
           {
               RateSalary = RateSalary - 3000;
           }
102            int rateIndex = 0;
104            if (RateSalary >= 0)
           {
               for (int index = 0; index < SurpassAmount.Length; index++)
               {
                   if (RateSalary >= SurpassAmount[index] && RateSalary <= SurpassAmount[index + 1])
                   {
                       rateIndex = index + 1;
                       break;
                   }
               }
           }
116            double rate = RateSalary * TaxRate[rateIndex] - SubtractNumber[rateIndex];
           taxedSalary = Salary - Welfare - rate;
119            return rate;
       }
122        #endregion
   }
124}
125