#define FILENAME \"worker.bin\" #define N 20 struct worker {
int 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(i printf(\"请你输入工号(以职工号为0结束):\\n\");/*输入工号*/ scanf(\"%d\ if(w[i].number==0) break; printf(\"\\n\"); printf(\"\\n\"); printf(\"请你输入数量:\\n\");/*输入数量*/ scanf(\"%d\ printf(\"\\n\"); i++; } return i; } /******************************************************* 功能:输入职工基本信息 *******************************************************/ void input(struct worker w[],int length) { int i=1; int number,counts; printf(\"请输入工号:\"); scanf(\"%d\ while(number!=0) { printf(\"请输入完成数量:\\n\"); scanf(\"%d\ for(i=0;i /******************************************************* 功能:工作量输入并累加 *******************************************************/ void sortCounts(struct worker w[],int length) { int i=0,j=0,k=0; struct worker s; for(i=0;i /* 交换 w[i] and w[k] */ s = w[k]; w[k] =w[i]; w[i] = s; } if(length>0) w[0].grade =1; for(i=1;i //////////////////////////////////////////////////////////////////////////////// void sortNumber(struct worker w[],int length) { int i=0; int grade,count; if(length>0) { while(i //////////////////////////////////////////////////////////////////////////////// /* 输出名次、同一名次的职工人数及他们的工号,姓名*/ //////////////////////////////////////////////////////////////////////////////// int delet(struct worker w[],int length,int stuNum) { int i,j; char choice; for(i=0;i if(i if(choice=='Y'||choice=='y') { for(j=i;j } } else printf(\"\\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;i ********************************************************/ void main () { int choice; struct worker w[N]; int NUM;char stuName[100]; int stuNum; int length=0; length=readFromFile(w);//读入 do { xinxi(); scanf(\"%d\ 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: printf(\"请输入欲删除的职工号\"); scanf(\"%d\ length=delet(w,length,stuNum); break; case 5: } { writeToFile(w,length);//保存 printf(\"程序使用以结束\\n\"); exit(0); } default: { printf(\"输入有错误请重新输入:\\n\"); } } }while(1); 因篇幅问题不能全部显示,请点此查看更多更全内容