1、void change(struct worker *p,int n);/*交换元素*/ 主函数void main() printf(nttt计算机工程系n);ntttttt 计Y111班ntttttt 朱 建 国n menu_handle();/*调用菜单函数*/ 菜单文件 菜单选择函数int menu_chooose() int shuzi;/*定义数字选择的变量 s*/ char s2;/ printf(n printf(t nt * 欢 * 1.员工信息输入 * 职 *nt * * 2.员工信息输出 * *nt * 迎 * 3.添加员工信息 * 工 *nt * * 4.删除员工信息 *
2、 *nt * 进 * 5.员工信息查询 * 档 *nt * * 6.员工信息排序 * *nt * 入 * 7. 退出程序 * 案 *nt nn * 请选择 1-7 *n/*选择菜单*/ for( ; ; ) scanf(%s,s);/*输入数字*/ shuzi=atoi(s);/*字符转换*/ if(shuzi7|shuzi1) printf(ttt输入错误nnttt请重新输入 1-7 ! nnttt退出请按 7 ! else break; return(shuzi); 菜单处理函数void menu_handle() switch ( menu_chooose() )/*调用菜单选择函数*/
3、 case 1: printf( ttt员工信息输出nn input_worker(); break; case 2: system(clsttt员工信息输出n message_output(); case 3:ttt添加员工信息nn add_worker(); case 4:ttt删除员工信息nn dele_worker(); case 5:ttt员工信息查询nn fine(); case 6:ttt员工信息排序nn sort(); case 7:nnnnnnnnnnnnnttt nttt nttt nttt 谢谢使用nttt 再见 nttt nttt nttt nnnnnnnnnn ret
4、urn; struct worker int num;/*- 员工号*/ char name10;/*- 姓名*/ char sex10;/*- 性别*/ int age;/*- 年龄*/ char position10;/*-职位*/ int pay;/*-工资*/ workN; 员工信息输入函数void input_worker() /*定义一个员工信息输入的函数*/ int n,i;输入员工数: scanf(%d,&n); FILE *fp; /*定义一个指向员工信息数组的指针文件*/ struct worker *p; /*定义员工数组及指向员工的指针*/ if(fp=fopen(wo
5、rkermessage,wb)=NULL) /*创建一个存储员工信息的文件*/不能打开该文件 exit(0); for(p=work,i=1;pnum);输入姓名:,p-name);输入性别:sex);输入年龄:age);输入职位:position);输入工资:pay);nnn fwrite(p,sizeof(struct worker),1,fp); fclose(fp);输入完成nnnnn 提取员工数int load() /*定义一个能获取员工数的函数*/*定义指针文件*/ int i; struct worker *p=work;/*定义一个指向结构体数组的指针*/rb)=NULL) f
6、or(i=0;feof(fp)=0;i+) fread(p,sizeof(struct worker),1,fp); return(i-1);/*以返还的形式找到员工数*/ 文件存储函数void save_file(int n)/*定义一个文件储存函数*/iname,p-sex,p-age,p-position,p-/*输出员工信息*/ 员工信息添加函数void add_worker()/*定义一个员工信息添加函数*/ int n,m,i,j=1; /*定义添加的员员工数*/ m=load();输入添加多少名员工: /*输入员工数*/ab for(p=work+m,i=m;n+m;i+,p+,
7、j+)/*输入员工信息*/,j); 员工信息删除函数void dele_worker()/*定义员工信息删除函数*/ int n,m,i,j,flag,x;/*定义员工数变量、选择数字、标志*/ char wk10; /*定义一个数组用于提醒输入错误*/*定义结构体指针*/*调用提取员工数的函数*/ message_output();/*调用员工信息输出函数*/ p=work;/*指针p指向结构体数组*/loop:输入要删除的姓名,wk); if(strcmp(p+i)-name,wk)=0) 找到此人n此人原本信息: flag=1;,(p+i)-num,(p+i)-name,(p+i)-se
8、x,(p+i)-age,(p+i)-position,(p+i)-n是否删除?n是 请按1 n否请 按0 n scanf(m); if(m=1) for(j=i;jnum=(p+j+1)-num; strcpy(p+j)-name,(p+(j+1)- sex,(p+j+1)- (p+j)-age,(p+j+1)-age;position,(p+j+1)-pay,(p+j+1)-pay; n=load();*/ workj.num=workj+1.num; strcpy(workj.name,workj+1.name); strcpy(workj.sex,workj+1.sex); workj.
9、age=workj+1.age; strcpy(workj.position,workj+1.position); workj.pay=workj+1.pay; if(flag!=1)tttt查无此人! if(flag=1) n=n-1; save_file(n);/*保存文件*/*刷新数组*/继续删除请按(1)n退出请按(2)nx); switch(x) goto loop; case 2:谢谢使用! 员工信息查询函数void fine() int m;/*定义变量提示输入*/ char s10;/*定义一个数组用于提醒输入*/按员工号查询请按 1: nn按姓名查询请按 2: nn退出查询请
10、按 3:n )/*防止输入错误*/ m=atoi(s); if(m3)ttt输入错误!请重新输入1-3n switch(m)/*选择查询方式*/ fine_num();/*调用按员工号查询函数*/ fine_name();/*调用按姓名查询函数*/ case 3: 按员工号查询函数void fine_num() int m,n,q,x,flag;/*定义m存储员工号,n表示员工数,q提醒输入*/*用于提醒输入*/*结构体指针*/*调用提取数组地址函数*/*调用信息输出函数*/ system(/*清屏*/ loop:输入要查询的员工号: /*返回输入*/p+)/*一个一个查询*/ if(m=p-num)/*如果查到的数组与输入的数组相同*/此员工信息如下:nn查询下一个请按(1)n返回上一级请按(2)n退出请按(3)n system( switch(x) /*用于选择是否继续查询*/ case 1: goto loop; break; case 2: fine(); case 3: printf( if(flag!查无此人! for( ; )/*用于防止输入错误*/重新输
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1