已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* 头文件*/#include#include#include#define N 100void menu_handle();/*函数处理菜单*/int menu_choose();/*函数选择菜单*/void input_worker();/*创建文件并对工人信息输入函数*/void save_file(int n);/*文件保存*/int load();/*提取员工数*/void message_output();/*员工信息浏览函数*/void add_worker();/*员工添加函数*/void dele_worker();/*员工信息删除函数*/void fine();/*员工信息查询函数*/void fine_num();/*员工号查询函数*/void fine_name();/*按姓名查询函数*/void sort_age();/*按年龄排序函数*/void sort_pay();/*按工资排序函数*/void sort();/*排序函数处理*/void change(struct worker *p,int n);/*交换元素*/* 主函数*/void main() printf(nttt计算机工程系n);printf(ntttttt 计Y111班);printf(ntttttt 朱 建 国n); menu_handle();/*调用菜单函数*/* 菜单文件*/* 菜单选择函数*/int menu_chooose()int shuzi;/*定义数字选择的变量 s*/char s2;/printf(n);printf(t n);printf(t * 欢 * 1.员工信息输入 * 职 *n);printf(t * * 2.员工信息输出 * *n);printf(t * 迎 * 3.添加员工信息 * 工 *n);printf(t * * 4.删除员工信息 * *n);printf(t * 进 * 5.员工信息查询 * 档 *n);printf(t * * 6.员工信息排序 * *n);printf(t * 入 * 7. 退出程序 * 案 *n);printf(t nn);printf( * 请选择 1-7 *n);/*选择菜单*/for( ; ; )scanf(%s,s);/*输入数字*/shuzi=atoi(s);/*字符转换*/if(shuzi7|shuzi1)printf(ttt输入错误nnttt请重新输入 1-7 ! nnttt退出请按 7 !n);elsebreak;return(shuzi);/* 菜单处理函数*/void menu_handle()for( ; ; )switch ( menu_chooose() )/*调用菜单选择函数*/ case 1:printf( ttt员工信息输出nn );input_worker(); break;case 2: system(cls); printf(ttt员工信息输出n); message_output(); break;case 3: system(cls); printf(ttt添加员工信息nn); add_worker(); break;case 4: system(cls); printf(ttt删除员工信息nn); dele_worker(); break;case 5: system(cls); printf(ttt员工信息查询nn); fine(); break;case 6: system(cls); printf(ttt员工信息排序nn); sort(); break;case 7: system(cls); printf(nnnnnnnnnnnnn); printf(ttt n); printf(ttt n); printf(ttt n); printf(ttt 谢谢使用n); printf(ttt 再见 n); printf(ttt n); printf(ttt n); printf(ttt nn); printf(nnnnnnnn); return;struct workerint num;/*- 员工号*/char name10;/*- 姓名*/char sex10;/*- 性别*/int age;/*- 年龄*/char position10;/*-职位*/int pay;/*-工资*/workN;/* 员工信息输入函数*/void input_worker() /*定义一个员工信息输入的函数*/int n,i;printf(输入员工数:);scanf(%d,&n); FILE *fp; /*定义一个指向员工信息数组的指针文件*/struct worker *p; /*定义员工数组及指向员工的指针*/if(fp=fopen(workermessage,wb)=NULL) /*创建一个存储员工信息的文件*/printf(不能打开该文件);exit(0);for(p=work,i=1;pnum);printf(n);printf(输入姓名:);scanf(%s,p-name);printf(n);printf(输入性别:);scanf(%s,p-sex);printf(n);printf(输入年龄:);scanf(%d,&p-age);printf(n);printf(输入职位:);scanf(%s,p-position);printf(n);printf(输入工资:);scanf(%d,&p-pay);printf(nnn);fwrite(p,sizeof(struct worker),1,fp);fclose(fp);printf(输入完成nnnnn);/* 提取员工数*/int load()/*定义一个能获取员工数的函数*/FILE *fp;/*定义指针文件*/int i;struct worker *p=work;/*定义一个指向结构体数组的指针*/if(fp=fopen(workermessage,rb)=NULL)printf(不能打开该文件);exit(0);for(i=0;feof(fp)=0;i+)fread(p,sizeof(struct worker),1,fp);fclose(fp);return(i-1);/*以返还的形式找到员工数*/* 文件存储函数*/void save_file(int n)/*定义一个文件储存函数*/int i;FILE *fp;if(fp=fopen(workermessage,wb)=NULL) /*创建一个存储员工信息的文件*/printf(不能打开该文件);exit(0);for(i=0;in;i+)fwrite(&worki,sizeof(struct worker),1,fp);fclose(fp);/* 员工信息浏览函数*/void message_output()/*员工信息输出函数*/int n;/*定义一个员工数变量*/n=load();/*将员工数赋值给n*/struct worker *p;/*定义员工数组及指向员工的指针*/FILE *fp;if(fp=fopen(workermessage,rb)=NULL)/*打开存储员工信息的文件*/printf(不能打开该文件);exit(0);printf(ntt员工号t姓名t性别t年龄t职位t工资n);for(p=work;pnum,p-name,p-sex,p-age,p-position,p-pay);/*输出员工信息*/fclose(fp);/* 员工信息添加函数*/void add_worker()/*定义一个员工信息添加函数*/int n,m,i,j=1; /*定义添加的员员工数*/m=load();printf(输入添加多少名员工:);scanf(%d,&n); /*输入员工数*/FILE *fp; /*定义一个指向员工信息数组的指针文件*/struct worker *p; /*定义员工数组及指向员工的指针*/if(fp=fopen(workermessage,ab)=NULL) /*创建一个存储员工信息的文件*/printf(不能打开该文件);exit(0);for(p=work+m,i=m;inum);printf(n);printf(输入姓名:);scanf(%s,p-name);printf(n);printf(输入性别:);scanf(%s,p-sex);printf(n);printf(输入年龄:);scanf(%d,&p-age);printf(n);printf(输入职位:);scanf(%s,p-position);printf(n);printf(输入工资:);scanf(%d,&p-pay);printf(n);fwrite(p,sizeof(struct worker),1,fp);fclose(fp);printf(输入完成nnnnn);/* 员工信息删除函数*/void dele_worker()/*定义员工信息删除函数*/int n,m,i,j,flag,x;/*定义员工数变量、选择数字、标志*/char wk10;/*定义一个数组用于提醒输入错误*/struct worker *p;/*定义结构体指针*/n=load();/*调用提取员工数的函数*/message_output();/*调用员工信息输出函数*/p=work;/*指针p指向结构体数组*/loop:printf(输入要删除的姓名);scanf(%s,wk);for(i=0;iname,wk)=0)printf(找到此人n此人原本信息:n);flag=1;printf(ntt员工号t姓名t性别t年龄t职位t工资n);printf(ntt%dt%st%st%dt%st%dn,(p+i)-num,(p+i)-name,(p+i)-sex,(p+i)-age,(p+i)-position,(p+i)-pay);printf(n是否删除?n是 请按1 n否请 按0 n);scanf(%d,&m);if(m=1)for(j=i;jnum=(p+j+1)-num;strcpy(p+j)-name,(p+(j+1)-name);strcpy(p+j)-sex,(p+j+1)-sex);(p+j)-age,(p+j+1)-age;strcpy(p+j)-position,(p+j+1)-position);(p+j)-pay,(p+j+1)-pay;n=load();*/ workj.num=workj+1.num; strcpy(,workj+1.name);strcpy(workj.sex,workj+1.sex);workj.age=workj+1.age; strcpy(workj.position,workj+1.position);workj.pay=workj+1.pay; if(flag!=1)printf(tttt查无此人!n);if(flag=1)n=n-1;save_file(n);/*保存文件*/message_output();/*刷新数组*/printf(继续删除请按(1)n退出请按(2)n);/*选择菜单*/scanf(%d,&x);switch(x)case 1:goto loop;break;case 2:printf(谢谢使用!n);break;/* 员工信息查询函数*/void fine()int m;/*定义变量提示输入*/char s10;/*定义一个数组用于提醒输入*/printf(按员工号查询请按 1: nn按姓名查询请按 2: nn退出查询请按 3:n );for( ; ; )/*防止输入错误*/scanf(%s,s);/*输入数字*/m=atoi(s);/*字符转换*/if(m3)printf(ttt输入错误!请重新输入1-3n);elsebreak;switch(m)/*选择查询方式*/case 1:fine_num();/*调用按员工号查询函数*/break;case 2:fine_name();/*调用按姓名查询函数*/break;case 3:printf(谢谢使用!n);break;/*按员工号查询函数*/void fine_num()int m,n,q,x,flag;/*定义m存储员工号,n表示员工数,q提醒输入*/char s10;/*用于提醒输入*/struct worker *p;/*结构体指针*/n=load();/*调用提取数组地址函数*/message_output();/*调用信息输出函数*/system(cls);/*清屏*/loop:printf(输入要查询的员工号: );/*返回输入*/scanf(%d,&m);for(p=work;pnum)/*如果查到的数组与输入的数组相同*/printf(此员工信息如下:nn);printf(ntt员工号t姓名t性别t年龄t职位t工资n);printf(ntt%dt%st%st%dt%st%dn,p-num,p-name,p-sex,p-age,p-position,p-pay);flag=1;printf(查询下一个请按(1)n返回上一级请按(2)n退出请按(3)n);scanf(%d,&x);system(cls);switch(x) /*用于选择是否继续查询*/case 1:goto loop;break;case 2:fine();break;case 3:printf(谢谢使用!n);break;if(flag!=1)printf(查无此人!n);for( ; ; )/*用于防止输入错误*/printf(重新输入请按(1)退出请按(2) n);scanf(%s,s);/*输入数字*/q=atoi(s);if(q2)printf(输入错误!);elsebreak;switch(q) /*用于选择是否继续查询*/case 1:goto loop;break;case 2:printf(谢谢使用!n);break;/* 按姓名查询函数*/void fine_name()int n,m,flag,x; /* 定义n员工数,m提醒输入*/char name10,s10;/*定义数组name存储需要查找的姓名,s用于提醒输入*/struct worker *p;n=load();/*调用提取数组地址函数*/message_output();system(cls);loop:printf(输入要查询的姓名: );/*返回输入*/scanf(%s,name);for(p=work;pname,name)=0)/*如果结构体数组与输入的数组相同,输出该数组*/printf(此员工信息如下:nn);printf(ntt员工号t姓名t性别t年龄t职位t工资n);printf(ntt%dt%st%st%dt%st%dn,p-num,p-name,p-sex,p-age,p-position,p-pay);flag=1;printf(查询下一个请按(1)nn返回上一级请按(2)nn退出请按(3)n);scanf(%d,&x);system(cls);/*清屏*/switch(x) /*用于选择是否继续查询*/case 1:goto loop;break;case 2:fine();break;case 3:printf(谢谢使用!n);break;if(flag!=1)printf(查无此人!);for( ; ; )/*防止输入错误*/printf(n重新输入请按(1)退出请按(2) n);scanf(%s,s);/*输入数字*/m=atoi(s);if(m2)printf(输入错误!n);elsebreak;switch(m)/*选择是否返回*/case 1:goto loop;break;case 2:break;/* 按年龄排序函数*/void sort_age()int n,i,j,x,y,m;/*定义员工数n,中间变量t,和循环变量i、j、y用于选择菜单*/struct worker t;/*中间变量*/n=load();/*调用函数赋值员工数*/message_output();system(cls);loop:printf(ttt从大到小排序请按(1)nnttt从小到大排序请按(2)nn);scanf(%d,&m);switch(m)case 1: for(i=0;in-1;i+)/*二次循环大到小排序*/for(x=i+1;xworki.age)t=workx;workx=worki;worki=t;break;case 2:/*二次循环小到大排序*/for(i=0;in-1;i+) for(x=1+i;xn;x+)if(workx.ageworki.age)t=workx;workx=worki;worki=t;break;printf(ntt员工号t姓名t性别t年龄t职位t工资n);for(j=0;jn;j+)/*输出排序后的信息*/printf(ntt%dt%st%st%dt%st%dn,workj.num,,workj.sex,workj.age,workj.position,workj.pay);printf(返回上一级请按 (1) n返回排序方式选择请按(2)n退出请按(3)nn);scanf(%d,&y);system(cls);/*清屏*/switch(y)/*选择是否返回*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年内科三基血液题库及答案
- 第6单元 阳光体育之歌(教案)-2023-2024学年人教版(2012)音乐六年级上册
- 2025年电力调度员考试技巧口诀及答案
- 五年级上数学教案小数乘小数练习题-苏教版
- 第7课 近代科学与文化(教学设计)-2024-2025学年九年级历史下册素养提升教学设计(统编版)
- 初中岭南版(2024)第6课 都市公共建筑教案设计
- 村庄调研报告村庄绿化情况调研报告(共6)
- 柒零叁信息科技有限公司-企业报告(供应商版)
- 2025年电力公司安全生产知识竞赛试题库及答案
- 2025年调度证考试不考试题及答案
- 发展历程时间轴
- 2026年江西电力职业技术学院单招综合素质考试必刷测试卷新版
- 2026年长沙职业技术学院单招职业倾向性测试必刷测试卷附答案
- 彩虹跑活动策划大纲
- 2024年中医适宜技术操作规范
- 自治区幼儿园保育教育质量自评 指导手册 (试行)
- GB/T 16895.3-2024低压电气装置第5-54部分:电气设备的选择和安装接地配置和保护导体
- 课件《中国式现代化》
- CB/T 3470-1994海洋调查船专用舱室及其设施的设置要求
- 华为软件需求规格说明书(SRS)
- 企业公示信息实地核查记录表
评论
0/150
提交评论