收藏 分销(赏)

C语言程序设计-纳税工资系统.doc

上传人:二*** 文档编号:4576668 上传时间:2024-09-30 格式:DOC 页数:38 大小:1.18MB 下载积分:5 金币
下载 相关 举报
C语言程序设计-纳税工资系统.doc_第1页
第1页 / 共38页
本文档共38页,全文阅读请下载到手机保存,查看更方便
资源描述
第一章 课程设计目的和要求 1.1 课程设计的目的 C语言一直是程序设计语言的主流之一数据类型丰富、齐全。C语言供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型,运算符丰富、齐全,运算能力强。 C语言提供的运算符为常规运算:常规运算符——算术运算符、逻辑运算符、关系运算符等,这类运算符各种语言一般都具备; 进一步巩固《C程序设计》所学的知识,加强语句类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养化程序设计的思想,加深对基本语言要素和结构的理解,锻炼程序设计的能力,以及用C语言解决实际问题的能力。 此课程设计着眼于知识的运用,把平常学的知识运用到实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。 1.2 课程设计实现的要求 如今公民纳税意识的增强,需要有方便、简单、快速的工具帮助大家解决工资,个人所得收入的纳税问题。所以我们可以用程序来实现这个功能,在程序设计中,既可以用传统的程序设计方法,也可以用先进的面向对象程序设计方法。 对应用程序的要求: 1、该系统软件可以根据输入的工资数额,得出所需缴纳的税额。 2、得出税后工资; 工资g ;税:t;税后工资m; 3、显示税率 第二章 程序设计任务内容 用C语言实现一个工资纳税系统,该系统主要应用在个人工资纳税操作中,其中要求能够准确计算出个人工资或收入的所得税,能够查询到一个人的工资所得税,该系统涉及到的加,减,乘等简单运算,课程设计主要是使用if语句及switch语句实现。 按照国家规定,工资低于1600元时,不用缴纳所得税。当工资高于1600时,需按以下规定缴纳所得税: (税前工资-1600)×税率=个人所得税税额 级数            含税级距                            税率%     速算扣除数  1      不超过500元的                                5             0  2      超过500元至2000元的部分                     10           25  3      超过2000元至5000元的部分                   15           175  4      超过5000元至20000元的部分                  20            625  5      超过20000元至40000元的部分              25           3625      超过40000元至60000元的部分               30          9625  7      超过60000元至80000元的部分               35          16625  8      超过80000元至100000元的部分              40           24625  9      超过100000元的部分                           45            31625 表中的应纳税所得额是指以每月收入额减1600元按公式计算后的余额。 例如:计算为:2500-1600=900 应纳个人所得税额=500×5%+400×10% =65 再比如:我们用一个大额工资计算,25000元 应纳税所得额=25000-1600=23400 应纳个人所得税税额=500×5%+1500×10%+3000×15%+15000×20%+3400×25%=4475 要求:输入工资计算出纳税金额。 第三章 详细设计说明 3.1 模块 3.1.1 模块描述 声明函数,定义两个变量g和t,m;创建一个工资纳税系统计算函数,实现个人工资所得税的计算、查询。在程序中输入的内容包括: (1)输入个人工资 实现过程:根据提示输入个人工资数据 (2)个人所得税的计算 实现过程 (3)显示税率 3.1.2 功能模块图 此系统的函数功能模块图如图1所示。 工资纳税系统 计算需缴纳税额 得出最终工资所得 图1 函数功能模块图 3.2 性能 该模块性能要求 (1)灵活性要求 输出的数据能准确的按照操作代码输出。 (2)时间特性要求 输入的各项操作代码能及时反应其运行结果。 3.3 算法说明 该程序采用一系列if语句及switch语句来达到计算目的 3.4 函数说明 工资纳税计算函数 (1)原型:int main() (2)功能:该函数用来计算输入工资的所得税 (3)流程图:如图2所示 开始 输入工资g g>1600 t=0 c>200 t=(g-j-100000)*d9+31625 Case c=(g-j)/500 t=(g-j)*d1 t=(g-j-500)*d2+25 t=(g-j-2000)*d3+175 t=(g-j-5000)*d4+625 t=(g-j-20000)*d5+3625 t=(g-j-40000)*d6+9625 t=(g-j-40000)*d7+16625 t=(g-j-80000)*d8+24625 输出t m=g-t 输出m 输出“工资纳税系统” 输出税率值 图2 (4)对应代码 #include<stdio.h> int main() { int g,c,j=1600; 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("欢迎进入工资纳税系统\n"); printf(" 税率表 \n"); printf("级数 含税级距 税率 (% %)\n"); printf(" 1 不超过500元的 5 \n"); printf(" 2 超过500元至2000元的部分 10\n "); printf(" 3 超过2000元至5000元的部分 15\n "); printf(" 4 超过5000元至20000元的部分 20\n "); printf(" 5 超过20000元至40000元的部分 25\n "); printf(" 6 超过40000元至60000元的部分 30\n "); printf(" 7 超过60000元至80000元的部分 35\n "); printf(" 8 超过80000元至100000元的部分 40\n "); printf(" 9 超过100000元的部分 45\n "); printf("\n请输入工资:\n"); scanf ("%d",&g); if (g<=j) t=0;// g不超过1600元时t的值 else if(g>j) c=(g-j)/500; else if(c>200) 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: case 3: case 4:t=(g-j-500)*d2+25;break;//1~4;(g-j)超过500元但不超过2000元时t计算方法 case 5: case 6: case 7: case 8: case 9: case 10:t=(g-j-2000)*d3+175;break;//5~10;(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: case 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; //11~40;(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: 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 73: case 74: case 75: case 76: case 77: case 78: case 79: case 80:t=(g-j-20000)*d5+3625;break;// 41~80;(g-j)超过20000元但不超过40000元时t计算方法 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 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-j-40000)*d6+9625;break;// 81~120;(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 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;// 121~160;(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 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;// 161~200;(g-j)超过80000元但不超过100000元时t计算方法 } printf("个人所得税:t=%10.2f\n",-t); m=g-t; printf("税后工资:m=%10.2f\n",m); } 3.5 限制条件 在输入值时必须按照程序所规定的输入,否则将运行错误或无法运行。 3.6 测试计划 本次测试主要为验证工资纳税函数的功能,该函数可以根据输入的工资数额,得出所需缴纳的税额。对该函数进行功能测试、正确性测试等。 第四章 程序使用说明 4.1 使用操作 该程序可以实现对个人工资所得税的计算。 安装VisualC++6.0,在工具栏“文件”中单击“新建”选项,开始输入程序,程序输入完成,保存,单击工具栏中“”选项,选择“txt.c”待程序无误后,开始构建并执行程序。 4.2 运行结果 4.2.1 初始运行界面 最初的运行界面,要求输入 工资数据如图4-1所示 图4-1 4.2.2 最终运行界面 进入初始界面后,输入个人工资,计算某人的工资所得税。 第一种情况所出现的最终运行界面如图4-2最终运行界面(一) 图4-2最终运行界面(一) 第二种情况所出现的最终运行界面如图4-2最终运行界面(二) 图4-2最终运行界面(二) 第三种情况所出现的最终运行界面如图4-2最终运行界面(三) 图4-2最终运行界面(三) 第四种情况所出现的最终运行界面如图4-2最终运行界面(四) 图4-2最终运行界面(四) 第五种情况所出现的最终运行界面如图4-2最终运行界面(五) 图4-2最终运行界面(五) 第六种情况所出现的最终运行界面如图4-2最终运行界面(六) 图4-2最终运行界面(六) 第七种情况所出现的最终运行界面如图4-2最终运行界面(七) 如图4-2最终运行界面(七) 第八种情况所出现的最终运行界面如图4-2最终运行界面(八) 图4-2最终运行界面(八) 第九种情况所出现的最终运行界面如图4-2最终运行界面(九) 图4-2最终运行界面(九) 第五章 课程设计心得与体会 通知要进行课程设计时,有点懵,感觉学的东西没有系统认识,不知该怎么练到一起。只能利用自己所理解的零星点滴来尽量完成,通过查找资料(《从程序设计》p109,例题4.10)及老师的指导整个程序终于完成。虽然有很多不完善的地方,但是经过这次课程设计,让我对C语言有进一步的了解和认识,能更好的认识和运用这门语言,并且它在我们的生活,工作,学习中有很多用途。 在反复的修改中也让我们认识到要做好一件事,一定要认真对待,一丝不苟,注意细节,最重要的是在平时的学习知识时打好一个坚实的基础。 这次的课程设计收获了知识、提高了能力,学会了如何运用所学知识去解决实际问题,懂得怎么样去制定计划,怎么样去实现这个计划。希望自己以后办事的时候要认真,仔细,考虑周全。在此,感谢老师的辛勤教导! 附录一:参考文献 [1]谭浩强,C程序设计(第四版),北京清华大学出版社,2013年11月重印 附录二:程序 #include<stdio.h> int main() { int g,c,j=1600; 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(" 欢迎进入工资纳税系统\n\n"); printf(" 税率表 \n"); printf("级数 含税级距 税率 (% %)\n"); printf(" 1 不超过500元的 5 \n"); printf(" 2 超过500元至2000元的部分 10\n "); printf(" 3 超过2000元至5000元的部分 15\n "); printf(" 4 超过5000元至20000元的部分 20\n "); printf(" 5 超过20000元至40000元的部分 25\n "); printf(" 6 超过40000元至60000元的部分 30\n "); printf(" 7 超过60000元至80000元的部分 35\n "); printf(" 8 超过80000元至100000元的部分 40\n "); printf(" 9 超过100000元的部分 45\n "); printf("\n请输入工资:\n"); scanf ("%d",&g); if (g<=j) t=0; else if(g>j) c=(g-j)/500; else if(c>200) 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;break; 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: case 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 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 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-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: 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: 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=(g-j-80000)*d8+24625;break;} printf("个人所得税:t=%10.2f\n",t); m=g-t; printf("税后工资:m=%10.2f\n",m); } 附录资料:不需要的可以自行删除 Abstract: Based on the comprehensive analysis on the plastic part’s structure service requirement, mounding quality and mould menu factoring cost. A corresponding injection mould of internal side core pulling 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 introduced C语言详解 - 枚举类型 注:以下全部代码的执行环境为VC++ 6.0 在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是: #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是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。 (3) 第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。 (4) 可以人为设定枚举成员的值,从而自定义某个范围内的整数。 (5) 枚举型是预处理指令#define的替代。 (6) 类型定义以分号;结束。 2. 使用枚举类型对变量进行声明 新的数据类型定义完成后,它就可以使用了。我们已经见过最基本的数据类型,如:整型int, 单精度浮点型float, 双精度浮点型double, 字符型char, 短整型short等等。用这些基本数据类型声明变量通常是这样: char a; //变量a的类型均为字符型char char letter; int x, y, z; //变量x,y和z的类型均为整型int int 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 DAY enum DAY good_day, bad_day; //变量good_day和bad_day的类型均为枚举型enum DAY 方法二:类型定义与变量声明同时进行: enum //跟第一个定义不同的是,此处的标号DAY省略,这是允许的。 { saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday } workday; //变量workday的类型为枚举型enum DAY enum week { Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days; //变量days的类型为枚举型enum week enum BOOLEAN { false, true } end_flag, match_flag; //定义枚举类型并声明了两个枚举型变量 方法三:用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明: typedef enum workday { saturday, sunday = 0, monday, tuesday, wednesday, thursday, friday } workday; //此处的workday为枚举型enum workday的别名 workday today, tomorrow; //变量today和tomorrow的类型为枚举型workday,也即enum workday enum workday中的workday可以省略: typedef enum { saturday, sunday = 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的类型为枚举型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 = 0, monday, } workday_2; 3. 使用枚举类型的变量 3.1 对枚举型的变量赋值。 实例将枚举类型的赋值与基本数据类型的赋值进行了对比: 方法一:先声明变量,再对变量赋值 #include<stdio.h> /* 定义枚举类型 */ 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; yesterday = MON; today = TUE; tomorrow = WED; printf("%d %d %d \n", yesterday, today, tomorrow); } 方法二:声明变量的同时赋初值 #include <stdio.h> /* 定义枚举类型 */ 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, tomorrow = WED; printf("%d %d %d \n", yesterday, today, tomorrow); } 方法三:定义类型的同时声明变量,然后对变量赋值。 #include <stdio.h> /* 定义枚举类型,同时声明该类型的三个变量,它们都为全局变量 */ 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; /* 对枚举型的变量赋值 */ yesterday = MON; today = TUE; tomorro
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服