版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
〃c语言课程设计职员信息管理系统一结构体数组实现
tfincludc<stdio.h>
ftinclude<stcllib.h>
#include<string.h>
structemployee
(
charnum[10];
charname[15];
charsex[5];
charbin[20];
charzc[20];
intgz;
};
intread_file(structemployeeem[]);
voidmenu();
voidwrite_file(structemployeeem[]);
voidadd();
voidselect();//查看职员全部信息
voidzc_query();〃按职称查询
voidnum_del();//按工号删除
voidtongji();//统计
voidsort();〃排序
voidnum_modify();〃按工号修改职员信息
voidsave0;〃保留信息
voiddispO;〃显示职员信息
voidfh();〃返回主菜单
structcmployoocm[300];〃这个数组用来保留全部职员信息和文件里面一
致
intNumbcr-O;〃统计总职员人数也就是数组,文件里面职员人数
voidmenu()
ppintf('\t*****5101c*********************^01c*********************^01c**
\\.
不不不不不不不•不不不不*不不不]
*7T*)9
printfC\t*
*\n〃);
printf(z,\t*职员信息管理系统一结构体数组实现
*\n〃);
printf(〃\l*
*\n〃);
printf(〃\t*[1]增加职员信息[2]查
看职员信息*\n");
printf(〃\t*[3]查找职员信息[4]删
除职员信息*\n");
printf(〃\t*[5]统计[6]职
职员资排列*\n");
printf(〃\t*[7]修改职员信息[8]保
留职员信息*\n");
printfC\t*[9]显示职员信息[0]退
出系统*\n");
printf(z,\t*
*\n〃);
1V-*|\
\I#1^#1%*1^
}
voidmain()
intchoose=0;
FILE*fp=NULL;
charyesorno;
if((fp=fopen(z/employeel.txt〃,〃rb+"))==NULL)
{
printf(〃\n=====>提醒:文件不存在,是否要创建一个?(y/n)\n〃);
scanf&yesorno);
if(yesorno==,y'||yesorno==,Y')
(
〃这里仅为了建立文件
fp=fopen(^employeel.txt",〃wb+〃);
fclose(fp);〃关闭fp所指文件,释放文件缓冲区
)
else
exit(0);
)
else
(
Number=read_file(em);//要是文件已经有数据将数据初始化到数组
中
system(〃cls〃);
whi1e(1)
menu();
printf("\t\t===>请选择:〃);
scanf&choose);
system(〃cls〃);
switch(choose)
{
case0:
exit(0);〃退出
break;
case1:
add();
fh();〃增加职员信息
break;
case2:
select();
fh();〃查看职员信息
break;
case3:
zc_query();
fh();//查找
break;
case4:
numdel();
fh();〃删除
break;
case5:
tongJi();
fh();〃统计
break;
case6:
sort();
fh();〃排序
break;
case7:
nummodify();
fh();〃修改后返回
break;
case8:
save();
fh();〃保留
break;
case9:
disp();
fh();
break;〃显示
default:
break;
}
fflush(stdin):
getchar();
system("cls");
i
)
voidsave()
printf("\t====程序在运行时已自动保留....\iT);
}
voidfh()
(
printf(〃\t==>按Enter键返回主菜单\n〃);
)
voidnum_modify()//修改职员信息
(
FILE*fp=NULL;
chargh[60];
inti=0;
intchangelndex=O;//changeindex改变标识
intindex=0;
printf(〃请输入要修改职职员号:〃);
scanfgh);
for(i=0;i〈Number;i++)
(
if(strcmp(gh,num)==0)〃比较输入工号和数组中已经有工号
{
changclndex=i;〃保留要修改人下标
break;
}
)
printff\t工号\t姓名\t性别\t部门\t职称\t工资\n〃);
printf(,,\t%s\t%s\t%s\t%s\t%s\t%d\n\n,z,em[changelndex].num,em[chan
gelndex].name,em[changeindex].sex,em[changeindex].bm,em[changeindex].
zc,em[changeindex],gz);
printf(〃请重新输入该职员信息〃);
printf("工号:〃);
scanf(〃%s〃,em[changeindex],num);
printf(〃姓名:〃);
scanf(〃%s〃,em[changeindex],name);
priuUX”性别;
scanf(〃%s",em[changeindex],sex);
printf(〃部门:〃);
scanf(〃%d〃,em[changeindex],bm);
printf(〃职称:〃);
scanf(〃%s“,em[changeIndex],zc);
printf(〃工资:”);
,/,,
scanf(%d)&em[changeindex],gz);
〃信息修改后重新更新文件里面数据以保持数据一致性
fp=fopen(^employee!.txt〃,〃wb+〃);
for(i=0;i〈Number;i++)
(
fwritc(&cm[i],sizeof(structemployee),1,fp);〃把ptr所指向
n*size个字节输入到fp所指向文件中
}
fclose(fp);
printf("\t======>修改成功\n〃);
}
voiddisp()〃输出全部职员信息
inti=0;
for(i=0;i<Number;i++)
{
priull?(〃\t%s\l%s\l%s\L%s\l%s\l%d\u\ii〃,cin[i].num,cm[i].iiamc,cni[i].
sex,em[i].bm,em[i].zc,em[i].gz);
}
)
voidsort()〃排序
(
structemployeet;
intwantNUmber=O;
inti=0;
intj=0;
intk=0;
for(i=0;i<Numbcr-l;i++)
{k=i;
for(j=i+l;j<Number;j++)
{
if(em[j].gz>em[k].gz)
k=j;
)
if(k!=i)
t=em[i];
em[i]=em[k];
em[k]=t;
printf(〃你想输出前几名职员信息:〃);
scanf&wantNUmber);
if(wantNlmber>Number)
{
wantNUmber=Number;
)
printfC\t工号\t姓名\t性别\t部门\t职称\t工资\n〃);
for(i=0;i<wantNUmber;i++)
(
,,,,
printf(\t%s\t%s\t%s\t%s\t%s\t%d\n\n,em[i].num,em[i].name,em[i].sex,
em[i].bm,em[i].zc,en[i].gz);
}
)
voidtongji()〃统计
inti,m,k,max,min;
doublesum=0.0;
for(i=0;i<Number;i++)
5Ulll=i>UlIl+cill[l].gz,;
)
printf("全体职员总工资为:%f\nzz,sum);
printf(〃平均工资为:sum/Number);
i=0;m=0;max=0;
max=em[m].gz;
for(i=l;i<Number;i++)
(
if(em[i].gz>max)
m=i;
max=em[m].gz:
)
printf(〃最高工资为:%d\n〃,max);
printf(,,\t%s\t%s\t%s\t%s\t%s\t%d\n\n,/,em[m].num,em[m].name,em[m].
sex,em[m].bm,em[m].zc,em[m].gz);
i=0;k=0;min=0;
min=em[0].gz;
for(i=l;i<Number;i++)
(
if(em[i].gz<min)
k=i:
min=em[k].gz:
printf(〃最低工资:%d\nz,,min);
printf(,,\t%s\t%s\t%s\t%s\t%s\t%d\n\n,,>em[k].num,em[k].name,cm[k].
sex,em[k].bm,em[k].zc,em[k].gz);
)
voidnumdel。//按工号删除
(
FILE*fp=NULL;
chargh[60];
inti=0;
intj=0;
printf(〃请输入要删除职职员号:〃);
scanfgh);
for(i=0;i<Number;i++)
(
if(strcmp(gh,em[i].num)==0)〃假如查找到就删除
(
for(j=i;j<Number-l;j++)
(
)
Number——;
}
〃将剩下数据写入文件重新一写方法打开文件把以前数据擦除了
fp=fopen(,zemployeel.dat〃,“wb〃);
for(i=0;i〈Number;i++)
(
fwrite(&em[i],sizeof(structemployee),1,fp);
}
fclose(fp);
printf(〃删除成功;\n〃);
)
voidzc_query()〃按职称查找
(
charzc[20];
inti=0;
printf(〃请输入要查找职员职称:〃);
scanf(〃%s〃,zc);
system("cls〃);
printfC\t工号\t姓名\t性别\t部门\t职称\t工资\n〃);
for(i=0;i〈Number;i++)
(
if(strcmp(zc,zc)==0)
printfpm[i].num,pm[i].name,pm[i].
sex,bm,em[i].zc,em[i].gz);
)
}
}
voidselect()〃查看职员
(
inti=0;
printf(〃以下是全部职员信息\n〃);
printfC\t工号\t姓名\t性别\t部门\t职称\t工资\n〃);
for(i=0;i<Number;i++)
(
printf(,,\t%s\t%s\t%s\t%s\t%s\t%d\n\n,/,em[i].num,em[i].name,
sex,em[i].bm,em[i].zc,gz);
)
)
voidadd()〃增加职员
(
intnumberTemp=O;
inti=0;
structemployeetemp;〃临时保留信息
printf(〃请输入要增加职员信息个数:〃);
scanf(〃%d〃,&numberTenip);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 青少年抑郁症的干预与治疗措施
- 压力管理课程大纲
- 妇产科出血性疾病产后护理流程
- 如何做会议精神传达
- ICU中创伤颅脑损伤护理措施
- 骆驼奶与中老年人
- 精神文明建设主要内容
- 耳鼻咽喉病历书写规范
- 七台河市2025-2026学年中考物理仿真试卷(含答案解析)
- 2026年流感暴发疫情消毒技术方案
- 2026年甘肃省交通运输厅所属事业单位招聘600人考试备考试题及答案解析
- 2026年春季小学一年级下册美术(人美版2024版)教学计划附教学进度表
- 索尼拍照行业现状分析报告
- 2026年《必背60题》 马克思主义理论26届考研复试高频面试题包含详细解答
- 免疫治疗相关皮肤不良反应的分级管理
- 供电所安全培训课程课件
- 2025年中国石化云南石油分公司加能站后备站长招聘80人笔试参考题库附带答案详解(3卷)
- 国家事业单位招聘2025中国宋庆龄青少年科技文化交流中心招聘人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 砖厂土地复垦协议书
- 口腔X线检查的防护
- 2025年风电场“两票”(操作票、工作票)考试试卷及答案
评论
0/150
提交评论