清风飘飘 发表于 2011-2-12 08:11:14

计算个人所得税的小工具遇到了点问题[已解决]

本帖最后由 清风飘飘 于 2011-2-21 21:09 编辑

想写一个个人所得税计算的小工具,不知道税率怎么加进去,我使用过判断可是总不成功,希望那位朋友给说一下,还有就是为什么结果的那个框框总是刷新,没办法复制!有没有什么解决办法呢?#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 498, 337, 429, 263)
$Input1 = GUICtrlCreateInput("", 128, 96, 121, 21)
$Input2 = GUICtrlCreateInput("", 268, 96, 121, 21)
$Input3 = GUICtrlCreateInput("", 128, 178, 121, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 128, 128, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 264, 128, 97, 17)
$leb=GUICtrlCreateLabel("金额",129,70,121,21)
$leb=GUICtrlCreateLabel("应缴税费",269,70,121,21)
$leb=GUICtrlCreateLabel("税后",129,150,90,21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $a,$b,$c,$d,$e

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                       

EndSwitch
If BitAND(GUICtrlRead($Checkbox1),$GUI_CHECKED) And GUICtrlRead($Input1)<>'' Then
                                $a=150
                        Else
                                $a=0
                        EndIf
                        If BitAND(GUICtrlRead($Checkbox2),$GUI_CHECKED) And GUICtrlRead($Input1)<>'' Then
                                $b=10
                        Else
                                $b=0
                        EndIf                       
GUICtrlSetData($Input3,GUICtrlRead($Input1)+$a-$b)
Sleep(50)
               
WEnd

papapa314 发表于 2011-2-12 15:26:11

本帖最后由 papapa314 于 2011-2-12 15:31 编辑

先解决你后面那个问题,这样就可以复制了:#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 498, 337, 429, 263)
$Input1 = GUICtrlCreateInput("", 128, 96, 121, 21)
$Input2 = GUICtrlCreateInput("", 268, 96, 121, 21)
$Input3 = GUICtrlCreateInput("", 128, 178, 121, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 128, 128, 97, 17)
;GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 264, 128, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$leb=GUICtrlCreateLabel("金额",129,70,121,21)
$leb=GUICtrlCreateLabel("应缴税费",269,70,121,21)
$leb=GUICtrlCreateLabel("税后",129,150,90,21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Dim $a,$b,$c,$d,$e

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                        


                                Case ($Checkbox1)
                                        If GUICtrlRead($Checkbox1)=$GUI_CHECKED And GUICtrlRead($Input1)<>'' Then
                              $a=150
                        Else
                              $a=0
                        EndIf
                        If BitAND(GUICtrlRead($Checkbox2),$GUI_CHECKED) And GUICtrlRead($Input1)<>'' Then
                              $b=10
                        Else
                              $b=0
                        EndIf                        
GUICtrlSetData($Input3,GUICtrlRead($Input1)+$a-$b)
Sleep(50)
EndSwitch               
WEnd不过如果你要实时计算的话,可以采用onvent模式,或者用AdlibRegister函数

papapa314 发表于 2011-2-12 15:28:14

问题出在:在While 1循环里使用if语句,而且时间间隔只有50毫秒,数值当然一直在更新了,无法复制。

auto 发表于 2011-2-13 12:58:35

看不出个税的计算?
个税计算要考虑是否中国和外籍
还要考虑税目,是工薪\劳务\年薪\全年一性奖金\特殊工资薪金\偶然所得\等等
这些扣除数和税率都不一样
实时自动刷新用AdlibRegister函数实现就可以了
当然也可以在while里面实现

清风飘飘 发表于 2011-2-13 21:29:06

回复 2# papapa314


谢谢,我想知道的还有个问题是根据我国的税率,我要计算的话怎么判断呢?
个人所得税税率表
级 数 全月应纳税所得额 税率 速算扣除数
1不超过500元的部分 5% 0
2 超过500元至2000元的部分 10% 25
3 超过2000元至5000元的部分 15% 125
4 超过5000元至20000元的部分 20% 375
5 超过20000元至40000元的部分 25% 1375
6 超过40000元至60000元的部分 30% 3375
7 超过60000元至80000元的部分 35% 6375
8 超过80000元至100000元的部分 40% 10375
9 超过100000元的部分 45% 15375
应纳税额计算公式:
全月应纳税所得额=月工资、薪金收入总额-800元
全月应纳税额=全月应纳税所得额×适用税率-速算扣除数



我就是不知道这个怎么判断,我试着用IF 可是还是不行!#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 498, 337, 429, 263)
$Input1 = GUICtrlCreateInput("", 128, 96, 121, 21)
$Input2 = GUICtrlCreateInput("", 268, 96, 121, 21)
$Input3 = GUICtrlCreateInput("", 128, 178, 121, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 128, 128, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 264, 128, 97, 17)
$leb=GUICtrlCreateLabel("金额",129,70,121,21)
$leb=GUICtrlCreateLabel("应缴税费",269,70,121,21)
$leb=GUICtrlCreateLabel("税后",129,150,90,21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

AdlibRegister("shuilv",500)
Dim $a,$b,$c,$d,$e
While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Checkbox2
                        If GUICtrlRead($Checkbox2)=$GUI_CHECKED And GUICtrlRead($Input1)<>'' Then
                                $b=10
                        Else
                                $b=0
                        EndIf
                       

EndSwitch
                        If BitAND(GUICtrlRead($Checkbox1),$GUI_CHECKED) And GUICtrlRead($Input1)<>'' Then
                                $a=150
                        Else
                                $a=0
                        EndIf

GUICtrlSetData($Input2,GUICtrlRead($Input1)*$c-$d)
GUICtrlSetData($Input3,GUICtrlRead($Input1)+$a-$b)
Sleep(50)
               
        WEnd
       
       
        Func shuilv()
                If GUICtrlRead($Input1)<2000 Then
                        $c=0
                        $d=0
                ElseIf GUICtrlRead($Input1)>2000 And GUICtrlRead($Input1)<2500 Then
                        $e=GUICtrlRead($Input1)-2000
                        $c=$e*0.05
                        $b=0
                EndIf
        EndFunc ;==>
页: [1]
查看完整版本: 计算个人所得税的小工具遇到了点问题[已解决]