1、void all();/*计算工资总额函数*/void ave();/*计算平均工资函数*/void sort1();/*排序函数*/void sort2();void same();/*找工资级别相同职工名单函数*/void reviwe();/*修改函数*/void find();/*查询函数*/void print();/*数据输出函数*/void main() char ch; printf( n);*欢进院工资理统*n*迎入职工管系*nn请选择你所需要的服务,按回车确认nntts:数据输入tntta:总工资tnttv:平均工资tnttg:按工资排序tnttx:按姓名排序tnttm:工
2、资级别相同职工名单tnttr:修改tnttf:查询tntte:退出tn scanf(%c,&ch); while(ch!=e) switch(ch) cases:save();break;aall();vave();gsort1();xsort2();msame();rreviwe();ffind(); n请再次选择你所需要的服务,按回车确认n getchar();/*函数功能:输入职工信息*/void save() FILE * fp; int j=0,i; char ch2; int n=0;请选择输入方式:n1:向管理系统重新输入数据,并删除原有数据n2:向系统增加数据n%di);/*输
3、入选项*/ if(i=1) if(fp=fopen(C:file1.dat,wb+)=NULL)/*判断文件能否打开*/can not open this filen exit(0);你是否要输入职工信息?(是:y/否:n)%s,ch); while(strcmp(ch,y)=0|strcmp(ch,Y)=0)/*判断是否要录入新信息*/ n姓名t,teacj.name);n性别(男:b/女:g)t,teacj.sex);n生日:年tteacj.year);n月tteacj.mounth); while(teacj.mounth12)输入月份有误请重输n年龄tteacj.age);n婚否(是y
4、/否n)t,teacj.marrige);n地址t,teacj.addr);n职称t,teacj.engineer);n工资t%fteacj.wage); fwrite(&teacj,sizeof(struct teacher),1,fp);/*信息写入磁盘*/ j+;n)n fclose(fp);/*关闭文件*/ if(i=2)c:rb for(n=0;(fread(&teacn,sizeof(struct teacher),1,fp)=1);n+)continue;/*将职工信息读入内存*/你是否要增加职工信息?,teacj+n.name);,teacj+n.sex);teacj+n.ye
5、ar);teacj+n.mounth); while(teacj+n.mounthteacj+n.age);,teacj+n.marrige);,teacj+n.addr);,teacj+n.engineer);teacj+n.wage); /fwrite(&teacj+n,sizeof(struct teacher),1,fp); n+;wb for(j=0;jn;j+)计算总工资*/ void all() FILE*fp; n=0; sum=0;ab+)=NULL)姓名t性别t生日:年 月t年龄t婚否t地址t职称t工资nn+)/*将职工信息读入内存*/ printf(%st%st %d %
6、dt%dt%st%stt%st%fn,teacn.name,teacn.sex,teacn.year,teacn.mounth,teacn.age,teacn.marrige,teacn.addr,teacn.engineer,teacn.wage);/*将职工信息输出到屏幕上*/ sum=sum+teacn.wage; continue;总工资为%fn,sum); /*函数功能:计算平均工资*/ void ave() float aver; all();/*调用计算总工资函数得到总工资*/ (float)(aver=sum/n);/*计算平均工资*/平均工资为%fn,aver);按工资由低到
7、高排序*/ void sort1() FILE *fp; int i,j; struct teacher temp;/*定义一个结构体变量一边在交换顺序是暂时存放数据*/)=NULL)/*以只读方式打开一个二进制文件判断能否打开*/ /while(!feof(fp)/*检查文件是否结束*/n+) /*排序*/ for(i=0;iteacj+1.wage) temp=teacj; teacj=teacj+1; teacj+1=temp; print();/*调用数据输出函数,输出结果*/ void sort2() if(strcmp(teacj.name,teacj+1.name)0)找工资级别
8、相同的职工名单*/ void same() static int t=0;/*定义一个静态变量*/ int i,j,k,m,a,l; struct teacher tempN;/*定义一个结构体数组存放工资级别相同的职工名单*/)=NULL)/*以读写方式打开一个文本文件并判断能否打开*/%st%st %d %dt%dt%st%st%st%fn /*找相同*/ m=t; a=0; if(i for(l=0;l/*说明该数已在上一级比较中存入temp数组中了不需再比结束本次循环*/ else for(j=i; if(teaci.wage=teacj.wage) tempt+=teacj;n工资级
9、别为%f的名单为:t,tempt-1.wage); for(k=m;kk+)%st,tempk.name);删除不需要的职工信息*/ void reviwe()/*删除函数*/ int i,j,k=0; int a; if(n=0)没有记录n请输入姓名n,name); if(strcmp(name,teaci.name)=0)/*找与要修改的信息相同的姓名*/该职工信息为:%st%st%dt %d %dt%st%st%st%fn,teaci.name,teaci.sex,teaci.year,teaci.mounth,teaci.age,teaci.marrige,teaci.addr,tea
10、ci.engineer,teaci.wage); break;是否删除?(y/n) if(strcmp(ch,)=0)/*判断是否删除*/已成功删除信息nn strcpy(teacj.addr,teacj+1.addr); strcpy(teacj.engineer,teacj+1.engineer); strcpy(teacj.marrige,teacj+1.marrige); strcpy(teacj.name,teacj+1.name); strcpy(teacj.sex,teacj+1.sex); teacj.age=teacj+1.age; teacj.year=teacj+1.year; teacj.mounth=teacj+1.mounth;n-1;查询*/ void find() int i;是否查询?)=0)你要查询的职工信息如下: if(i=n)没有你需要查询的信息n是否继续查询?输出数据*/ void print()n姓名t性别t生日:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1