| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 895 人关注过本帖
标题:模块化程序设计问题
只看楼主 加入收藏
crazyindance
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-8
收藏
 问题点数:0 回复次数:2 
模块化程序设计问题

设计一个有过程的程序,主程序的功能是:允许输入一个单位每个人的收入,然后到过程中去按照纳税规则计算应纳的税;在主程序中把税款累加起来:输入数值0,程序结束,且输出该单位应代缴纳的个人税款。纳税规则是分段计税,即工资少于或等于800元免税,高于800少于2000部分按照5%计税;高于2000少于等于3500部分按10%计税;高于3500少于等于5000按15%计税;高于5000部分按20%计税。

我设计的是
CLEAR
sds=0
tsds=0
do while .t.
input"输入每人工资:" to gz
do proc1 with gz
IF gz=0
EXIT
ENDIF
tsds=sds+tsds
ENDDO
RETURN
?"单位应交纳个人所得税=",tsds


PROCEDURE proc1
PARAMETERS gz,sds
do case
CASE gz<=800
sds=0
CASE gz<=2000
sds=(g-800)*0.05
CASE gz<=3500
sds=(gz-2000)*0.1+1200*0.05
CASE gz<=5000
sds=(gz-3500)*0.15+1500*0.1+1200*0.05
OTHERWISE
sd=(gz-5000)*0.2+1500*0.15+1500*0.1+1200*0.05
ENDCASE
ENDPROC


运行不了,最后不出来所得税的和。。郁闷了
不用模块设计没有问题
一用模块就不对 哪里问题呢?
请指教 谢谢

搜索更多相关主题的帖子: 模块化程序 设计 
2006-06-08 13:37
啸凡
Rank: 8Rank: 8
等 级:贵宾
威 望:45
帖 子:1356
专家分:885
注 册:2006-2-22
收藏
得分:0 
你的程序存在以下问题:
1、PARAMETERS gz,sds是接收两个参数,而你上面do proc1 with gz只传递了一个参数。
2、你没有要求过程把计算的值返回给调用者。
3、?“单位应代交个人所得税额”放在Return之后,还能执行吗?就算计算出了数据,也显示不出来了。
题外话:你的计税方式是错的,个人所得税还有一个和速算扣除额。如果按你的办法交税,你们公司的员工的贡献就太大了。
建议,用IIF()函数可以一条命令就实现了。

Tax=IIF((GZ-800)<0,0,IIF((GZ-800)<500,(GZ-800)*5%,IIF((GZ-800)<2000,(GZ-800)*10%-25,IIF((GZ-800)<5000,(GZ-800)*15%-125,IIF((GZ-800)<20000,(GZ-800)*20%-375,IIF((GZ-800)<40000,(GZ-800)*25%-1375,IIF((GZ-800)<600000,(GZ-800)*30%-3375,IIF((GZ-800)<80000,(GZ-800)*35%-6375,IIF((GZ-800)<100000,(GZ-800)*40%-10375,(GZ-800)*45%-15375)))))))))
这是得到税务部门认可的个人收入所得税计算公式,至于累计,你应该能解决。

[此贴子已经被作者于2006-6-8 15:51:56编辑过]


两人行已有我师……
2006-06-08 15:00
crazyindance
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-6-8
收藏
得分:0 

呵呵,终于找到问题了
谢谢

计税方式不对吗?高中就是这么学的啊
回去找找


2006-06-08 17:51
快速回复:模块化程序设计问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038517 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved