找回密码
 加入
搜索
查看: 3313|回复: 4

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

[复制链接]
发表于 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
发表于 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函数
发表于 2011-2-12 15:28:14 | 显示全部楼层
问题出在:在While 1循环里使用if语句,而且时间间隔只有50毫秒,数值当然一直在更新了,无法复制。
发表于 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 ;==>
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 22:23 , Processed in 0.079303 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表