C语言课程设计职工信息管理系统结构体数组实现程序源代码_第1页
C语言课程设计职工信息管理系统结构体数组实现程序源代码_第2页
C语言课程设计职工信息管理系统结构体数组实现程序源代码_第3页
C语言课程设计职工信息管理系统结构体数组实现程序源代码_第4页
C语言课程设计职工信息管理系统结构体数组实现程序源代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文档c 语言课程设计 职工信息管理系统一结构体数组实现#i nclude #i nclude #include struct employeechar num10; char n ame15; char sex5; char bm20; char zc20; in t gz;int read_file(struct employee em);void menu();void write_file(struct employee em);void disp(); / 显示职工信息void fh();/返回主菜单struct employee em300; /这个数组用来保存所有的职工信息和文件里

2、面的一致int Number=0; /记录总的职工人数也就是数组/文件里面的职工人数void menu()*prin tf(t* *n);prin tf(t* *n);prin tf(t*n);prin tf(t*1看职工信息*n);prin tf(t*3查找职工信息4删除职工信息*n);prin tf(t*5统计6职工工资排列*n);prin tf(t*7修改职工信息8保存职工信息*n);prin tf(t*9显示职工信息0退出系统*n);void add();void select(); /void zc_query();/void nu m_del();/void ton gji();

3、/void sort(); / void num_modify(); / void save();/查看职工所有信息按职称查询按工号删除统计排序按工号修改职工信息保存信息prin tf(t*职工信息管理系统 _结构体数组实现增加职工信息2*文档prin tf(t*n);prin tf(t* *n);void mai n()int choose=0;FILE *fp=NULL; char yesor no;if(fp=fope n( employee1.txt,rb+)=NULL)prin tf(n=提示:文件不存在,是否要创建一个?(y/n)n);scan f(%c, &yesorno

4、);if(yesor no=y|yesor no=Y)/这里仅为了建立文件fp=fope n( employee1.txt,wb+);fclose(fp); / 关闭 fp 所指的文件,释放文件缓冲区elseexit(0);elseNumber=read_file(em); /要是文件已经有数据将数据初始化到数组中system(cls);while(1)menu();printf(tt=请选择:);scan f(%d,&choose);system(cls);switch(choose)case 0:exit(0); / 退出 break;case 1:add();fh(); 增加职工

5、信息break;case 2:文档select();fh(); 查看职工信息break;case 3:zc_query();fh();查找break;case 4:nu m_del();fh();/ 删除 break;case 5:ton gji();fh();/ 统计break;case 6:sort();fh();/ 排序break;case 7:num_ modify();fh();/修改后返回break;case 8:save();fh();/ 保存 break;case 9:disp();fh();break;/ 显示 default:break;文档fflush(stdi n);

6、getchar(); system(cls);void save()printf(t=程序在运行时已自动保存.n);void fh()printf(t=按 Enter 键返回主菜单 n);cha ngel ndex=i; /保存要修改的人的下标break;printf(t工号tt 性别t 部门t 职称t 工资n);prin tf(t%st%st%st%st%st%dnn,emcha ngel ndex. nu m,emcha ngeln dex. name,emcha ngeln dex.sex,emcha ngeln dex.bm,emcha ngeln dex. zc,emchangeln

7、 dex.gz);prin tf(请重新输入该职工信息);printf(工号:);sca nf(%s,emcha ngel ndex. nu m);printf(:);sca nf(%s,emcha ngel ndex. name);printf(性别:);sca nf(%s,emcha ngel ndex.sex);void num _modify() / 修改职工信息FILE *fp=NULL;char gh60;int i=0;int cha ngeln dex=0; /cha ngeln dexint in dex=0;prin tf(请输入要修改的职工工号:sca nf(%s,gh)

8、;for (i=0;iNumber;i+)if (strcmp(gh,emi.num)=0) /改变标记);比较输入工号和数组中已有工号文档prin tf( 部门:);sea nf(%d,emcha ngel ndex.bm); printf(职称:);sca nf(%s,emcha ngel ndex.zc); printf(工资:);sca nf(%d,&emcha ngeln dex.gz);/信息修改后重新更新文件里面的数据以保持数据一致性fp=fope n(employee1.txt,wb+);for (i=O;i修改成功 n); void disp() / 输出所有职工信息

9、int i=0;for (i=0;iNumber;i+)prin tf(t%st%st%st%st%st%dnn,emi. num,emi. name,emi.sex,emi.bm,emi.zc,emi.gz);void sort()/ 排序struct employee t;int wan tNUmber=0;int i=0;int j=0;int k=0;for(i=0;iNumber-1;i+)k=i;for(j=i+1;jemk.gz) k=j;if(k!=i)文档 t=emi; emi=emk; emk=t;printf(你想输出前几名职工的信息:);scan f(%d,&w

10、an tNUmber);if (wan tNUmberNumber)wan tNUmber=Number;printf(t 工号tt 性别t 部门t 职称t 工资n); for(i=0;iwa ntNUmber;i+)prin tf(t%st%st%st%st%st%dnn,emi. nu m,emi. name,emi.sex,emi.bm,emi.zc,emi.gz);void ton gji()统计int i,m,k,max,mi n;double sum=0.0;for(i=0;iNumber;i+)sum=sum+emi.gz;prin tf( 全体职工的总工资为:%fn,sum);

11、文档prin tf(平均工资为:fn,sum/Number); i=O;m=O;max=O;max=emm.gz;for(i=1;imax)m=i;max=emm.gz;prin tf(最高工资为:dn,max);prin tf(t%st%st%st%st%st%dnn,emm. nu m,emm. name,emm.sex,emm.bm,emm.zc,emm.gz);i=0;k=0;mi n=0;min=em0.g z;for(i=1;iNumber;i+)if (emi.gz min)k=i;min=emk.g z;printf(最低工资:%dn,mi n);prin tf(t%st%st

12、%st%st%st%dnn,emk .n um,emk .n ame,emk.sex,emk.bm,emk.zc,emk.gz);void num_del()按工号删除FILE *fp=NULL;char gh60;int i=0;int j=0;printf(请输入要删除的职工工号:);sca nf(%d,gh);for(i=0;iNumber;i+)if (strcmp(gh,emi.num)=0) / for (j=i;jNumber-1;j+)如果查找到就删除文档 emj=emj+1;Number-;/将剩余数据写入文件重新一写的方式打开文件把以前的数据擦除了fp=fope n(emp

13、loyee1.dat,wb);for (i=0;iNumber;i+)fwrite(&emi,sizeof(struct employee),1,fp);fclose(fp);printf(删除成功;n); void zc_query()/ 按职称查找 _char zc20;int i=0;printf(请输入要查找职工职称:);sca nf(%s,zc);system(cls);printf(t工号tt 性别t 部门t 职称t 工资n);for (i=0;iNumber;i+)if (strcmp(zc,emi.zc)=O)prin tf(t%st%st%st%st%st%dnn,e

14、mi. num,emi. name,emi.sex,emi.bm,emi.zc,emi.gz); void select()/ 查看职工int i=0;printf(以下是全部职工信息n);printf(t工号tt性别t 部门t 职称t 工资n);for(i=0;iNumber;i+)prin tf(t%st%st%st%st%st%dnn,emi. num,emi. name,emi.sex,emi.bm,emi.zc,emi.gz);文档void add() 增加职工int nu mberTemp=0;int i=0;struct employee temp; /临时保存信息prin tf

15、(请输入要增加职工信息的个数:);sca nf(%d,&nu mberTemp); for(i=0;i nu mberTemp;i+) printf( 输入第d 个职工信息n,i+1);printf(工号:);sca nf(%s,temp .nu m); printf(:);scan f(%s,temp. name); printf(性别:);scan f(%s,temp.sex); printf(部门:);scan f(%s,temp.bm);prin tf(职称:);sca nf(%s,temp.zc); printf(工资:); scan f(%d, &temp.gz);

16、emNumbe 叶+=temp; /将刚添加的写入到数组write_file(&temp); /将刚添加的写入到文件printf(添加成功 n);void write_file(struct employee *em) _FILE *fp=NULL;fp=fope n( employee1.txt,rb+);fwrite(em,sizeof(struct employee),1,fp); fclose(fp);int read_file(struct employee em) _FILE *fp=NULL;int i=0;fp=fope n( employee1.txt,rb);while(fread(&emi,sizeof(struct employee),1,fp) i+;fclos

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论