C语言程序设计,纳税工资系统
c语言课程设计__工资信息管理系统(修改版)
c语言课程设计__工资信息管理系统(修改版)计算机高级语言课程设计报告学生姓名:班学号:班级序号:指导教师:一、题目要求工资信息管理系统【要求】该系统能够实现工资信息管理。
系统包括录入、浏览、查询、统计等功能。
其中录入功能要求能够添加新的工资信息到文件;浏览功能要求能按照工资卡号、姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求能够按照工资卡号、姓名查询;统计功能要求能够按照月份累计统计某职工在某时间段实发工资总金额。
【提示】1.文件中一行数据对应一个职工工资信息2.工资信息的数据结构采用结构体数组,一个数组元素对应一条工资单记录3.工资单信息包括工资卡号、姓名、月份、应发工资、水费、电费、税金、实发工资等4.实发工资=应发工资-水费-电费-税金,其中税金的计算方法为a. 应发工资<800元,税金=0b. 800<应发工资<1400元,税金=(应发工资-800)*5%c. 应发工资>1400元,税金=(应发工资-1400)*10%另:课程实习报告的参考格式1.题目编号2.写出系统总设计的思路、功能模块划分。
给出合理的测试数据及运行结果,要求能够体现程序的正确性和完备性及对错误输入的处理。
总结算法或系统的优缺点,给出算法或系统进一步改进的设想。
在附录中给出源代码,3.附录二、需求分析根据题目要求,由于工资单信息是存放在文件中,所以应提供文件的输入、输出等操作;在程序中需要浏览学生的信息,应提供录入、浏览、查询、统计等操作;另外还应提供键盘式选择菜单实现功能选择。
三、总体设计根据上面的需求分析,可以将这个系统的设计分为以下几个模块:数据输入,数据添加,数据浏览,数据查询,数据统计。
录入职工工资信息模块添加职工工资信息模块浏览职工工资信息模块查询职工工资信息模块统计职工工资信息模块功能选择工资信息管理系统图一系统功能模块图四、详细设计1.主函数主函数提供输入、处理和输出部分的函数调用。
c语言工资管理系统课程设计
c语言工资管理系统课程设计一、课程目标知识目标:1. 掌握C语言中数据类型、变量、运算符、控制结构等基本知识;2. 学会使用数组、结构体等C语言高级特性;3. 理解文件操作在C语言中的应用;4. 掌握工资管理系统的基本功能模块及其实现方法。
技能目标:1. 能够运用C语言编写简单的工资管理系统程序;2. 学会分析工资管理系统的需求,设计合理的程序结构;3. 掌握调试程序、解决常见编译错误和逻辑错误的方法;4. 提高学生的编程实践能力和问题解决能力。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发自主学习C语言的积极性;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 增强学生的信息安全意识,注重保护用户隐私;4. 培养学生遵循编程规范,养成良好的编程习惯。
课程性质分析:本课程为C语言高级应用课程,以实现工资管理系统为项目驱动,结合实际应用场景,让学生在实践中掌握C语言编程技能。
学生特点分析:学生已具备C语言基础知识,具有一定的编程能力,但对复杂程序设计、模块化编程尚需进一步锻炼。
教学要求:结合课程性质和学生特点,注重实践操作,引导学生自主学习,培养编程思维和问题解决能力。
将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、变量、常量、运算符、控制结构(条件语句、循环语句);2. 函数:函数定义、调用、参数传递、返回值;3. 数组与字符串:一维数组、二维数组、字符串操作;4. 指针:指针概念、指针运算、指针与数组、指针与函数;5. 结构体:结构体定义、结构体变量创建、结构体数组、结构体指针;6. 文件操作:文件打开与关闭、读写文件、文件定位;7. 工资管理系统功能模块设计:需求分析、模块划分、数据结构设计;8. 编程实践:编写工资管理系统各功能模块代码,如员工信息管理、工资计算、工资查询等;9. 系统调试与优化:编译错误处理、逻辑错误调试、性能优化;10. 代码规范与编程习惯:命名规范、代码组织、注释使用。
职工工资纳税管理信息系统 c 项目 源代码 功能强大
职工工资纳税管理信息系统 c 项目源代码功能强大#include<iostream>#include<fstream>#include<string>#include<iomanip>#include"conio.h"using namespace std;void login();void zhuye(string user);string username="";void insert();void update();void del();void select();void cont();void add();bool contain(char* ch,fstream &file); bool contain2(char* ch,fstream &file);float getam2(float bm,int am); char* getfname(fstream &file,char* ch);long getl(fstream &file); long getl2(fstream &file); long getl3(char *c,fstream &file); long l1,l2;int error=0;int i2=0;int i3=0;fstream iofile;fstream iofile2;//职工工资信息class worker{public:worker();worker(int a){}char* getno(){return no;}char* getname(){return name;}float getbm(){return bmoney;}float getam(){return amoney;}void setbm(float fl){bmoney=fl;} void setdel(bool bb){b=bb;}void setmmoney(float fl){mmoney=fl;} void setamoney(float fl){amoney=fl;} bool b;int title;private:char no[5];char name[7];float bmoney;float amoney;float mmoney;};worker::worker(){b=true;int x=0;title=1;cout<<"请输入第"<<i2+1<<"个"<<"职工号:";cin>>no;do{if(x!=0){system("cls");cout<<"工资低于底薪1600,请重新输入工资:"<<endl; }cout<<"请输入第"<<i2+1<<"个"<<"职工工资额:"; cin>>bmoney;x++;}while(bmoney<1600);mmoney=bmoney-1600; //应纳税所得额amoney=getam2(mmoney,bmoney); //税后所得工资strcpy(name,getfname(iofile2,no));//cout<<name<<"-----"; }//职工个人信息class worker2{public:worker2();worker2(int a){}char* getn();char* getname();private:char name[7];char no[5];};worker2::worker2() {cout<<"请输入第"<<i3+1<<"个"<<"职工号:";//职工号不能重复~~还要有权限fflush(stdin);cin>>no;cout<<"请输入第"<<i3+1<<"个"<<"职工姓名:";fflush(stdin);cin>>name;}char* worker2::getn(){return no;}char* worker2::getname(){return name;}//主函数int main(){login();return 0;}//登陆函数void login(){system("cls");char before;int abcd;string user;char pa[20];cout<<"请输入用户名:"; cin>>user;cout<<"请输入密码:"; for(int j=0;j<10;j++) {before=getch();if(before==13){pa[j]='\0';break;}if(before==8){before=getchar();}else{pa[j]=before;cout<<'*';}}if(strcmp(pa,"123")==0||strcmp(pa,"456")==0){zhuye(user);}else{do{error++;if(error==3){cout<<endl;cout<<"密码错误3次,系统自动退出,请稍后重新登录~"; for(abcd=1;abcd<=100000000;abcd++){}exit(1);}cout<<"密码错误~请重新输入";for(abcd=1;abcd<=100000000;abcd++){}login();}while(error<3);}}//登陆成功,进入主页void zhuye(string user) {while(true){system("cls");iofile.open("work.txt",ios::in|ios::out);iofile2.open("workinfo.txt",ios::in|ios::out); if(!iofile||!iofile2){cout<<"cuole";}username=user;cout<<"当前用户: "<<username<<endl;cout<<endl;cout<<" 1.职工工资信息录入"<<endl;cout<<" 2.职工工资信息修改"<<endl;cout<<" 3.职工工资信息删除"<<endl;cout<<" 4.查询纳税金额"<<endl; cout<<" 5.添加职工"<<endl; cout<<" 6.退出"<<endl;cout<<endl;char x;cout<<"请选择你要执行的功能:"; cin>>x;switch(x){case '1':insert();break;case '2':update();break;case '3':del();break;case '4':select();break;case '5':add();break;case '6':exit(1);break;default:cout<<"请输入1——6的数字~";for(int i=0;i<100000000;i++){}iofile.close();iofile2.close();break;}}}//添加职工工资信息void insert(){int size=0;i2=0;char e,e2,n,f;system("cls");iofile<<left;cout<<"请输入你要添加职工信息的数目:"; cin>>size;// while(i2<size)// {do{l1=getl(iofile);l2=getl2(iofile2);//有contain,worker的地方都要用worker work;if(contain(work.getno(),iofile2)){if(contain2(work.getno(),iofile)){cout<<"此前已有"<<work.getname()<<"的工资信息!"<<endl;cout<<"覆盖原来信息输'f',添加输't',退出输'n',其他任意键回主页:"; cin>>f;if(f=='t'){iofile.seekp(0,ios::end);iofile.write((char*)&work,sizeof(work));i2++;if(i2==size)break;}else if(f=='n'){exit(1);}else if(f=='f'){long l=getl3(work.getno(),iofile);cout<<l/sizeof(work);iofile.seekg(l);iofile.write((char*)&work,sizeof(work)); i2++;if(i2==size)break;}else{iofile.close();iofile2.close();return;}}else{iofile.seekp(0,ios::end);iofile.write((char*)&work,sizeof(work)); i2++;if(i2==size)break;}}else{cout<<"没有此号,请确认输入无误~继续输入输'y'"<<endl<<"添加用户输入't',退出输'n',其他任意键回主页:";cin>>n;if(n=='n'){exit(1);}else if(n=='t'){add();return;}else if(n=='y'){system("cls");cout<<"请继续输入:"<<endl;// i2++;}else{iofile.close();iofile2.close();return;}}}while(n=='y'||i2<size); // }cout<<"是否还要添加职工工资信息,"<<endl;cout<<" 若要继续请输'Y',退出输'N',回主页输其他任意键:"<<endl; cin>>e;if(e=='y'||e=='Y'){cout<<"请继续添加职工工资信息"<<endl;do{worker work2;if(contain(work2.getno(),iofile2)){cout<<"有";iofile.write((char*)&work2,sizeof(work2));cout<<"继续添加输'y',推出输'N',回主页输其他任意键:"<<endl; cin>>e2;}else{cout<<"没有";}}while(e2=='y'||e2=='Y'); if(e2=='n'||e2=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(e=='n'||e=='N') {iofile.close();iofile2.close();exit(1);}else{iofile.close();iofile2.close();return;}}void update(){system("cls");// int length=getl(iofile);char c[5],e,e2;float fl;int byte=0;worker work(1);cout<<"请输入您要修改的号码:";cin>>c;iofile.seekg(0);iofile.read((char *)&work,sizeof(work)); while(!iofile.eof()){if(strcmp(c,work.getno())==0){break;}iofile.read((char *)&work,sizeof(work)); byte++;}cout<<"请输入要修改的工资:";cin>>fl;work.setbm(fl);work.setmmoney(fl-1600);work.setamoney(getam2(fl-1600,fl));iofile.seekp(byte*sizeof(work));iofile.write((char *)&work,sizeof(work));cout<<"是否还要修改职工工资信息,"<<endl;cout<<" 若要继续请输'Y',退出输'N',回主页输其他任意键:"<<endl; cin>>e;if(e=='y'||e=='Y'){cout<<"请继续输入您要修改的号码:";cin>>c;iofile.seekg(0);while(!iofile.eof()){iofile.read((char *)&work,sizeof(work));if(strcmp(c,work.getno())==0){break;}byte++;}cout<<"请输入要修改的工资:";cin>>fl;work.setbm(fl);work.setmmoney(fl-1600);work.setamoney(getam2(fl-1600,fl));iofile.seekp(byte*sizeof(work));iofile.write((char *)&work,sizeof(work));cout<<"继续修改输'y',退出输'N',回主页输其他任意键:"<<endl; cin>>e2;while(e2=='y'||e2=='Y');if(e2=='n'||e2=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(e=='n'||e=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}void del(){system("cls");int length=getl(iofile);char c[5],e,e2;int byte=0;worker work(1);cout<<"请输入您要删除的号码:";cin>>c;iofile.seekg(0);while(!iofile.eof()){iofile.read((char *)&work,sizeof(work)); if(strcmp(c,work.getno())==0){break;}}byte=iofile.tellg()/sizeof(work)-1;/* work.setdel(false);iofile.seekp(byte*sizeof(work));iofile.write((char *)&work,sizeof(work));*/while(!iofile.eof()){iofile.seekg((byte+1)*sizeof(work));iofile.read((char *)&work,sizeof(work));iofile.seekp(byte*sizeof(work));iofile.write((char *)&work,sizeof(work));byte++;if(byte+1==length)break;}iofile.seekp(-sizeof(work),ios::end);for(int l=0;l<sizeof(work);l++){iofile.put(NULL);}cout<<"删除成功~"<<endl;cout<<"是否还要删除职工工资信息,"<<endl;cout<<" 若要继续请输'Y',退出输'N',回主页输其他任意键:"<<endl; cin>>e;if(e=='y'||e=='Y'){cout<<"请继续删除职工工资信息"<<endl;do{cout<<"请输入您要删除的号码:";cin>>c;iofile.seekg(0);while(!iofile.eof()){iofile.read((char *)&work,sizeof(work)); if(strcmp(c,work.getno())==0){break;}}byte=iofile.tellg()/sizeof(work)-1;while(!iofile.eof()){iofile.seekg((byte+1)*sizeof(work)); iofile.read((char *)&work,sizeof(work)); iofile.seekp(byte*sizeof(work));iofile.write((char *)&work,sizeof(work)); byte++;if(byte+1==length)break;}iofile.seekp(-sizeof(work),ios::end);for(int l=0;l<sizeof(work);l++){iofile.put(NULL);}cout<<"删除成功"<<endl;cout<<"继续删除输'y',退出输'N',回主页输其他任意键:"<<endl; cin>>e2;}while(e2=='y'||e2=='Y');if(e2=='n'||e2=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(e=='n'||e=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}void select(){char c,type;do{system("cls");char n[5];char name[7];cout<<left;long l=getl(iofile);worker work(1);cout<<" 欢迎进入信息查询"<<endl; cout<<" 1.查询所有"<<endl;cout<<" 2.按号码查询"<<endl; cout<<" 3.按姓名查询"<<endl; cout<<endl<<"请选择查询方式:";cin>>type;if(type=='1'){system("cls");cout<<setw(7)<<"号码"<<setw(9)<<"姓名"<<setw(16)<<"税前工资"<<setw(16)<<"税后工资"<<endl;iofile.seekg(0,ios::beg);/*iofile.read((char*)&work,sizeof(work));while(!iofile.eof())//此处需读一遍才会退出循环{if(work.b==true){cout<<!iofile<<setw(7)<<work.getno()<<setw(9)<<work.getname()<<setw( 16)<<work.getbm()<<setw(16)<<work.getam()<<endl;}iofile.read((char*)&work,sizeof(work));}*//* while(iofile.read((char*)&work,sizeof(work))){cout<<!iofile<<setw(7)<<work.getno()<<setw(9)<<work.getname()<<setw( 16)<<work.getbm()<<setw(16)<<work.getam()<<endl;}*/for(int i=0;i<l;i++){iofile.read((char*)&work,sizeof(work));if(work.getbm()!=0)cout<<setw(7)<<work.getno()<<setw(9)<<work.getname()<<setw(16) <<work.getbm()<<setw(16)<<work.getam()<<endl;}cout<<"退出输'n',回主页输其他任意键:";cin>>c;if(c=='n'||c=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(type=='2'){system("cls");cout<<"请输入要查询的学号:";cin>>n;long tl=getl3(n,iofile);iofile.seekg(tl);iofile.read((char*)&work,sizeof(work));cout<<setw(7)<<"号码"<<setw(9)<<"姓名"<<setw(16)<<"税前工资"<<setw(16)<<"税后工资"<<endl;iofile.seekg(0,ios::beg);cout<<setw(7)<<work.getno()<<setw(9)<<work.getname()<<setw(16) <<work.getbm()<<setw(16)<<work.getam()<<endl;cout<<"退出输'n',回主页输其他任意键:";cin>>c;if(c=='n'||c=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(type=='3'){system("cls");cout<<"请输入要查询的姓名:";cin>>name;long tl=getl3(name,iofile);iofile.seekg(tl);iofile.read((char*)&work,sizeof(work));cout<<setw(7)<<"号码"<<setw(9)<<"姓名"<<setw(16)<<"税前工资"<<setw(16)<<"税后工资"<<endl;iofile.seekg(0,ios::beg);cout<<setw(7)<<work.getno()<<setw(9)<<work.getname()<<setw(16) <<work.getbm()<<setw(16)<<work.getam()<<endl;cout<<"退出输'n',回主页输其他任意键:";cin>>c;if(c=='n'||c=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else{cout<<"请输入1——3的数字~";for(int i=0;i<100000000;i++){}}}while(type!='1'&&type!='2'&&type!='3');}//添加职工基本信息void add(){int size=0;i3=0;char e,e2;system("cls");iofile2.seekp(0,ios::end);iofile<<left;cout<<" 欢迎进入添加职工成员~"<<endl;cout<<"请输入你要添加职工信息的数目:"; cin>>size;while(i3<size){worker2 work2;iofile2.write((char*)&work2,sizeof(work2));i3++;}cout<<"是否还要添加职工信息,"<<endl;cout<<" 若要继续请输'Y',退出输'N',回主页输其他任意键:"<<endl; cin>>e;if(e=='y'||e=='Y'){cout<<"请继续添加职工信息"<<endl;do{worker2 work2;iofile2.write((char*)&work2,sizeof(work2));cout<<"继续添加输'y',推出输'N',回主页输其他任意键:"<<endl; cin>>e2;}while(e2=='y'||e2=='Y');if(e2=='n'||e2=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}else if(e=='n'||e=='N'){exit(1);}else{iofile.close();iofile2.close();return;}}//判断用户有无bool contain(char* ch,fstream &file) {worker2 work(1);file.seekg(0);int flag=0;for(int i=0;i<l2;i++){file.read((char*)&work,sizeof(work)); if(strcmp(ch,work.getn())==0){flag=1;break;}}if(flag==1){return true;}else{return false;}}//获取用户名char* getfname(fstream &file,char* ch) {worker2 work3(1);file.seekg(0);for(int i=0;i<l2;i++){file.read((char*)&work3,sizeof(work3)); if(strcmp(ch,work3.getn())==0){break;}}return work3.getname();}//获取数目long getl(fstream &file){file.seekg(0,ios::end);worker work(1);return (file.tellg())/sizeof(work); } long getl2(fstream &file){file.seekg(0,ios::end);worker2 work(1);return (file.tellg())/sizeof(work); } //获取位置long getl3(char *c,fstream &file) { worker work(1);file.seekg(0);for(int i=0;i<l1;i++){file.read((char *)&work,sizeof(work)); if(strcmp(c,work.getno())==0)break;}return file.tellg()-(long)sizeof(work); }//判断是否已有工资信息bool contain2(char* ch,fstream &file) { worker work(1);file.seekg(0);int flag=0;for(int i=0;i<l1;i++){file.read((char*)&work,sizeof(work)); if(strcmp(ch,work.getno())==0){flag=1;break;}}if(flag==1){return true;}else{return false;}}//获取职工税后工资float getam2(float bm,int am){if(bm<=500){return am-bm*5/100;}else if(bm<=2000){return am-500*5/100-(bm-500)*10/100;}else if(bm<=5000){return am-500*5/100-1500*10/100-(bm-2000)*15/100;}else if(bm<=20000){return am-500*5/100-1500*10/100-3000*20/100-(bm-5000)*20/100;}else if(bm<=40000){returnam-500*5/100-1500*10/100-3000*20/100-20000*20/100-(bm-20000)*25/100;}else if(bm<=60000){returnam-500*5/100-1500*10/100-3000*20/100-20000*20/100-20000*25/100-(bm-40000)*30/100;}else if(bm<=80000){returnam-500*5/100-1500*10/100-3000*20/100-20000*20/100-20000*25/100-20000*30/100-(bm-60000)*35/100;}else if(bm<=100000){returnam-500*5/100-1500*10/100-3000*20/100-20000*20/100-20000*25/100-20000*30/100-20000*35/100-(bm-80000)*40/100;}else{returnam-500*5/100-1500*10/100-3000*20/100-20000*20/100-20000*25/100-20000*30/100-20000*35/100-20000*40/100-(bm-100000)*45/100;}}。
c语言纳税课程设计
c语言纳税课程设计一、教学目标通过本章节的学习,使学生掌握C语言编程的基本方法,能够运用C语言进行简单的数据处理和算法实现。
了解纳税的基本概念和计算方法,能够运用C语言编写简单的纳税计算程序。
培养学生对编程和纳税的兴趣,提高学生的动手能力和实际应用能力。
二、教学内容本章节主要内容包括C语言的基本语法、数据类型、运算符、控制结构、函数等。
通过学习,使学生能够掌握C语言编程的基本方法,并能够运用C语言进行简单的数据处理和算法实现。
同时,介绍纳税的基本概念、税率和计算方法,引导学生运用C语言编写纳税计算程序。
三、教学方法采用讲授法、案例分析法和实验法相结合的教学方法。
首先通过讲授法,向学生介绍C语言的基本语法和编程方法。
然后通过案例分析法,引导学生分析纳税的计算方法,并运用C语言进行编程实现。
最后通过实验法,让学生动手编写纳税计算程序,巩固所学知识。
四、教学资源教材:《C程序设计语言》参考书:《C语言编程实例教程》多媒体资料:C语言编程视频教程实验设备:计算机、编程环境五、教学评估本章节的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生在课堂上的参与程度和提问回答情况,占总评的20%。
作业主要评估学生对纳税计算程序的编写能力,占总评的40%。
考试主要评估学生对C语言编程和纳税知识的掌握程度,占总评的40%。
评估方式客观、公正,能够全面反映学生的学习成果。
六、教学安排本章节的教学安排如下:总共10课时,每课时45分钟。
第1-4课时,讲授C语言的基本语法和编程方法;第5-8课时,介绍纳税的基本概念和计算方法,引导学生编写纳税计算程序;第9-10课时,进行课堂讨论和实验操作。
教学安排合理、紧凑,确保在有限的时间内完成教学任务。
七、差异化教学针对不同学生的学习风格、兴趣和能力水平,本章节将设计差异化的教学活动和评估方式。
对于编程能力较强的学生,可以引导他们进行更复杂的纳税计算程序设计;对于编程能力较弱的学生,可以安排额外的辅导和练习。
c语言工资管理系统课程设计
c语言工资管理系统课程设计一、课程目标知识目标:1. 让学生掌握C语言中数组、结构体、文件操作等基本知识,并能将其应用于工资管理系统。
2. 使学生了解工资管理系统的基本功能需求,如员工信息录入、查询、修改和删除等。
3. 帮助学生理解工资计算方法,包括基本工资、加班工资、税金和实发工资等。
技能目标:1. 培养学生运用C语言设计、编写和调试工资管理系统的能力。
2. 提高学生分析问题、解决问题的能力,使其能够根据实际需求,优化系统功能。
3. 培养学生团队协作和沟通能力,通过分组完成任务,共同完成课程设计。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养其主动学习和探究的精神。
2. 培养学生认真负责的态度,对待课程设计任务,养成良好的编程习惯。
3. 引导学生关注实际应用,理解计算机技术在企业管理中的重要性,提高职业素养。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为C语言课程设计,旨在帮助学生将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
2. 学生特点:学生已经掌握了C语言的基本知识,具有一定的编程基础,但对实际项目开发尚缺乏经验。
3. 教学要求:结合教材内容,以实用性为导向,注重培养学生的实际操作能力和团队协作能力。
二、教学内容1. 教学大纲:a. C语言数组、结构体和文件操作复习b. 工资管理系统功能需求分析c. 工资计算方法及实现d. 系统设计、编码与调试e. 团队协作与项目展示2. 教学内容安排与进度:a. 第一周:复习C语言数组、结构体和文件操作相关知识,讲解工资管理系统项目背景和功能需求。
b. 第二周:分析工资计算方法,引导学生设计系统功能模块,编写系统设计文档。
c. 第三周:根据设计文档,分组进行编码,实现工资管理系统的基础功能。
d. 第四周:优化系统功能,进行系统调试,确保系统稳定运行。
e. 第五周:团队协作,整理项目文档,准备项目展示。
3. 教材章节与内容:a. 数组、结构体和文件操作:教材第3章、第4章、第6章b. 工资管理系统功能需求分析:教材第10章 实践项目案例c. 工资计算方法及实现:教材第7章 循环与分支结构d. 系统设计、编码与调试:教材第8章 函数与模块化编程e. 团队协作与项目展示:教材第12章 软件工程实践4. 教学内容列举:a. 数组、结构体和文件操作:数组的使用、结构体定义和操作、文件读写。
C语言程序设计,纳税工资系统24页word文档
第一章课程设计目的和要求1.1 课程设计的目的C语言一直是程序设计语言的主流之一数据类型丰富、齐全。
C 语言供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型,运算符丰富、齐全,运算能力强。
C 语言提供的运算符为常规运算:常规运算符——算术运算符、逻辑运算符、关系运算符等,这类运算符各种语言一般都具备;进一步巩固《C程序设计》所学的知识,加强语句类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养化程序设计的思想,加深对基本语言要素和结构的理解,锻炼程序设计的能力,以及用C语言解决实际问题的能力。
此课程设计着眼于知识的运用,把平常学的知识运用到实践中来,本身就是考察我们知识运用能力。
要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。
1.2 课程设计实现的要求如今公民纳税意识的增强,需要有方便、简单、快速的工具帮助大家解决工资,个人所得收入的纳税问题。
所以我们可以用程序来实现这个功能,在程序设计中,既可以用传统的程序设计方法,也可以用先进的面向对象程序设计方法。
对应用程序的要求:1、该系统软件可以根据输入的工资数额,得出所需缴纳的税额。
2、得出税后工资;工资g ;税:t;税后工资m;3、显示税率第二章程序设计任务内容用C语言实现一个工资纳税系统,该系统主要应用在个人工资纳税操作中,其中要求能够准确计算出个人工资或收入的所得税,能够查询到一个人的工资所得税,该系统涉及到的加,减,乘等简单运算,课程设计主要是使用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元的部分35 166258超过80000元至100000元的部分40 246259超过100000元的部分 4531625表中的应纳税所得额是指以每月收入额减1600元按公式计算后的余额。
工资管理系统课程设计C语言
工资管理系统 课程设计 C语言一、课程目标知识目标:1. 理解工资管理系统的基本概念和功能需求;2. 掌握C语言中的基本数据类型、运算符、控制结构等编程知识点;3. 学会使用C语言设计并实现一个简单的工资管理系统。
技能目标:1. 能够运用C语言编写出结构清晰、逻辑合理的程序代码;2. 能够运用数组、结构体等数据结构存储和管理工资数据;3. 能够运用文件操作实现工资数据的持久化存储。
情感态度价值观目标:1. 培养学生解决问题的能力和团队协作精神,激发学生对编程的兴趣;2. 增强学生对信息技术的认识,使其意识到信息技术在现实生活中的应用价值;3. 培养学生严谨、认真的学习态度,提高学生的编程素养。
课程性质:本课程为C语言编程实践课,旨在让学生通过动手实践,掌握C语言编程的基本技能,并能够运用所学知识解决实际问题。
学生特点:学生为高年级学生,已具备一定的C语言基础,有较强的逻辑思维能力,但对实际应用场景的编程经验不足。
教学要求:结合学生特点,注重实践操作,引导学生从实际问题出发,逐步培养编程思维,提高编程能力。
课程目标分解为具体学习成果,便于教学设计和评估。
二、教学内容1. 工资管理系统概述- 系统需求分析- 功能模块划分2. C语言基础知识回顾- 数据类型- 运算符与表达式- 控制结构(顺序、分支、循环)3. 数据结构设计- 数组- 结构体4. 函数与模块化编程- 函数定义与调用- 模块化设计5. 文件操作- 文件打开与关闭- 文件读写操作6. 工资管理系统功能实现- 员工信息管理- 工资计算- 工资查询- 数据存储与读取7. 测试与调试- 功能测试- 性能测试- 代码调试教学内容安排与进度:第1周:工资管理系统概述及需求分析第2周:C语言基础知识回顾第3周:数据结构设计第4周:函数与模块化编程第5周:文件操作第6周:工资管理系统功能实现(1)第7周:工资管理系统功能实现(2)第8周:测试与调试教材章节及内容:《C语言程序设计》第3章:数据类型、运算符与表达式第4章:控制结构第6章:函数与模块化编程第7章:数组和字符串第8章:结构体与共同体第9章:文件操作教学内容紧密结合课程目标,注重科学性和系统性,通过以上教学内容,使学生能够掌握C语言编程的核心知识,并能够将其应用于工资管理系统的设计与实现。
c语言课程设计工资纳税
c语言课程设计工资纳税一、教学目标本章节的教学目标是让学生掌握C语言编程基础,能够运用C语言编写简单的工资纳税计算程序。
具体分为以下三个部分:1.知识目标:使学生了解C语言的基本语法和数据类型,掌握基本的输入输出操作,理解函数的定义和调用。
2.技能目标:培养学生运用C语言解决实际问题的能力,能够独立编写并调试工资纳税计算程序。
3.情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习的动力,使其认识到编程在实际生活中的应用价值。
二、教学内容本章节的教学内容主要包括以下几个部分:1.C语言基本语法和数据类型2.输入输出操作3.函数的定义和调用4.工资纳税计算程序的设计与实现三、教学方法为了达到本章节的教学目标,将采用以下几种教学方法:1.讲授法:讲解C语言的基本语法、数据类型和函数的定义等理论知识。
2.案例分析法:分析实际的工资纳税计算案例,引导学生运用C语言解决问题。
3.实验法:让学生动手编写和调试工资纳税计算程序,巩固所学知识。
四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源:1.教材:C语言编程教程,用于为学生提供理论知识的学习。
2.多媒体资料:工资纳税计算案例的视频讲解,用于辅助学生理解实际应用。
3.实验设备:计算机,用于让学生进行编程实践。
五、教学评估本章节的教学评估将采取多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:考察学生在课堂上的参与程度、提问回答等情况,以评价其对知识的掌握和运用能力。
2.作业:布置与工资纳税计算相关的编程作业,评估学生对所学知识的应用能力和编程技巧。
3.考试:进行期中和期末考试,测试学生对C语言编程理论和实践的全面掌握。
评估结果将作为学生成绩的重要依据,同时也将用于指导教师进行教学反思和调整。
六、教学安排本章节的教学安排将根据学生的作息时间、兴趣爱好等因素进行合理规划。
教学进度将保持紧凑,以确保在有限的时间内完成教学任务。
C 工资管理系统源程序
#include "stdafx.h"#include "iostream"#include "string"#include "list"#include "cassert"using namespace std;/*编号、姓名、部门、应付工资、保险、税金、实付工资。
其中实付工资由公式计算得到:实付工资=应付工资- 保险- 税金*/struct employee{string m_num;//编号string m_name;//姓名string m_dep;//部门double m_salary;//应付工资double m_insurance;//保险double m_tax;//税金};/*(1)录入:输入职工数据,其中“实付工资”通过计算得到;(2)删除:删除指定的职工信息(输入姓名,若找到则删除该信息)(3) 修改:允许对已经录入的数据重新进行编辑、修改;(4) 显示:显示全体职工数据;(5)查询:a. 输入职工姓名,显示该职工的全部数据;b. 输入某部门值,显示该部门职工的数据、工资总额、平均工资。
(6) 退出程序。
*/list<employee> emps;int _tmain(int argc, _TCHAR* argv[]){void print(const employee &e);void input();void del();void mod();void show_all();void show_name();void show_dep();cout<<"简易职工薪水管理程序by 做他\n";// delete this linecout<<"版权没有请随意复制或修改任何代码\n";//delete this linecout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:";int choose=0;cin>>choose;assert(!cin.fail());while (choose!=6){if (choose==1) input();if (choose==2) del();if (choose==3) mod();if (choose==4){int choice=0;cout<<"请选择操作1.按姓名查询2.按部门查询3.退出:";cin>>choice;if (choice==1) show_name();if (choice==2) show_dep();if (choice==3){cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:";cin>>choose;assert(!cin.fail());continue;}}if (choose==5) show_all();cout<<"请选择操作:1.录入2.删除3.修改4.查询5.显示所有员工6.退出:"; cin>>choose;assert(!cin.fail());}return 0;}void print(const employee &e){cout<<"编号:"<<e.m_num<<endl;cout<<"姓名:"<<e.m_name<<endl;cout<<"部门:"<<e.m_dep<<endl;cout<<"保险:"<<e.m_insurance<<endl;cout<<"税金:"<<e.m_tax<<endl;cout<<"应付工资:"<<e.m_salary<<endl;cout<<"实付工资:"<<e.m_salary-e.m_insurance-e.m_tax<<endl; }void input(){string num,name,dep;double salary,ins,tax;cout<<"请输入员工编号:";cin>>num;cout<<"请输入员工姓名:";cin>>name;cout<<"请输入员工部门:";cin>>dep;cout<<"请输入员工保险:";cin>>ins;assert(!cin.fail());cout<<"请输入员工税金:";cin>>tax;assert(!cin.fail());cout<<"请输入员工应付工资:";cin>>salary;assert(!cin.fail());employee temp;temp.m_dep=dep;temp.m_insurance=ins;temp.m_name=name;temp.m_num=num;temp.m_salary=salary;temp.m_tax=tax;emps.push_back(temp);cout<<"员工录入操作完毕.\n";}void del(){if (emps.size()==0){cout<<"没有员工记录.\n";return;}string name;bool isfind=false;cout<<"请输入要删除的员工姓名:";cin>>name;list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;emps.erase(iter);cout<<"姓名为\""<<name<<"\"的员工记录已删除.\n";return;}}if (!isfind){cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return;}}void mod(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}bool isfind=false;string name;cout<<"请输入要修改的员工姓名:";cin>>name;list<employee>::iterator iter;for (iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n"; break;}}if (isfind){string num,name,dep;double tax,ins,salary;print(*iter);cout<<endl;cout<<"请输入新的员工编号:";cin>>num;cout<<"请输入新的员工姓名:";cin>>name;cout<<"请输入新的员工部门:";cin>>dep;cout<<"请输入新的员工保险:";cin>>ins;assert(!cin.fail());cout<<"请输入新的员工税金:";cin>>tax;assert(!cin.fail());cout<<"请输入新的员工工资:";cin>>salary;assert(!cin.fail());iter->m_dep=dep;iter->m_insurance=ins;iter->m_name=name;iter->m_num=num;iter->m_salary=salary;iter->m_tax=tax;cout<<"1 员工记录被成功修改.\n";}else{cout<<"没有找到姓名为\""<<name<<"\"的员工记录.\n"; }}void show_all(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}cout<<"显示全体员工数据:\n";cout<<"--------------------\n";list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++){cout<<endl;print(*iter);cout<<endl;}cout<<"--------------------\n";}void show_name(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}bool isfind=false;string name;cout<<"请输入要查询的员工姓名:";cin>>name;list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++){if (iter->m_name==name){isfind=true;cout<<"姓名为\""<<name<<"\"的员工记录已找到.\n";print(*iter);break;}}if (!isfind){cout<<"没有找到姓名为\""<<name<<"\"的员工.\n"; return;}}void show_dep(){if (emps.size()==0){cout<<"员工记录为空.\n";return;}double isfind=0.00;double total_salary=0.00;string dep;cout<<"请输入要查询的部门名称:";cin>>dep;cout<<"部门["<<dep<<"]的员工信息:\n";cout<<"--------------------\n\n";list<employee>::iterator iter;for(iter=emps.begin();iter!=emps.end();iter++) {if (iter->m_dep==dep){isfind++;total_salary+=iter->m_salary;print(*iter);cout<<endl;continue;}}cout<<"--------------------\n";if (isfind==0){cout<<"没有找到名称为["<<dep<<"]的部门.\n"; }else{cout<<"部门["<<dep<<"]工资统计:\n";cout<<"工资总额:"<<total_salary<<endl;cout<<"平均工资:"<<total_salary/isfind<<endl; }}。
c语言课程设计工资管理系统
c语言课程设计工资管理系统一、教学目标本章节的教学目标是使学生掌握C语言的基本语法,能够运用C语言编写简单的工资管理系统程序。
具体分为以下三个部分:1.知识目标:使学生掌握C语言的数据类型、变量、运算符、控制结构、函数等基本语法知识。
2.技能目标:培养学生运用C语言进行程序设计的能力,使学生能够独立编写并调试简单的工资管理系统程序。
3.情感态度价值观目标:培养学生对计算机科学的兴趣和好奇心,提高学生解决问题的能力,培养学生的团队协作意识。
二、教学内容本章节的教学内容主要包括C语言的基本语法、数据类型、变量、运算符、控制结构、函数等。
具体安排如下:1.C语言的基本语法和编程环境:介绍C语言的编程规范,熟悉集成开发环境(如Visual Studio、Code::Blocks等)。
2.数据类型、变量和运算符:整型、浮点型、字符型数据,变量的声明和初始化,算术运算符、关系运算符、逻辑运算符等。
3.控制结构:顺序结构、选择结构(if-else)、循环结构(for、while、do-while)等。
4.函数:函数的定义和声明,调用函数,函数的返回值,函数的参数传递等。
5.工资管理系统实例:设计并实现一个简单的工资管理系统程序,包括员工信息的录入、工资的计算和输出等功能。
三、教学方法本章节的教学方法采用讲授法、案例分析法和实验法相结合的方式进行。
具体安排如下:1.讲授法:讲解C语言的基本语法、数据类型、变量、运算符、控制结构、函数等知识点,让学生系统地掌握C语言的基础知识。
2.案例分析法:通过分析实际的工资管理系统案例,让学生了解并掌握如何运用C语言解决实际问题。
3.实验法:让学生动手编写并调试工资管理系统程序,培养学生的实际编程能力和解决问题的能力。
四、教学资源本章节的教学资源包括教材、参考书、多媒体资料和实验设备等。
具体安排如下:1.教材:选用权威、实用的C语言教材,如《C程序设计语言》(K&R)、《C Primer Plus》等。
C++程序设计工资纳税系统
河北工业大学计算机软件技术基础(VC)2012年课程设计报告学院机械工程学院班级车辆122班姓名孙洋洋学号 120299成绩____一、题目:工资纳税系统二、设计思路1、总体设计工资纳税系统包括录入职工信息(每位职工的信息包括:职工编号、姓名、基本工资、津贴、补贴、应发工资、个人所得税、实发工资)并能计算税金;同时能对职工工资新信息编辑(插入或删除)、查询、排序等管理功能。
纳税管理系统可利用菜单(界面制作switch语句)使用户选择各个功能模块1.录入职工信息2.计算税金3.添加职工信息4.删除职工信息5.按职工编号进行信息查询6. 按个人所得税排序7. 退出而后可根据不同的选项进入到不同的功能模块进行执行。
2、各功能模块的设计:说明各功能模块的实现方法。
1)strcpy模块用jb替代基本工资,jt替代津贴,bt替代补贴,yf替代应发工资,shj 替代个人所得税,通过struct函数创建结构体数组 Worker w[50].以便分类。
2)Switch模块通过Switch-case语句,完成了程序的总分结构,在目录中可以选择1到7的数字,实现不同的功能。
3)各个分结构的创建。
利用多个循环for函数,实现工资的输入输出,修改,插入等。
利用if函数,实现个人所得税的计算。
其中使用了简单的冒泡法。
各个功能模块如下:3、设计中的主要困难及解决方案三、程序清单#include<iostream.h>#include<string.h>#include<fstream.h>#include<stdlib.h>#include<iomanip.h>const int T=50;struct worker{char name[10];int num;double jb;double jt;double bt;double yf;double shj;double shf;}w[50];void main(){int n; //主函数int x;int i=0,k1,k;int j=0;int flag=0;while(p!='7'){cout<< " 欢迎进入工资纳税系统"<<endl;cout<< " "<<endl;cout<< " "<<endl;cout<< " ***************** "<<endl;cout<< " ***1.录入职工信息***"<<endl;cout<< " ***2.计算税金***"<<endl;cout<< " ***3.添加职工信息***"<<endl;cout<< " ***4.删除职工信息***"<<endl;cout<< " ***5.按职工编号进行信息查询***"<<endl;cout<< " ***6.按个人所得税排序***"<<endl;cout<< " ***7.退出系统***"<<endl;cout<< "******************"<<endl;cout<< "选择1-7数字进行操作"<<endl;cin>>p;switch(p)case'1':cout<<"输入职工人数"<<endl;cin>>n;for(i=0;i<n;i++){cout<<" 姓名:";cin>>w[i].name;cout<<" 职工编号:";cin>>w[i].num;cout<<" 基本工资";cin>>w[i].jb;cout<<" 津贴:";cin>>w[i].jt;cout<<" 补贴:";cin>>w[i].bt;}break;case'2':for(i=0;i<n;i++){w[i].yf=w[i].jb+w[i].jt+w[i].bt;if(w[i].yf<=5000)w[i].shj=0;else if(w[i].yf<=8000)w[i].shj=(w[i].yf-5000)*0.05;else if(w[i].yf<=10000)w[i].shj=(w[i].yf-8000)*0.1+150;else if(w[i].yf<=12000)w[i].shj=(w[i].yf-10000)*0.15+350;elsew[i].shj=(w[i].yf-12000)*0.2+650;cout<<w[i].name<<"\t"<<w[i].num<<"\t"<<w[i].shj<<endl;}break;case'3':cout<<"添加职工信息数:"<<endl;int n2;cin>>n2;for(i=n;i<n+n2;i++){ cout<<"姓名"<<endl;cin>>w[i].name;cout<<"编号"<<endl;cin>>w[i].num;cout<<"基本工资"<<endl;cin>>w[i].jb;cout<<"津贴"<<endl;cin>>w[i].jt;cout<<"补贴"<<endl;cin>>w[i].bt;}n+=n2;break;case'4':cout<<"删除职工数:"<<endl; int n3;cin>>n3;for(j=0;j<n3;j++)cout<<"编号"<<endl;int k3;cin>>k3;worker sp;for(i=0;i<n;i++)if(w[i].num==k3)for(k=i;k<n-1;k++){sp=w[k];w[k]=w[k+1];w[k+1]=sp;n--;}break;case'5':cout<<"输入职工编号";cin>>x;for(i=0;i<n;i++)if(w[i].num==x)cout<<"姓名"<<w[i].name<<"应发工资"<<w[i].yf<<"个人所得税"<<w[i].shj;break;case '6':worker sq;for(i=0;i<n-1;i++)for(j=0;j<n-i-1;j++)if(w[j].shj>w[j+1].shj){sq=w[j];w[j]=w[j+1];w[j+1]=sq;}for( k=0;k<n;k++)cout<<w[k].name<<'\t'<<w[k].num<<'\t'<<w[k].shj<<endl;break;}}}四、对该设计题目有何更完善的方案1、对自己完成程序进行自我评价。
c语言课程设计报告-工资管理系统 精品
课程设计报告商贸学院课程设计任务书5 设计题目:工资管理系统学生姓名课程名称C程序设计课程设计专业班级自普本20XX-1 自应本20XX-1地点I302/304 起止时间20XX.6.30-20XX.7.11设计内容及要求主要利用c语言的文件操作能力设计开发一个小型的管理信息系统,至少具有如下功能:工资录入,按人名、基本工资、实发工资、个人所得税进行查询和按部门进行分类统计。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。
设计参数文件记录的字段数量不少于6个,分类统计中统计的项不少于2个。
进度要求1. 布置设计题目,讲解要求和说明 20XX.6.302. 确定设计任务,确定具体的功能,熟悉相关知识 20XX.7.13. 按功能需求确定程序的主要模块 20XX.7.24. 编程实现程序的功能 20XX.7.3 - 20XX.7.45. 调试并完善程序 20XX.7.7 - 20XX.7.86. 撰写课程设计报告 20XX.7.97. 提交课程设计报告并答辩 20XX.7.10- 20XX.7.11参考资料《C程序设计经典教程》清华大学出版社 20XX.3 《C陷阱与缺陷》人民邮电出版社 20XX.2其它说明1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
目录摘要 (1)1设计内容、任务及具体要求 (2)1.1设计内容 (2)1.2设计任务及具体要求 (2)2概要设计 (3)2.1该系统的功能简介 (3)2.2 总体程序框图 (3)2.3各个模块之间的主要关系 (4)3系统功能模块的具体设计 (5)3.1各个模块的程序流程图及运行界面 (5)3.2对关键代码加以分析说明 (15)4程序调试分析 (23)5程序使用说明 (24)6总结 (25)致谢 (26)参考文献 (27)附:源程序 (28)1 设计内容、任务及具体要求1.1设计内容《工资管理查询系统》主要根据课程设计要求进行设计,并了解了公司的职工的工资工作流程,该系统功能主要包括六大模块:1)职工个人说得税的计算模块,根据工资多余5000,在1000—5000之间,少余1000三种情况进行计算。
关于工资纳税系统的C课程设计
目录一、课程设计问题描述 (2)1、课程设计题目 (2)2、设计任务要求 (2)二、总体设计 (2)1、设计中应注意的问题 (2)2、程序设计流程图 (2)三、详细设计 (4)1、设计思想 (4)2、函数说明 (4)3、程序代码 (4)四、程序运行结果测试与分析 (6)1、程序调试运行后 (6)2、输入工资1500的运行结果 (6)3、输入工资1600的运行结果 (6)4、输入工资2500的运行结果 (6)五、结论与心得 (6)六、参考文献 (6)一、课程设计问题描述1、课程设计题目工资纳税系统:个人所得税每月交一次,底线是1600元/月,也就是超过了1600元的月薪才开始计收个人所得税。
个人所得税税率表一(工资、薪金所得适用)级数----------全月应纳税所得额----------税率(%)1--------------不超过500元的--------------------------52----------超过500元至2000元的部分------------103----------超过2000元至5000元的部分----------154----------超过5000元至20000元的部分---------205----------超过20000元至40000元的部分-------256----------超过40000元至60000元的部分-------307----------超过60000元至80000元的部分-------358----------超过80000元至100000元的部分------409----------超过100000元的部分---------------------45表中的应纳税所得额是指以每月收入额减除1600元后的余额。
例如:计算为:2500-1600=900应纳个人所得税额=500×5%+400×10% =65再比如:我们用一个大额工资计算,25000元应纳税所得额=25000-1600=23400应纳个人所得税税额=500×5%+1500×10%+3000×15%+15000×20%+3400×25%=44752、设计任务要求输入工资计算出纳税金额二、总体设计1、设计中应注意的问题此问题最大的难题在于计算应纳税金额,因为纳税金额的计算是在超出1600元之后进行的。
C语言课程设计工资管理系统
界面布局:检查界面布局是否合理,是否符合用户习惯 功能测试:测试各个功能模块是否正常工作,是否有错误提示 性能测试:测试系统的响应速度和稳定性,是否有卡顿现象
兼容性测试:测试系统在不同操作系统和浏览器上的兼容性,是否有显示异常
员工信息录入:包括姓名、性别、年龄、 职位、薪资等信息
员工信息删除:删除不再需要的员工信 息
测试目的:验 证系统功能是 否符合设计要
求
测试内容:功 能测试、性能 测试、安全性
测试等
测试方法:黑 盒测试、白盒 测试、灰盒测
试等
测试结果:列 出测试过程中 发现的问题及
解决方案
测试结论:对 系统的整体性 能和稳定性进
行评估
测试建议:针 对测试中发现 的问题提出改
进建议
硬件要求:服务器、网络设备、存 储设备等
部署步骤:安装操作系统、安装数 据库管理系统、安装Web服务器、 部署工资管理系统等
添加标题
添加标题
添加标题
添加标题
软件要求:操作系统、数据库管理 系统、Web服务器等
维护方案:定期备份数据、定期检 查系统运行情况、定期更新系统软 件等
系统运行环境:Windows、Linux等操作系统 硬件要求:CPU、内存、硬盘等 软件安装:安装C语言编译器、数据库管理系统等 系统维护:定期备份数据、更新软件、修复漏洞等
升级方式:自动升级或手动升级 升级内容:功能升级、性能升级、安全升级等 扩展方式:插件扩展、模块扩展、功能扩展等 扩展内容:增加新功能、优化性能、提高安全性等
汇报人:
排序算法:快速排序、归并排序、 堆排序等
图算法:最短路径、最小生成树等
添加标题
添加标题
添加标题
添加标题
C语言课程设计报告—工资信息管理系统
C 语言程序设计编程实践是学习C语言程序设计的一重要环节,为提高学生程序设计能力,通过课堂和上机实践练习使学生的程序设计能力上一台阶。
通过前四单元温顾而知新、庖丁解牛、举一反三、熟能生巧等过程的练习设计下面一个完整的程序。
1、题目要求设计“工资信息管理系统”要求:该系统能够实现工资信息管理。
系统包括录入,浏览,查询,统计等功能。
录入功能要求:能够添加新的工资信息到文件;浏览功能要求:能够按照工资卡号,姓名分类浏览,提供分屏显示;有排序功能,排序后按照工资卡号升序或实发工资降序输出;查询功能要求:能够按照工资卡号,姓名查询;统计功能要求:能够按照月份累计统计某职工在某时间段发工资总金额。
职工数据如下:姓名银行卡号月份应发工资水费电费税金实发工资wanglei 05507101 6 5000.00 25.00 35.00 360.00 4580.00wanglei 05507101 7 5100.00 20.00 40.00 370.00 4670.002、分析:根据题目要求,应当把职工工资信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现职工工资浏览,查询,统计等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。
3、总体设计:根据题目要求,可以将系统分为六个模块:1)职工工资信息浏览模块;2)添加工工资信息模块;3)统计职工工资总合模块;4)按名字查询职工工资信息模块;5)按卡号查询职工工资信息模块;6)功能选择4、详细设计:#include<iostream.h>#include<stdio.h>#include<stdlib.h>#include<string.h>//头函数名/*********职员工资信息结构体*********//***包括职工的姓名、银行卡好、工作月份、应发工资、实发工资、水费、电费、税***/ struct staff//职员工资信息结构体{char Name[10];char CardNumber[10];int Month;float APWages; float Water; float Electrical; float Tax; };FILE *fp;//定义文件指针===全局变量 struct staff temp;void printf_face()//输出函数 { printf("\n 姓名 银行卡号 月份 应发工资 水费 电费 税 实发工资 \n ");printf("%s %s %d %.2f %.2f %.2f %.2f %.2f\n",,temp.CardNumber,temp.Month,temp.SPWages,temp.Water,temp.Electrical,temp.Tax,temp.APWages);}一、/**********浏览职工工资信息==模块*********/void PrintInformation()//浏览职工工资信息{struct staff temp;if((fp=fopen("wages","rb"))==NULL) { printf("cannot open the file!"); exit(0);}while(fread(&temp,sizeof(struct staff),1,fp)==1) fclose(fp); }二、/**********添加职工工资信息==模块void Increase()//添加职工工资信息 {if((fp=fopen("wages","ab+"))==NULL) { printf("cannot open the file!"); exit(0);}printf("\n 请输入要==添加的工资信息: \n");printf("\n 姓名 银行卡号 月份 应发工资&temp.Electrical); if(temp.SPWages<=800) temp.Tax=0;if((temp.SPWages>800.0)&&(temp.SPWages<1400.0))temp.Tax=(temp.SPWages-800)*0.05;if(temp.SPWages>1400){temp.Tax=(temp.SPWages-1400)*0.1;} fwrite(&temp,sizeof(struct staff),1,fp); fclose(fp);}/***计算税金并添加到文件相应结构体中***/三、/*********统计某职工工资总合==模块void Statistics()//统计某职工工资总合 {struct staff temp; char tempname[10]; float sum=0;int monthstart=0,monthover=0;printf("\n 输入姓名 起始月份 终止月份 if((fp=fopen("wages","rb"))==NULL) {printf("cannot open the file!")}while(fread(&temp,sizeof(struct staff),1,fp)==1) { if(strcmp(,tempname)==0)/******判断是否是该职工******/ { if(temp.Month>=monthstart&&temp.Month<=monthover) { sum+=temp.APWages;}}}printf("%d 月到 %d 月的工资总和fclose(fp); }四、/*********按名字查询某职工工资信息==模块void NameSearch()//按名字查询某职工工资信息 {char tempname[10]; struct staff temp;printf("\n 输入姓名:"); scanf("%s",tempname);if((fp=fopen("wages","rb"))==NULL) {printf("cannot open the file!"); exit(0); }while(fread(&temp,sizeof(struct staff),1,fp)==1) /*** { if(strcmp(,tempname)==0) /** { printf_face();}}fclose(fp);}五、/********按卡号查询某职工工资信息==模块void CardNumberSearch()//按卡号查询某职工工资信息 {char tempCardNumber[10];printf("\n 输入卡号:");scanf("%s",tempCardNumber);if((fp=fopen("wages","rb"))==NULL){printf("cannot open the file!");exit(0);}while(fread(&temp,sizeof(struct staff),1,fp)==1) /***读文件中资料**/{if(strcmp(temp.CardNumber,tempCardNumber)==0) /**判断是否是该卡号**/{printf_face();}}fclose(fp);六、/**********职工工资信息查询==模块int Search(){int n;while(1){printf("\n1. 按照卡号查询: \n ");printf("\n2. 按照姓名查询: \n ");printf("\n0. 返回上级目录: \n");scanf("%d",&n);switch(n){case 1:CardNumberSearch();break;case 2:NameSearch();break;case 0:return 0;break;}}}七、/***************功能选择==模块***********/void ShowMenu(){while(1){ Array printf("1. 添加工资信息: \n");printf("2. 浏览工资信息: \n" );printf("3. 统计工资信息: \n" );printf("4. 查询工资信息: \n");printf("0. 退出系统: " );scanf("%d",&n);switch(n){case 1:Increase();break;case 2:PrintInformation();break;case 3:Statistics();break;case 4:Search();break;case 0:exit(0);break;}}}/***************主函数*************/ void main(){ShowMenu();}运行结果可以达到要求的目的。
C语言课程设计报告-工资管理系统
C语言课程设计报告-工资管理系统一.系统功能设计一个职工工资管理系统,其功能包括:(1)职工基本工资信息录入包括工号,姓名,应发工资,奖金,扣款,应发工资,扣税,实发工资。
(2)职工基本工资信息保存(3)职工基本工资信息查询按照工号查询按照姓名查询(4)职工基本工资信息显示在屏幕上显示所有的职工基本工资信息。
(5)职工基本工资信息更新能够实现修改,删除,插入,排序功能。
(6)职工基本工资信息统计统计公司员工工资在各等级的人数主界面系统主界面应有如下功能选项录入职工基本工资信息查询职工基本工资信息保存职工基本工资信息删除职工基本工资信息插入职工基本工资信息修改职工基本工资信息统计职工基本工资信息排序职工基本工资信息显示职工基本工资信息退出代码如下:#incl ude <stdio.h>typed ef st ructemplo yee{ char num[10]; //保存职工编号 char name[15]; //保存职工姓名 floa t jbg z; //保存职工基本工资f loatjj; //保存职工奖金f loatkk; //保存职工扣款float yfgz; //保存职工应发工资 fl oat s k; //保存职工税款f loatsfgz; //保存职工实发工资}ZG GZ;voidmenu(){ pr intf(" Empoy ee Sy stem\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf(" *1 i nputr ecord *2 dele te recor d\n");print f(" *3 sear ch reco rd *4 mo dify rec ord\n"); pri ntf("*5 in sert re cord *6countr ecord\n");p rintf(" *7sortrecor d *8 sav e reco rd\n"); prin tf("*9 dis play rec ord *0 q uit re cord\n"); pr intf("--<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@ --<-<-<@--<-<-<@\n"); pr intf("Plea se en ter y ou ch oice(0-9)\n");}i nt in put(Z GGZ a[],in t k){ intj,x; ch ar st r[10];j=x=0;while(1) {p rintf("----------------------------\n"); prin tf("请输入职工的编号:(按0返回主菜单)"); sc anf("%s",s tr); str cpy(a[k].n um,st r);f or(j=0;j<k;j++) {if(st rcmp(a[j].num,s tr)==0){ prin tf("已经有工号为%s的员工信息!请重新输入员工号。
C语言程序设计基础课程设计工资系统报告
C语言程序设计基础课程设计工资系统报告目录一、需求分析-------------------------------------2二、概要设计-------------------------------------2三、详细设计-------------------------------------4四、调试分析-------------------------------------4五、用户手册-------------------------------------5六、测试数据-------------------------------------6七、程序代码------------------------------------14第1页一、需求分析1.第一步,依据身份进行登录,管理员和职工所能进行的操作不同,具备较高安全性,同时用户可根据需要修改自己的密码,管理员还可添加和删除用户,首次使用时不存在用户,管理员可进行注册,注册成功后再进入使用。
2. 多职工信息进行操作时,建立动态链表,每个节点包含一个职员的工号、姓名、工资等全部信息,通过链表构建一个完整的职工信息库,链表具备录入、删除、修改、查询及统计功能,各功能显示在菜单中,由主函数分别调用。
3. 为了避免一个函数体过长,进行细化子函数,小型子函数在各个主调函数里多次调用,便于使用。
4. 以可读可写可追加方式新建一个文本文件,用于存储链表里所有节点上包含的信息,将节点信息导入文件时,从头指针开始,依次写入。
5. 查询、修改、删除、职工信息时,调用子函数以只读方式打开系统库文件,并将文件从头至尾读取一遍,每次读取一个节点的长度,将每次读取到的信息依次导入到链表的节点中去,再对链表进行所需功能的操作。
修改和删除完成后,将整个链表包含的信息重新写入文件,写入之前打开系统库文件同时进行格式化。
6. 统计职工最高、最低工资及工资均方差时,以同时方式将职工工资等信息导入到链表中,然后以子菜单的形式输出统计的项目,包括各部门和全公司以及最高、最低工资和工资均方差。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章课程设计目的和要求1.1 课程设计的目的C语言一直是程序设计语言的主流之一数据类型丰富、齐全。
C 语言供了整数、实数、字符、字符串等基本数据类型,还提供数组、指针、结构体等构造数据类型,运算符丰富、齐全,运算能力强。
C 语言提供的运算符为常规运算:常规运算符——算术运算符、逻辑运算符、关系运算符等,这类运算符各种语言一般都具备;进一步巩固《C程序设计》所学的知识,加强语句类型的应用,熟悉面向过程的结构化和面向对象可视化程序设计方法,培养化程序设计的思想,加深对基本语言要素和结构的理解,锻炼程序设计的能力,以及用C语言解决实际问题的能力。
此课程设计着眼于知识的运用,把平常学的知识运用到实践中来,本身就是考察我们知识运用能力。
要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。
1.2 课程设计实现的要求如今公民纳税意识的增强,需要有方便、简单、快速的工具帮助大家解决工资,个人所得收入的纳税问题。
所以我们可以用程序来实现这个功能,在程序设计中,既可以用传统的程序设计方法,也可以用先进的面向对象程序设计方法。
对应用程序的要求:1、该系统软件可以根据输入的工资数额,得出所需缴纳的税额。
2、得出税后工资;工资g ;税:t;税后工资m;3、显示税率第二章程序设计任务容用C语言实现一个工资纳税系统,该系统主要应用在个人工资纳税操作中,其中要求能够准确计算出个人工资或收入的所得税,能够查询到一个人的工资所得税,该系统涉及到的加,减,乘等简单运算,课程设计主要是使用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元的部分 35 166258 超过80000元至100000元的部分 40 246259 超过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所示(4)对应代码#include<stdio.h>int main(){int g,c,j=1600;floatd1=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 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 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 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 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 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 限制条件在输入值时必须按照程序所规定的输入,否则将运行错误或无法运行。