资源描述
#include stdio.h#include string.h#include stdlib.h#define FILENAME worker.bin#define N 20struct workerint number;/*工号*/int counts;/*数量*/int grade;/*等级*/ ;/*定义void xinxi() printf(n+n);printf(+职工工作量统计系统+n);printf(+n);printf(+1. 职工基本信息输入+n);printf(+n);printf(+2. 工作量输入+n);printf(+n);printf(+3. 按工作量排序+n);printf(+n);printf(+4. 按职工工号进行信息删除+n);printf(+n);printf(+5. 结束程序+n);printf(+n);/*显示菜单*/int readFromFile(struct worker w) FILE *fp=NULL;int i=0;fp=fopen(FILENAME,rb); /*打开文件*/if(fp!=NULL)while(!feof(fp)/*从文件中读入学生*/if(i=N) break;if(fread(w+i,sizeof(worker),1,fp)=1) i+; fclose(fp);return i;/*信息显示到屏幕*/int f(struct worker w,int length) int i=length;while(iN)printf(第4 个职工n,i);printf(n);printf(-请你输入工号(以职工号为0结束):n);/*输入工号*/scanf(%d,&wi.number);if(wi.number=0)break;printf(n);printf(n);printf (请你输入数量:n);/*输入数量*/scanf(%d,&wi.counts);printf(n);i+;return i;*/void input(struct worker w,int length) int i=1;int number,counts;printf(请输入工号:);scanf(%d,&number); while(number!=0)printf (请输入完成数量:n);scanf(%d,&counts);for(i=0;i=length)printf(工号不存在:n); printf(请输入工号:); scanf(%d,&number); /*功能:工作量输入并累加*/void sortCounts(struct worker w,int length) int i=0,j=0,k=0; struct worker s;for(i=0;ilength;i+) k=i;for(j=i+1;jwk.counts) k=j;/* 交换 wi and wk */s = wk;wk =wi; wi = s;if(length0)w0.grade =1;for(i=1;i0) while(ilength)count=0;grade=wi.grade;printf(名次:d , grade);printf(工作量:d ,wi.counts); printf(%s,工号:); while(ilength)if(grade=wi.grade)printf(%d ,wi.number);count+;elsebreak;i+;printf(人数:dn,count);elseprintf(职工数据不存在!n);/* 输出名次、同一名次的职工人数及他们的工号,姓名*/ / int delet(struct worker w,int length,int stuNum)int i,j;char choice;for(i=0;ilength;i+)if(stuNum=wi.number)printf(%s:欲删除职工号为:); printf(%dn,wi.number);break;if(ilength)printf(你确实要删除这个职工吗? (Y/N);scanf(%c,&choice);if(choice=Y|choice=y)for(j=i;jlength;j+) wj=wj+1;length-;prints删除成功!n);elseprintf(n指定的职工不存在!n);return length; /*按职工号删除职工信息void writeToFile(struct worker w,int length) FILE *fp=NULL;int i=0;fp=fopen(FILENAME,wb);if(fp=NULL)printf(打开文件出错! n); exit(0);for(i=0;ilength;i+)fwrite(w+i,sizeof(worker),1,fp);fclose(fp);/*结构体数组中的职工信息输出到文件void main ()int choice;struct worker wN;int NUM;char stuName100;int stuNum;int length=0;length=readFromFile(w);读入 do xinxi();scanf(%d,&choice); switch(choice) case 1:length=f(w,length);break;case 2:input(w,length); break;case 3:sortCounts(w,length); sortNumber(w,length); break;case 4:prints请输入欲删除的职工号); scanf(%d,&stuNum); length=delet(w,length,stuNum); break;case 5: writeToFile(w,length);/保存 printf(程序使用以结束n); exit(0);default:printf (输入有错误请重新输入:n);while(1);
展开阅读全文