⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grsds.pas

📁 delphi实现的新税法的个人所得税计算程序
💻 PAS
字号:
unit Grsds;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Buttons, Menus, ComCtrls;

type
  TFrmGrsds = class(TForm)
    GroupBox1: TGroupBox;
    RaBt1: TRadioButton;
    RaBt2: TRadioButton;
    RaBt3: TRadioButton;
    RaBt4: TRadioButton;
    RaBt5: TRadioButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    ChSuanBtn: TBitBtn;
    JiSuanBtn: TBitBtn;
    Edit2: TEdit;
    HelpBtn: TBitBtn;
    ExitBtn: TBitBtn;
    Label3: TLabel;
    Label4: TLabel;
    MainMenu1: TMainMenu;
    S1: TMenuItem;
    NGzXj: TMenuItem;
    H1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    GroupBox2: TGroupBox;
    RaBtChina: TRadioButton;
    RaBtNoChina: TRadioButton;
    NGt: TMenuItem;
    NChBao: TMenuItem;
    NGChou: TMenuItem;
    NLWu: TMenuItem;
    NTXQuan: TMenuItem;
    NLXi: TMenuItem;
    NCChan: TMenuItem;
    NORan: TMenuItem;
    NQTa: TMenuItem;
    N17: TMenuItem;
    NQuit: TMenuItem;
    Bevel1: TBevel;
    StBar: TStatusBar;
    Edit3: TEdit;
    procedure FrmGrsdsCreate(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure ExitBtnClick(Sender: TObject);
    procedure JiSuanBtnClick(Sender: TObject);
    procedure ChSuanBtnClick(Sender: TObject);
    procedure NQuitClick(Sender: TObject);
    procedure RaBtChinaClick(Sender: TObject);
    procedure RaBtNoChinaClick(Sender: TObject);
    procedure NGzXjClick(Sender: TObject);
    procedure NGtClick(Sender: TObject);
    procedure NChBaoClick(Sender: TObject);
    procedure NGChouClick(Sender: TObject);
    procedure NLWuClick(Sender: TObject);
    procedure NLXiClick(Sender: TObject);
    procedure NCChanClick(Sender: TObject);
    procedure NTXQuanClick(Sender: TObject);
    procedure NORanClick(Sender: TObject);
    procedure NQTaClick(Sender: TObject);
    procedure RaBt1Click(Sender: TObject);
    procedure RaBt2Click(Sender: TObject);
    procedure RaBt3Click(Sender: TObject);
    procedure RaBt4Click(Sender: TObject);
    procedure RaBt5Click(Sender: TObject);
    procedure HelpBtnClick(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure N3Click(Sender: TObject);
  private
    { Private declarations }
    Procedure GzXj; //声明工资薪金过程
    procedure Xianshi; //显示EDIT2即计算结果的过程
    procedure GeTi;  //个体工商户过程
    procedure GaoChou; //稿酬
    Procedure LaoWu;  //劳务
    procedure LiXi;   //利息

   //Function IsCurrency(TestThis:String):boolean; //是否数字函数  

  public
    { Public declarations }
  end;

var
  FrmGrsds: TFrmGrsds;
   
implementation
  {$R *.DFM}
uses about,ShellApi;

//*************以下本模块变量********************//0..
var
  Kce,Sde,YsSde,Tax:Single;//所得额,应税所得额,税额
  

//***********************以下函数部分*****************************//
function IsCurrency(TestThis: String): Boolean;//forward;
begin 
try
    StrToCurr(TestThis);
except 
    on EConvertError do
    result := False;
else
    result := True;
end;
end; 

//**********************以上是函数部分**************************//


 //**********************以下是过程部分************************//
 procedure TFrmGrsds.Xianshi ;  //显示计算结果
 begin
     label4.Visible :=True;
     Edit2.Text:= '¥' + CurrToStr(TAX) + '元';
  end;


 Procedure TFrmGrsds.GzXj ;

 begin
    If YsSDE < 500 Then
        TAX := YsSDE * 0.05

    Else If (500 <= YsSDE) And (YsSDE < 2000) then
        TAX := (YsSDE * 0.1) - 25

    Else If (2000 <= YsSDE) And (YsSDE < 5000)then
        TAX := YsSDE * 0.15 - 125

    Else If (5000 <= YsSDE) And (YsSDE < 20000) then
        TAX := YsSDE * 0.2 - 375

    Else If (20000 <= YsSDE) And (YsSDE < 40000) then
        TAX := YsSDE * 0.25 - 1375

    Else If (40000 <= YsSDE) And (YsSDE < 60000) then
        TAX := YsSDE * 0.3 - 3375

    Else If (60000 <= YsSDE) And (YsSDE < 80000)  then
        TAX := YsSDE * 0.25 - 6375

    Else If (80000 <= YsSDE) And (YsSDE < 100000)  then
        TAX := YsSDE * 0.4 - 10375

    Else If (YsSDE >= 100000) then
        TAX := YsSDE * 0.45 - 15375

    
    
    Else
        Application.messagebox('输入错误!','输入提示',48);
    
  end;

 procedure TFrmGrsds.GeTi ;  //个体工商业户过程

 begin

  If YsSDE < 5000 Then
        TAX := YsSDE * 0.05

     Else If (5000 <= YsSDE) And (YsSDE < 10000) Then
        TAX := YsSDE * 0.1 - 250

        
     Else If (10000 <= YsSDE) And (YsSDE < 30000) Then
         TAX := YsSDE * 0.2 - 1250

     Else If (30000 <= YsSDE) And (YsSDE < 50000) Then
         TAX := YsSDE * 0.3 - 4250

     Else If (YsSDE >= 50000) Then
         TAX := YsSDE * 0.35 - 6750
     Else
       AppLication.MessageBox('输入错误!','输入提示',48);
    end;
 Procedure TFrmGrsds.GaoChou ; //稿酬所得
 begin
    If YsSDE < 4000 Then
    begin
        YsSDE := YsSDE-800;
    end
    else
    begin
       YsSDE := YsSDE-YsSDE*0.2;
    end;
    TAX := YsSDE * 0.14 //按20%计征,并按应纳税额减征30%
                        //Tax=(YsSDE*20%)-((YsSDE*20%)*30%)

 end;
 procedure TFrmGrsds.LaoWu ;//劳务过程
 begin
    If YsSDE < 4000 Then
    begin
        YsSDE := YsSDE-800;
    end
    else
    begin
       YsSDE := YsSDE-YsSDE*0.2;
    end;
    If YsSDE < 20000 Then
        TAX := YsSDE * 0.2

    Else If (20000 <= YsSDE) And (YsSDE < 50000) Then
        TAX := YsSDE * 0.3 - 2000

    Else If (YsSDE >= 50000) Then
        TAX := YsSDE * 0.4 - 7000

    Else
     Application.Messagebox('输入错误!','输入提示',48);
 end;

 procedure TFrmGrsds.LiXi ; //利息股息红利所得过程
begin
    Tax:=YsSde*0.2
end;


 //*******************************以上是过程部分********************//

procedure TFrmGrsds.FrmGrsdsCreate(Sender: TObject);
begin
    RaBt1.Caption :='工资、薪金所得';
    RaBt2.Caption :='个体工商户生产经营所得';
    label1.Caption :='对企事业单位的承包经营、'
               +#10#13+'承租经营所得。';
    RaBt3.Caption :='稿酬所得';
    RaBt4.Caption :='劳务报酬所得';
    RaBt5.Caption :='特许权使用费所得,' ;
    label2.Caption :='利息、股息、红利所得,'  
               +#10#13+'财产租赁所得,财产转让所得,'
               +#10#13+'偶然所得和其他所得。';
    label4.Visible :=False;
     StBar.Panels[1].text:='中国公民';
     StBar.Panels[3].Text :='工资薪金所得';
     RaBt1.Checked :=True; //默认选择“工资薪金”
     RaBtChinaClick(self); //默认选择‘中国公民’
     RaBtChina.Checked :=True;
     Edit3.text:=DateTimeToStr(Now);
     JiSuanBtn.Enabled :=False; //计算按钮不可用。
     
end;

procedure TFrmGrsds.N2Click(Sender: TObject);
begin
    FrmAbout.showmodal; //以独占方式打开窗口,
          //窗体显示在其他窗体上,关闭后其他窗口才可用。

   
end;

procedure TFrmGrsds.ExitBtnClick(Sender: TObject);
begin
    close;   //关闭窗口

end;

procedure TFrmGrsds.JiSuanBtnClick(Sender: TObject);

begin

   if IsCurrency(Edit1.text) then
    //以下计算;
    begin
    Sde:=StrToCurr(edit1.text);
     if Sde< 0 then application.MessageBox('你的所得为负数吗?',
                '输入提示!',48)
            // exit //退出这一层
      else
        if RaBt1.Checked  then    //选中工资薪金所得
            begin
              Yssde:=Sde-Kce;  //应税所得额=所得额-扣除额
             if Yssde<0 Then application.MessageBox('你这个月不用纳税!^_^',
                 '哈哈!',64) 
             else
              GzXj;
              xianshi;
            end
        else if Rabt2.Checked  then //选中个体工商户生产经营所得
            begin
               YsSde:=Sde;
               GeTi;
               Xianshi;
            end
        else if Rabt3.Checked then  //稿酬
            begin
                YsSde:=Sde;
                GaoChou;
                XianShi;
            end
        else if Rabt4.checked then //劳务所得
            begin
                YsSde:=Sde;
                LaoWu;
                xianshi;
            end
        else if Rabt5.Checked then //  利息股息红利所得
            begin
                YsSde:=Sde;
                LiXi;
                XianShi;
            end
        else
            application.MessageBox('你未选择所得种类','提示',64);

   end
  else
        application.MessageBox ('你输入的是你的所得吗?:(',
           '输入提示',48);

 end;
procedure TFrmGrsds.ChSuanBtnClick(Sender: TObject);
begin
    edit1.Clear; //清除文本框内容。
    edit2.Clear ;
    label4.Visible :=False;
    JiSuanBtn.Enabled :=False;
end;

procedure TFrmGrsds.NQuitClick(Sender: TObject);
begin
    ExitBtnClick(self);//退出按钮执行
end;

procedure TFrmGrsds.RaBtChinaClick(Sender: TObject);
begin
    StBar.Panels[1].text:='中国公民';
    Kce:=1600;
end;

procedure TFrmGrsds.RaBtNoChinaClick(Sender: TObject);
begin
    StBar.Panels[1].text:='来华工作人员';
    Kce:=4800;
end;

procedure TFrmGrsds.NGzXjClick(Sender: TObject);
begin
    StBar.Panels[3].text:='工资薪金所得';
    RaBt1.Checked :=True;
    NGzXj.Checked :=True;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;

end;

procedure TFrmGrsds.NGtClick(Sender: TObject);
begin
     StBar.Panels[3].text:='个体工商户生产经营所得';
     RaBt2.Checked :=True;

     NGzXj.Checked :=False;
    NGt.Checked :=True;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;
end;

procedure TFrmGrsds.NChBaoClick(Sender: TObject);
begin
    StBar.Panels[3].text:='对企事业单位承包、承租经营所得';
    RaBt2.Checked :=True;
    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=True;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;

end;

procedure TFrmGrsds.NGChouClick(Sender: TObject);
begin
    StBar.Panels[3].text:='稿酬所得';
    RaBt3.Checked :=True;

    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=True;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;
end;

procedure TFrmGrsds.NLWuClick(Sender: TObject);
begin
    StBar.Panels[3].text:='劳务报酬所得';
    RaBt4.Checked :=True;
    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=True;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;

end;

procedure TFrmGrsds.NLXiClick(Sender: TObject);
begin
    StBar.Panels[3].text:='利息、股息、红利所得';
    RaBt5.Checked :=True;
    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=True;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;

end;

procedure TFrmGrsds.NCChanClick(Sender: TObject);
begin
   StBar.Panels[3].text:='财产转让、财产租赁所得';
    RaBt5.Checked :=True;

    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=True;
    NORan.Checked :=False;
    NQTa.Checked :=False;
end;

procedure TFrmGrsds.NTXQuanClick(Sender: TObject);
begin
    StBar.Panels[3].text:='特许权使用费所得';
    RaBt5.Checked :=True;

    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=True;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=False;
end;

procedure TFrmGrsds.NORanClick(Sender: TObject);
begin
    StBar.Panels[3].text:='偶然所得';
    RaBt5.Checked :=True;

    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=True;
    NQTa.Checked :=False;
end;

procedure TFrmGrsds.NQTaClick(Sender: TObject);
begin
    StBar.Panels[3].text:='其他所得';
    RaBt5.Checked :=True;

    NGzXj.Checked :=False;
    NGt.Checked :=False;
    NChbao.Checked :=False;
    NGChou.Checked :=False;
    NLWu.Checked :=False;
    NTXQuan.Checked :=False;
    NLXi.Checked :=False;
    NCChan.Checked :=False;
    NORan.Checked :=False;
    NQTa.Checked :=True;
end;

procedure TFrmGrsds.RaBt1Click(Sender: TObject);
begin
     StBar.Panels[3].Text :='工资薪金所得';
     Rabt1.Checked :=True;
     
end;

procedure TFrmGrsds.RaBt2Click(Sender: TObject);
begin
    StBar.Panels[3].Text :='个体工商户生产经营所得';
    Rabt2.Checked :=True;

end;

procedure TFrmGrsds.RaBt3Click(Sender: TObject);
begin
    StBar.Panels [3].Text :='稿酬所得';
    RaBt3.Checked :=True;

end;

procedure TFrmGrsds.RaBt4Click(Sender: TObject);
begin
    StBar.Panels[3].Text :='劳务报酬所得';
    RaBt4.Checked :=True;
    //Kce
end;

procedure TFrmGrsds.RaBt5Click(Sender: TObject);
begin
    StBar.Panels [3].Text :='特许权使用费所得';
    RaBt5.Checked :=True;
end;

procedure TFrmGrsds.HelpBtnClick(Sender: TObject);
var
    S:String;
begin
   GetDir(0,s);
   shellexecute(handle,nil,'grsds.hlp',
        's',nil,SW_SHOWNORMAL);

end;

procedure TFrmGrsds.Edit1Change(Sender: TObject);

begin
        JiSuanBtn.Enabled :=True         


end;

procedure TFrmGrsds.N3Click(Sender: TObject);
begin
    HelpBtnClick(self);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -