




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 课程设计目的和要求1.1 课程设计的目的C语言一直是程序设计语言的主流之一数据类型丰富、齐全。C语言供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型,运算符丰富、齐全,运算能力强。 C语言提供的运算符为常规运算:常规运算符算术运算符、逻辑运算符、关系运算符等,这类运算符各种语言一般都具备;进一步巩固C程序设计所学的知识,加强语句类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养化程序设计的思想,加深对基本语言要素和结构的理解,锻炼程序设计的能力,以及用C语言解决实际问题的能力。此课程设计着眼于知识的运用,把平常学的知识运用到实践中来,本
2、身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。1.2 课程设计实现的要求如今公民纳税意识的增强,需要有方便、简单、快速的工具帮助大家解决工资,个人所得收入的纳税问题。所以我们可以用程序来实现这个功能,在程序设计中,既可以用传统的程序设计方法,也可以用先进的面向对象程序设计方法。对应用程序的要求:1、该系统软件可以根据输入的工资数额,得出所需缴纳的税额。2、得出税后工资;工资g ;税:t;税后工资m;3、显示税率第二章 程序设计任务内容用C语言实现一个工资纳税系统,该系统主要应用在个人工资纳税操作中,其中要求能够准确计算出个人工资或收入的所得税,能够查询
3、到一个人的工资所得税,该系统涉及到的加,减,乘等简单运算,课程设计主要是使用if语句及switch语句实现。按照国家规定,工资低于1600元时,不用缴纳所得税。当工资高于1600时,需按以下规定缴纳所得税:(税前工资1600)税率个人所得税税额 级数 含税级距 税率% 速算扣除数1 不超过500元的 5 02 超过500元至2000元的部分 10 253 超过2000元至5000元的部分 15 1754 超过5000元至20000元的部分20 6255 超过20000元至40000元的部分 25 3625 超过40000元至60000元的部分 30 96257 超过60000元至80000元的
4、部分 35 166258 超过80000元至100000元的部分40 246259 超过100000元的部分 45 31625 表中的应纳税所得额是指以每月收入额减1600元按公式计算后的余额。例如:计算为:2500-1600=900应纳个人所得税额=5005%+40010% =65再比如:我们用一个大额工资计算,25000元应纳税所得额=25000-1600=23400应纳个人所得税税额=5005%+150010%+300015%+1500020%+340025%=4475要求:输入工资计算出纳税金额。第三章 详细设计说明3.1 模块3.1.1 模块描述声明函数,定义两个变量g和t,m;创建
5、一个工资纳税系统计算函数,实现个人工资所得税的计算、查询。在程序中输入的内容包括:(1)输入个人工资实现过程:根据提示输入个人工资数据(2)个人所得税的计算实现过程(3)显示税率3.1.2 功能模块图此系统的函数功能模块图如图1所示。工资纳税系统计算需缴纳税额得出最终工资所得 图1 函数功能模块图3.2 性能该模块性能要求(1)灵活性要求输出的数据能准确的按照操作代码输出。(2)时间特性要求输入的各项操作代码能及时反应其运行结果。 3.3 算法说明该程序采用一系列if语句及switch语句来达到计算目的3.4 函数说明工资纳税计算函数(1)原型:int main()(2)功能:该函数用来计算输
6、入工资的所得税(3)流程图:如图2所示开始输入工资gg1600t=0c200 t=(g-j-100000)*d9+31625Casec=(g-j)/500t=(g-j)*d1t=(g-j-500)*d2+25t=(g-j-2000)*d3+175t=(g-j-5000)*d4+625t=(g-j-20000)*d5+3625t=(g-j-40000)*d6+9625t=(g-j-40000)*d7+16625t=(g-j-80000)*d8+24625输出tm=g-t输出m输出“工资纳税系统”输出税率值 图2(4)对应代码#includeint main()int g,c,j=1600;flo
7、at d1=0.05,d2=0.1,d3=0.15,d4=0.2,d5=0.25,d6=0.3,d7=0.35,d8=0.4,d9=0.45,m,t;printf(欢迎进入工资纳税系统n);printf( 税率表 n);printf(级数 含税级距 税率 (% %)n);printf( 1 不超过500元的 5 n);printf( 2 超过500元至2000元的部分 10n );printf( 3 超过2000元至5000元的部分 15n );printf( 4 超过5000元至20000元的部分 20n );printf( 5 超过20000元至40000元的部分 25n );printf
8、( 6 超过40000元至60000元的部分 30n );printf( 7 超过60000元至80000元的部分 35n );printf( 8 超过80000元至100000元的部分 40n );printf( 9 超过100000元的部分 45n );printf(n请输入工资:n);scanf (%d,&g);if (gj) c=(g-j)/500;else if(c200)t=(g-j-100000)*d9+31625;/ (g-j)超过100000元时t计算方法switch(c)case 0:t=(g-j)*d1;/ (g-j)不超过500元时t计算方法case 1:case 2:
9、case 3:case 4:t=(g-j-500)*d2+25;break;/14;(g-j)超过500元但不超过2000元时t计算方法case 5:case 6:case 7:case 8:case 9:case 10:t=(g-j-2000)*d3+175;break;/510;(g-j)超过2000元但不超过5000元时t计算方法case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:cas
10、e 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:t=(g-j-5000)*d4+625;break; /1140;(g-j)超过5000元但不超过20000元时t计算方法case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:ca
11、se 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 80:t=(g-j-20000)*d5+3625;break;/ 4180;(g-j)超过20000元但不超过40000元时t计算方法case 81:case 82:case 83:case 84:case 85:case 8
12、6:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:t=(g-
13、j-40000)*d6+9625;break;/ 81120;(g-j)超过40000元但不超过60000元时t计算方法case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140:case 141:case 142:case 143:case 144:case 145:case 146:case 1
14、47:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:case 160:t=(g-j-40000)*d7+16625;break;/ 121160;(g-j)超过60000元但不超过80000元时t计算方法case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case
15、173:case 174:case 175:case 176:case 177:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:t=(g-j-80000)*d8+24625;break;/ 161200;(g-j)超过80000元但不超过100000元
16、时t计算方法printf(个人所得税:t=%10.2fn,-t);m=g-t;printf(税后工资:m=%10.2fn,m);3.5 限制条件在输入值时必须按照程序所规定的输入,否则将运行错误或无法运行。3.6 测试计划本次测试主要为验证工资纳税函数的功能,该函数可以根据输入的工资数额,得出所需缴纳的税额。对该函数进行功能测试、正确性测试等。第四章 程序使用说明4.1 使用操作该程序可以实现对个人工资所得税的计算。安装VisualC+6.0,在工具栏“文件”中单击“新建”选项,开始输入程序,程序输入完成,保存,单击工具栏中“”选项,选择“txt.c”待程序无误后,开始构建并执行程序。4.2
17、运行结果4.2.1 初始运行界面最初的运行界面,要求输入 工资数据如图4-1所示 图4-14.2.2 最终运行界面进入初始界面后,输入个人工资,计算某人的工资所得税。第一种情况所出现的最终运行界面如图4-2最终运行界面(一) 图4-2最终运行界面(一) 第二种情况所出现的最终运行界面如图4-2最终运行界面(二) 图4-2最终运行界面(二) 第三种情况所出现的最终运行界面如图4-2最终运行界面(三)图4-2最终运行界面(三)第四种情况所出现的最终运行界面如图4-2最终运行界面(四) 图4-2最终运行界面(四) 第五种情况所出现的最终运行界面如图4-2最终运行界面(五) 图4-2最终运行界面(五)
18、 第六种情况所出现的最终运行界面如图4-2最终运行界面(六)图4-2最终运行界面(六)第七种情况所出现的最终运行界面如图4-2最终运行界面(七) 如图4-2最终运行界面(七) 第八种情况所出现的最终运行界面如图4-2最终运行界面(八) 图4-2最终运行界面(八)第九种情况所出现的最终运行界面如图4-2最终运行界面(九)图4-2最终运行界面(九)第五章 课程设计心得与体会通知要进行课程设计时,有点懵,感觉学的东西没有系统认识,不知该怎么练到一起。只能利用自己所理解的零星点滴来尽量完成,通过查找资料(从程序设计p109,例题4.10)及老师的指导整个程序终于完成。虽然有很多不完善的地方,但是经过这
19、次课程设计,让我对C语言有进一步的了解和认识,能更好的认识和运用这门语言,并且它在我们的生活,工作,学习中有很多用途。在反复的修改中也让我们认识到要做好一件事,一定要认真对待,一丝不苟,注意细节,最重要的是在平时的学习知识时打好一个坚实的基础。这次的课程设计收获了知识、提高了能力,学会了如何运用所学知识去解决实际问题,懂得怎么样去制定计划,怎么样去实现这个计划。希望自己以后办事的时候要认真,仔细,考虑周全。在此,感谢老师的辛勤教导!附录一:参考文献1谭浩强,C程序设计(第四版),北京清华大学出版社,2013年11月重印附录二:程序#includeint main()int g,c,j=1600
20、;float d1=0.05,d2=0.1,d3=0.15,d4=0.2,d5=0.25,d6=0.3,d7=0.35,d8=0.4,d9=0.45,m,t;printf( 欢迎进入工资纳税系统nn);printf( 税率表 n);printf(级数 含税级距 税率 (% %)n);printf( 1 不超过500元的 5 n);printf( 2 超过500元至2000元的部分 10n );printf( 3 超过2000元至5000元的部分 15n );printf( 4 超过5000元至20000元的部分 20n );printf( 5 超过20000元至40000元的部分 25n );
21、printf( 6 超过40000元至60000元的部分 30n );printf( 7 超过60000元至80000元的部分 35n );printf( 8 超过80000元至100000元的部分 40n );printf( 9 超过100000元的部分 45n );printf(n请输入工资:n);scanf (%d,&g);if (gj) c=(g-j)/500; else if(c200) t=(g-j-100000)*d9+31625 ;switch(c)case 0:t=(g-j)*d1;case 1:case 2:case 3:case 4:t=(g-j-500)*d2+25;b
22、reak;case 5:case 6:case 7:case 8:case 9:case 10:t=(g-j-2000)*d3+175;break;case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:ca
23、se 39:case 40:t=(g-j-5000)*d4+625;break;case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case
24、 73:case 74:case 75:case 76:case 77:case 78:case 79:case 80:t=(g-j-20000)*d5+3625;break;case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 1
25、06:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:t=(g-j-40000)*d6+9625;break;case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136
26、:case 137:case 138:case 139:case 140:case 141:case 142:case 143:case 144:case 145:case 146:case 147:case 148:case 149:case 150:case 151:case 152:case 153:case 154:case 155:case 156:case 157:case 158:case 159:case 160:t=(g-j-40000)*d7+16625;break;case 161:case 162:case 163:case 164:case 165:case 166:
27、case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:case 176:case 177:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:t=(
28、g-j-80000)*d8+24625;break;printf(个人所得税:t=%10.2fn,t);m=g-t;printf(税后工资:m=%10.2fn,m);附录资料:不需要的可以自行删除Abstract: Based on the comprehensive analysis on the plastic parts structure service requirement, mounding quality and mould menu factoring cost. A corresponding injection mould of internal side core pu
29、lling was designed. By adopting the multi-direction and multi-combination core-pulling. A corresponding injection mould of internal side core pulling was designed, the working process of the mould was introducedC语言详解 - 枚举类型注:以下全部代码的执行环境为VC+ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#
30、define MON 1#define TUE 2#define WED 3#define THU 4#define FRI 5#define SAT 6#define SUN 7在此,我们定义一种新的数据类型,希望它能完成同样的工作。这种新的数据类型叫枚举型。1. 定义一种新的数据类型 - 枚举型 以下代码定义了这种新的数据类型 - 枚举型enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;(1) 枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。(2) DAY是一个标识符,可以看成这个集合的名字,是一个可选项,即是可
31、有可无的项。(3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。(4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。(5) 枚举型是预处理指令#define的替代。(6) 类型定义以分号;结束。2. 使用枚举类型对变量进行声明新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float, 双精度浮点型double, 字符型char, 短整型short等等。用这些基本数据类型声明变量通常是这样:char a; /变量a的类型均为字符型charchar letter;int x, y, z; /变量x,y和z的类
32、型均为整型intint number;double m, n;double result; /变量result的类型为双精度浮点型double既然枚举也是一种数据类型,那么它和基本数据类型一样也可以对变量进行声明。方法一:枚举类型的定义和变量的声明分开enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN;enum DAY yesterday;enum DAY today;enum DAY tomorrow; /变量tomorrow的类型为枚举型enum DAYenum DAY good_day, bad_day; /变量good_day和bad_day的类型
33、均为枚举型enum DAY方法二:类型定义与变量声明同时进行:enum /跟第一个定义不同的是,此处的标号DAY省略,这是允许的。 saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /变量workday的类型为枚举型enum DAYenum week Mon=1, Tue, Wed, Thu, Fri Sat, Sun days; /变量days的类型为枚举型enum weekenum BOOLEAN false, true end_flag, match_flag; /定义枚举类型并声明了两
34、个枚举型变量方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday workday; /此处的workday为枚举型enum workday的别名workday today, tomorrow; /变量today和tomorrow的类型为枚举型workday,也即enum workdayenum workday中的workday可以省略:typedef enum saturday, sunday =
35、 0, monday, tuesday, wednesday, thursday, friday workday; /此处的workday为枚举型enum workday的别名workday today, tomorrow; /变量today和tomorrow的类型为枚举型workday,也即enum workday也可以用这种方式:typedef enum workday saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday;workday today, tomorrow; /变量today和tomorrow的类
36、型为枚举型workday,也即enum workday注意:同一个程序中不能定义同名的枚举类型,不同的枚举类型中也不能存在同名的命名常量。错误示例如下所示:错误声明一:存在同名的枚举类型typedef enum wednesday, thursday, friday workday;typedef enum WEEK saturday, sunday = 0, monday, workday; 错误声明二:存在同名的枚举成员typedef enum wednesday, thursday, friday workday_1;typedef enum WEEK wednesday, sunday
37、 = 0, monday, workday_2;3. 使用枚举类型的变量3.1 对枚举型的变量赋值。实例将枚举类型的赋值与基本数据类型的赋值进行了对比:方法一:先声明变量,再对变量赋值#include/* 定义枚举类型 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本数据类型声明变量,然后对变量赋值 */ int x, y, z; x = 10; y = 20; z = 30; /* 使用枚举类型声明变量,再对枚举型变量赋值 */ enum DAY yesterday, today, tomorrow; ye
38、sterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法二:声明变量的同时赋初值#include /* 定义枚举类型 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() /* 使用基本数据类型声明变量同时对变量赋初值 */ int x=10, y=20, z=30; /* 使用枚举类型声明变量同时对枚举型变量赋初值 */ enum DAY yesterday = MON, today = TUE,
39、tomorrow = WED; printf(%d %d %d n, yesterday, today, tomorrow);方法三:定义类型的同时声明变量,然后对变量赋值。#include /* 定义枚举类型,同时声明该类型的三个变量,它们都为全局变量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday, today, tomorrow;/* 定义三个具有基本数据类型的变量,它们都为全局变量 */int x, y, z;void main() /* 对基本数据类型的变量赋值 */ x = 10; y = 20; z = 30; /
40、* 对枚举型的变量赋值 */ yesterday = MON; today = TUE; tomorrow = WED; printf(%d %d %d n, x, y, z); /输出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /输出:1 2 3方法四:类型定义,变量声明,赋初值同时进行。#include /* 定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量 */enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN yesterday = MON, today =
41、TUE, tomorrow = WED;/* 定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量 */int x = 10, y = 20, z = 30;void main() printf(%d %d %d n, x, y, z); /输出:10 20 30 printf(%d %d %d n, yesterday, today, tomorrow); /输出:1 2 33.2 对枚举型的变量赋整数值时,需要进行类型转换。#include enum DAY MON=1, TUE, WED, THU, FRI, SAT, SUN ;void main() enum DAY yeste
42、rday, today, tomorrow; yesterday = TUE; today = (enum DAY) (yesterday + 1); /类型转换 tomorrow = (enum DAY) 30; /类型转换 /tomorrow = 3; /错误 printf(%d %d %d n, yesterday, today, tomorrow); /输出:2 3 303.3 使用枚举型变量#includeenum BELL = a, BACKSPACE = b, HTAB = t, RETURN = r, NEWLINE = n, VTAB = v, SPACE = ;enum B
43、OOLEAN FALSE = 0, TRUE match_flag;void main() int index = 0; int count_of_letter = 0; int count_of_space = 0; char str = Im Ely efod; match_flag = FALSE; for(; strindex != 0; index+) if( SPACE != strindex ) count_of_letter+; else match_flag = (enum BOOLEAN) 1; count_of_space+; printf(%s %d times %c, match_flag ? match : not match, count_of_space, NEWLINE); printf(count of letters: %d %c%c, count_of_le
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大考语文试题答案及解析
- 测试七英语试题及答案
- 高速公路智能交通系统在高速公路养护管理中的智能调度策略
- 美育概论考试题及答案
- 教育行业在线教育模式研究报告:2025年市场分析与策略
- 数据支付测试题及答案
- 即时配送行业2025年配送路径优化与成本控制物流趋势研究报告
- 金融客户关系管理数字化升级金融行业CRM系统性能优化报告
- 装备制造业2025年自主创新能力提升与产业技术创新体系建设策略创新报告
- 科学测试题大全及答案
- 空气输送斜槽选型手册
- 服装IE(浙江纺织服装职业技术学院)知到智慧树答案
- 培训机构教务管理岗位职责
- 水利工程项目法人质量责任追究和奖惩制度
- DB44-T 2537-2024 小型水电站退役导则
- 托幼机构安全应急预案制度
- 酒店执行力培训
- 企业合规之内控与风险管理
- 广东省水利水电建筑工程预算定额(上册)
- 住建部建设工程施工劳务分包合同(2024版)
- 老年人支气管哮喘诊断与管理中国专家共识2020
评论
0/150
提交评论