已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计题目:企业职工工资管理系统班 级:计0905班姓 名:邹林华学 号:20091221570完成日期:2010年10月1.课程设计目的和要求工资管理需要和人事管理相联系,同时连接考勤记录等,来生成企业每个职工的实际发放工资,同时完成对每个文件的创建、增加、删除、修改、查询等操作2.课程设计任务内容 1. 创建职工人事基本信息文件,根据提示输入职工的各项信息,按职工编号对职工信息进行排序,并将排序后的职工信息存储到一个文件中。2. 创建职工考勤记录文件(每个月1个文件),其中职工编号和姓名从人事信息文件中拷贝,考勤时间(年.月)和出勤天数输入。3. 创建职工的工资信息文件(每个月1个文件),其中职工编号和姓名从人事信息文件中拷贝,其他工资组成项目按下面方法计算:职务工资:助工=720*(1+任现职年限*2%); 工程师=960*(1+任现职年限*3%);高级工程师=1350*(1+任现职年限*5%)职务补贴=职务工资*25% 住房补贴=(职务工资+职务补贴)*15%考勤管理奖:若出勤天数=20,考勤奖=10*出勤天数若10=出勤天数20,考勤奖=5*出勤天数若出勤天数10,考勤奖=0应发工资=职务工资+职务补贴+住房补贴+考勤管理奖个人所得税=(应发工资-所得税起征点)*税率-速算扣除数养老保险=(职务工资+职务补贴)*10% 住房公积金=应发工资*5%实发工资=应发工资-个人所得税-养老保险-住房公积金4. 增加职工人事基本信息,在原有职工人事基本信息文件的基础上增加新的职工信息,要求:增加后的职工信息仍按编号排序,并继续保存至原文件。5. 删除职工人事基本信息,提示用户输入要进行删除操作的职工编号,如果在文件中有该信息存在,则将该编号所对应的职工信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。6. 修改职工人事基本信息,提示用户输入要进行修改操作的职工编号,如果在文件中有该息存在,则提示用户输入要修改的选项(职称、任现职年限),结果保存至原文件,并提示用户选择是否继续进行修改操作。7. 输入一个时间(年.月),输出该月份的职工的工资信息。注意:计算职工工资时,应从最新的职工人事信息文件中提取数据。8. 按不同条件进行查询操作,输出满足条件的职工工资信息。(1) 按职工编号查询,输入一个编号,输出对应的职工工资信息。(2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。(3) 输入一个时间(年.月),在考勤记录文件中查询当月全勤的职工,并输出他们的姓名。9. 按不同条件对职工工资信息进行统计工作。(1) 统计各职称岗位的职工人数是多少,计算高级工程师的比例。(2) 计算企业职工的平均实发工资,并输出。(3) 统计职工工资低于平均工资的人数,并输出他们的姓名和实发工资。3详细设计说明1、main函数:通过对各个函数的调用,最终实现各种功能2、 opemp():/对职工人事基本信息操作3、void opexa();/对考勤记录文件操作4、void opsal();/对工资信息文件操作5、int loademps();/创建人事基本信息6、int createxa();/创建考勤信息7、int creatsal();/创建工资信息8、void inputoneemp(int i);/输入一个职工信息9、int allemps();/显示所有职工的工资信息10、int addemp();/增加职工人事信息11、int delemp();/删除职工人事基本信息12、void modifyemp();/修改职工人事基本信息13、void searaexa();/找全勤的职工14、void searbnum();/按编号查询职工的工资信息15、void searbnamej();/按姓名精确查询职工的工资信息16、void searbnamem();/按姓名模糊查询职工的工资信息17、void searbtime();/按时间查询职工的工资信息18、void counttit();/统计各职称岗位的人数及计算高级工程师的比例19、void countrealsal();/计算平均实发工资20、void countlowsal();/统计工资低于平均工资的人数并输出4软件使用说明该程序可完成对职工工资的管理5. 课程设计心得与体会通过这次设计,综合应用C语言所学内容,深化之前知识,认识到编程序一定要有扎实的基础,不断改进,不断实践来完善程序!写程序一定要多练习!6. 参考文献百度C程序设计7. 附录:部分程序清单(带有较详细的注释)#include#include#include#define N 10/职工人数的最大数#define SEMP_LEN sizeof(struct employ)#define SEXA_LEN sizeof(struct examine)#define SSAL_LEN sizeof(struct salary)int en=0,an=0,sn=0;int bn=0,cn=0;double avesal;struct dateint year;int month;DATN,DAN,SDATE;struct employint num;char name6;char sex5;struct date bor_time;/出生日期char title10;int term;/现任职年限empN,SEMP;struct examineint num;char name6;struct date exa_time;/考勤时间int work;/出勤天数exaN,SEXA;struct salaryint num;char name6;double postsal;/职务工资double postsub;/职务补贴double housesub;/住房补贴double manageaward;/考勤管理奖double shouldsal;/应发工资double persontax;/个人所得税double oldinsure;/养老保险double housesave;/住房公积金double realsal;/实发工资salN,SSAL;char exanameN6;char salnameN6;void opemp();/对职工人事基本信息操作void opexa();/对考勤记录文件操作void opsal();/对工资信息文件操作int allemps();/显示所有职工的工资信息int loademps();/创建人事基本信息int createxa();/创建考勤信息int creatsal();/创建工资信息void inputoneemp(int i);/输入一个职工信息int addemp();/增加职工人事信息int delemp();/删除职工人事基本信息void modifyemp();/修改职工人事基本信息void searaexa();/找全勤的职工void searbnum();/按编号查询职工的工资信息void searbnamej();/按姓名精确查询职工的工资信息void searbnamem();/按姓名模糊查询职工的工资信息void searbtime();/按时间查询职工的工资信息void counttit();/统计各职称岗位的人数及计算高级工程师的比例void countrealsal();/计算平均实发工资void countlowsal();/统计工资低于平均工资的人数并输出void main()char c;FILE *fp;int o=0;printf(是否要初始化en(y/n)?n);c=getchar();getchar();if(c=y|c=Y)fp=fopen(emp.txt,rb);while(!feof(fp)fread(&empo,SEMP_LEN,1,fp);o+;en+;en-;fclose(fp);printf(n);printf(t-n);printf(t* *n);printf(t *n);printf(t* *n);printf(t* 企业职工工资管理系统 *n);printf(t* *n);printf(t *n);printf(t* *n);printf(t-nn);int select;while(1)printf(t 1.职工人事基本信息文件 n);printf(t 2.职工考勤记录文件 n);printf(t 3.职工工资信息文件n);printf(t 0.退出系统nn);printf(t 请选择用户:);scanf(%d,&select);getchar();switch(select)case 1:opemp();break;case 2:opexa();break;case 3:opsal();break;case 0:printf(n谢谢使用!再见!n);exit(1);default :printf(n按键错误,请重新选择!n); void opemp()int select;while(1)printf( 1.增加职工人事信息n);printf( 2.删除职工人事信息n);printf( 3.修改职工人事信息n);printf( 4.创建职工人事信息n);printf( 5.显示职工人事信息n);printf( 0.返回主菜单n);printf(n请选择您需要的服务(0-5):);scanf(%d,&select);getchar();switch(select)case 1:en=addemp();break;case 2:en=delemp();break;case 3:modifyemp();break;case 4:en=loademps();break;case 5:allemps();break;case 0:return;default:printf(n按键错误,请重新选择!n);void opexa()int select;while(1)printf( 1.创建职工考勤记录文件n);printf( 2.查找全勤的职工n);printf( 0.返回主菜单n);printf(n请选择您需要的服务(0-2):);scanf(%d,&select);getchar();switch(select)case 1:an=createxa();break;case 2:searaexa();break;case 0:return;default :printf(n按键错误,请重新选择!n);void opsal()int select;int flag;while(1)printf( 1.查询n);printf( 2.统计n);printf( 3.创建职工工资信息文件n);printf( 0.返回主菜单n);printf(n请选择您需要的服务(0-3):);scanf(%d,&select);getchar();switch(select)case 1:printf(n按职工编号查询请按1n按姓名精确查询请按2n按姓名模糊查询请按3n按时间查询请按4n);scanf(%d,&flag);getchar();if(flag=1) searbnum();if(flag=2) searbnamej();if(flag=3) searbnamem();if(flag=4) searbtime();else printf(n按键错误,请重新选择!n);continue;break;case 2:printf(n统计各职称岗位的职工人数并计算高级工程师的比例请按1n计算企业职工的平均实发工资请按2n统计职工工资低于平均工资的人数并输出他们的姓名和实发工资请按3n);scanf(%d,&flag);getchar();if(flag=1) counttit();if(flag=2) countrealsal();if(flag=3) countlowsal();else printf(n按键错误,请重新选择!n);continue;break;case 3:sn=creatsal();break;case 0:return;default:printf(n按键错误,请重新选择!n);void inputoneemp(int i)printf(n编号 姓名 性别 出生日期 职称 现任职年限n);scanf(%d %s %s %d %d %s %d,&empi.num,,empi.sex,&empi.bor_time.year,&empi.bor_time.month,empi.title,&empi.term);int loademps()FILE *fe;int i;int number;int a,b,k;struct employ people;if(fe=fopen(emp.txt,wb)=NULL)printf(cannot open this filen);exit(0);printf(请输入您要建立的职工人数:);scanf(%d,&number);for(i=0;inumber;i+)printf(n编号 姓名 性别 出生日期 职称 现任职年限n);scanf(%d%s%s%d%d%s%d,&empi.num,,empi.sex,&empi.bor_time.year,&empi.bor_time.month,empi.title,&empi.term);en+;for(a=0;aen-1;a+)k=a;for(b=a+1;bempb.num)k=b;if(k!=a)people=empk;empk=empa;empa=people;for(i=0;ien;i+)printf(n编号 姓名 性别 出生日期 职称 现任职年限n);printf(%d %s %s %d %d %s %d,empi.num,,empi.sex,empi.bor_time.year,empi.bor_time.month,empi.title,empi.term);fwrite(emp,SEMP_LEN,en,fe);printf(n创建成功!n);fclose(fe);return(en);int allemps()int i;FILE *fe;if(fe=fopen(emp.txt,rb+)=NULL)printf(cant open file emp.txtn);exit(1);fread(emp,SEMP_LEN,en,fe);fclose(fe);for(i=0;ien;i+)printf(n编号 姓名 性别 出生日期 职称 现任职年限n);printf(%d %s %s %d %d %s %d,empi.num,,empi.sex,empi.bor_time.year,empi.bor_time.month,empi.title,empi.term);printf(n);if(fe=fopen(emp.txt,wb+)=NULL)printf(cant open file emp.txtn);exit(1);fwrite(emp,SEMP_LEN,en,fe);printf(n按任意键继续!n);getchar();fclose(fe);return(en);int creatsal()FILE *fs,*fs1;char ass20,eng20,sen20;int sn=0;int i;printf(请输入时间(年 月):);scanf(%d %d,&DAcn.year,&DAcn.month);if(fs=fopen(emp.txt,rb)=NULL)printf(cant open file emp.txtn);exit(0);fread(emp,SEMP_LEN,en,fs);fclose(fs);printf(请输入文件名(sal));scanf(%s,salnamecn);if(fs1=fopen(salnamecn,wb)=NULL)printf(cant open this file sal.txtn);return (sn);strcpy(ass,zhg);strcpy(eng,gchsh);strcpy(sen,gjgchsh);for(i=0;i=20) sali.manageaward=(10*exai.work);if (exai.work0) sali.manageaward=0;else sali.manageaward=(5*exai.work);sali.shouldsal=(sali.postsal+sali.postsub+sali.housesub+sali.manageaward);sali.persontax=(sali.shouldsal-800)*0.2)/100);sali.oldinsure=(sali.postsal+sali.postsub)*10)/100);sali.housesave=(sali.shouldsal*5)/100);sali.realsal=(sali.shouldsal-sali.persontax-sali.oldinsure-sali.housesave);sn+;fwrite(sal,SEXA_LEN,sn,fs1);for(i=0;i=0;j-)if(empj.numpeople.num)empj+1=empj;continue;else empj+1=people;break;en+;/*k=findposition(empen.num,emp);people=empen;for(j=en;jk;j-) empj=empj-1;empk=people;en+;*/printf(n继续输入其它员工的信息吗?(y/n):n);getchar();scanf(%c,&c);getchar();while(c=y)|(c=Y);for(i=0;ien;i+)printf(n编号 姓名 性别 出生日期 职称 现任职年限n);printf(%d %s %s %d %d %s %d,empi.num,,empi.sex,empi.bor_time.year,empi.bor_time.month,empi.title,empi.term);if(fe=fopen(emp.txt,wb+)=NULL)printf(cant open file emp.txtn);exit(1);fwrite(emp,SEMP_LEN,en,fe);printf(n按任意键继续!n);getchar();fclose(fe);return(en);int delemp()int i,j,k;FILE *fe;int isen;char c1=y,c2;if(fe=fopen(emp.txt,rb)=NULL)printf(cant openfile emp.txtn);exit(1);fread(emp,SEMP_LEN,en,fe);fclose(fe);while(c1=y|c1=Y)printf(n请输入要删除的职工编号:);scanf(%d,&isen);for(k=0,j=en+1;ken;k+)if(empk.num=isen)j=k;break;if(j=en+1)printf(n输入的职工编号有错,请重新输入!n);continue;printf(n显示此职工信息:n);printf(n编号 姓名 性别 出生日期 职称 现任职年限n);printf(%d %s %s %4d %2d %s %d,empk.num,,empk.sex,empk.bor_time.year,empk.bor_time.month,empk.title,empk.term);printf(n确定要删除该职工的全部信息吗?(y/n):);getchar();scanf(%c,&c2);if(c2=y|c2=Y)for(i=k;ien;i+)empi=empi+1;en-;printf(n成功删除!n);else printf(n取消删除!n);printf(n继续删除其它职工的信息吗?(y/n):);getchar();scanf(%c,&c1);getchar();if(fe=fopen(emp.txt,wb)=NULL)printf(cant openfile emp.txtn);exit(1);fwrite(emp,SEMP_LEN,en,fe);printf(n按任意键继续!n);getchar();fclose(fe);return(en);void modifyemp()int select,k,j;FILE *fe;int isen,c1=y,c2;int bott=0,top=en-1,mid=(bott+top)/2;if(fe=fopen(emp.txt,rb)=NULL)printf(cant open file emp.txtn);exit(1);fread(emp,SEMP_LEN,en,fe);fclose(fe);while(c1=y|c1=Y)c2=y;printf(n请输入要修改的的职工编号:);scanf(%d,&isen);for(k=0,j=en+1;ken;k+)if(empk.num=isen)j=k;break;if(j=en+1)printf(n输入的职工编号有错,请重新输入!n);continue;printf(n显示此职工信息:n);printf(n编号 姓名 性别 出生日期 职称 现任职年限n);printf(%d %s %s %4d %2d %s %d,empk.num,,empk.sex,empk.bor_time.year,empk.bor_time.month,empk.title,empk.term);while(c2=y|c2=Y)printf(n此职工的信息n);printf( 1.职称%s 2.现任年职限%dn,empk.title,empk.term);printf(n请选择要修改的数据项(1,2):);scanf(%d,&select);getchar();switch(select)case 1:printf(职称:);gets(empk.title);break;case 2:printf(现任年职限:);scanf(%d,&empk.term);break;default:printf(n按键错误,请重新输入!n);continue;printf(n还要修改此职工的其他信息吗?(y/n):);getchar();c2=getchar();printf(n还要修改其它职工的信息吗?(y/n):);getchar();c1=getchar();if(fe=fopen(emp.txt,wb)=NULL)printf(cant open file emp.txtn);exit(1);fwrite(emp,SEMP_LEN,en,fe);fclose(fe);printf(n按任意键继续!n);getchar();void searbnum()int k,enu,j;char c=y;FILE *fs;int a,b;struct date time;while(1)printf(您要查询那个月的信息(年 月)?n);scanf(%d %d,&time.year,&time.month);a=time.year;b=time.month;for(j=0;jcn;j+)if(fs=fopen( salnamej,rb)=NULL)printf(cant open file sal.txtn);exit(0);if(a=DAj.year)&(b=DAj.month)fread(sal,SSAL_LEN,en,fs);fclose(fs);while(c=y|c=Y)printf(n请输入职工编号:);scanf(%d,&enu);for(j=0;jen;j+)if(empj.num=enu)k=j;break;if(k=en+1) printf(n输入的职工编号有错,请重新输入!n);continue;printf(n显示此职工信息:n);printf(n编号 姓名 职务工资 职务补贴 住房补贴 考勤管理奖n);printf(%d %s %5.1f %5.1f %5.1f %5.1f,salk.num,,salk.postsal,salk.postsub,salk.housesub,salk.manageaward);printf(n 应发工资 个人所得税 养老保险 住房公积金 实发工资n);printf(%5.1f %5.1f %5.1f %5.1f %5.1f,salk.shouldsal,salk.persontax,salk.oldinsure,salk.housesave,salk.realsal);printf(n按任意键继续!n);getchar();printf(n继续查询其他职工的信息吗?(y/n):);c=getchar(); getchar();return;else continue;if(j=cn)printf(没有该月的工资信息,请重新输入(年 月)n);continue;printf(n按任意键继续!n);getchar();void searbnamej()int i,k,j;char bname20,c=y;FILE *fs;int a,b;struct date time;while(1)printf(您要查询哪个月的信息(年 月)?n);scanf(%d %d,&time.year,&time.month);a=time.year;b=time.month;for(j=0;jcn;j+) if(fs=fopen(salnamej,rb)=NULL)printf(cant open file sal.txtn);continue;if(a=DAj.year)&(b=DAj.month)fread(sal,SSAL_LEN,en,fs);fclose(fs);while(c=y|c=Y)k=-1;printf(n请输入职工全名:);scanf(%s,&bname);for(i=0;ien;i+)if(strcmp(,bname)=0)k=i;printf(n显示职工工资信息n);printf(n编号 姓名 职务工资 职务补贴 住房补贴 考勤管理奖n);printf(%d %s %5.1f %5.1f %5.1f %5.1f,salk.num,,salk.postsal,salk.postsub,salk.housesub,salk.manageaward);printf(n 应发工资 个人所得税 养老保险 住房公积金 实发工资n);printf(%5.1f %5.1f %5.1f %5.1f %5.1f,salk.shouldsal,salk.persontax,salk.oldinsure,salk.housesave,salk.realsal);printf(n按任意键继续!n);getchar();if(k=-1)printf(n抱歉!没有相应的职工信息!n);printf(n继续查询其他职工的信息吗?(y/n):);c=getchar();getchar();return;else continue;if(j=cn)printf(没有该月份的工资信息,请重新输入(年 月)n);continue;printf(n按任意键继续!n);getchar();void searbnamem() int i,k,j;FILE *fs;char bname4,c=y;int a,b;struct date time;while(1)printf(您要查询哪个月的信息(年 月)?n);scanf(%d %d,&time.year,&time.month);a=time.year;b=time.month;for(j=0;jcn;j+)if(fs=fopen( salnamej,rb)=NULL)printf(cant open file sal.txtn);fclose(fs);continue;if(a=DAj.year)&(b=DAj.month)fread(sal,SSAL_LEN,en,fs);while(c=y|c=Y)k=-1;printf(n请输入职工姓:);scanf(%s,bname);getchar();printf(n模糊查询结果如下:n);for(i=0;ien;i+)if(strstr(,bname)!=NULL)k=i;printf(职工%s的信息n,);printf(n编号 姓名 职务工资 职务补贴 住房补贴 考勤管理奖n);prin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新能力测评技术工具准则
- 2025年社区工会年终总结
- 《模具制造工艺编制》试题库及答案
- 2025护理三基考试题库及答案
- X县推动传统产业“老树发新枝”的调研报告
- 2025年北京市电子产品采购合同
- 2025年下半年吉林省白山市事业单位招聘高层次和急需紧缺人才2人(2号)易考易错模拟试题(共500题)试卷后附参考答案
- 2025年下半年吉林烟草工业限责任公司延吉卷烟厂应届高校毕业生招聘176名易考易错模拟试题(共500题)试卷后附参考答案
- 2025企业与董事会借款合同
- 2025年下半年台州市黄岩区市场监督管理局招考编制外人员易考易错模拟试题(共500题)试卷后附参考答案
- 征兵心理测试50道题及答案
- 内蒙邮储银行笔试题库及答案
- 乡村治理路径课件
- 网络安全技术及应用 第5版 贾铁军 习题集 第1-12章
- 酒店安全生产制度范本
- DB32∕T 2060-2024 单位能耗限额
- 广东高三一模数学试卷
- 维保公司内部管理制度
- 常州保安证考试题及答案
- T/SAQ 0008-2024用户满意服务明星创新成果评价准则
- T/CECS 10375-2024建筑幕墙用精密钢型材
评论
0/150
提交评论