1、//C语言课程设计 职员信息管理系统—结构体数组实现
#include
2、 void add(); void select(); //查看职员全部信息 void zc_query(); //按职称查询 void num_del(); //按工号删除 void tongji(); //统计 void sort(); //排序 void num_modify(); //按工号修改职员信息 void save(); //保留信息 void disp(); //显示职员信息 void fh(); //返回主菜单 struct employee em[
3、300]; //这个数组用来保留全部职员信息 和文件里面一致 int Number=0; //统计总职员人数 也就是数组/文件里面职员人数 void menu() { printf("\t***********************************************************************\n"); printf("\t* *\n"); printf("\t*
4、职员信息管理系统_结构体数组实现 *\n"); printf("\t* *\n"); printf("\t* [1] 增加职员信息 [2] 查看职员信息 *\n"); printf("\t* [3] 查找职员信息 [4] 删除职员信息 *\n"); printf("\t*
5、 [5] 统计 [6] 职职员资排列 *\n"); printf("\t* [7] 修改职员信息 [8] 保留职员信息 *\n"); printf("\t* [9] 显示职员信息 [0] 退出系统 *\n"); printf("\t*
6、 *\n"); printf("\t***********************************************************************\n"); } void main() { int choose=0; FILE *fp=NULL; char yesorno; if((fp=fopen("employee1.txt","rb+"))==NULL) { printf("\n=========>提醒:文件不存在,是否要创建一个?(y/n)\n"); scanf("%c"
7、yesorno); if(yesorno=='y'||yesorno=='Y') { //这里仅为了建立文件 fp=fopen("employee1.txt","wb+"); fclose(fp); //关闭fp所指文件,释放文件缓冲区 } else exit(0); } else { Number=read_file(em); //要是文件已经有数据 将数据初始化到数组中 } system("cls"); while(1)
8、 { menu(); printf("\t\t====>请选择:"); scanf("%d",&choose); system("cls"); switch(choose) { case 0: exit(0); //退出 break; case 1: add(); fh();//增加职员信息 break; case 2: select(); fh();//查看职
9、员信息 break; case 3: zc_query(); fh();// 查找 break; case 4: num_del(); fh();//删除 break; case 5: tongji(); fh();//统计 break; case 6: sort(); fh();//排序 break; case 7:
10、 num_modify(); fh();//修改后返回 break; case 8: save(); fh();//保留 break; case 9: disp(); fh(); break;//显示 default: break; } fflush(stdin); getchar(); system("cls"); } } void save() { printf("\t=====程序在运行时已自动保留.....\n");
11、}
void fh()
{
printf("\t===>按Enter键返回主菜单\n");
}
void num_modify() //修改职员信息
{
FILE *fp=NULL;
char gh[60];
int i=0;
int changeIndex=0; //changeIndex 改变标识
int index=0;
printf("请输入要修改职职员号:");
scanf("%s",gh);
for (i=0;i 12、中已经有工号
{
changeIndex=i; //保留要修改人下标
break;
}
}
printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");
printf("\t%s\t%s\t%s\t%s\t%s\t%d\n\n",em[changeIndex].num,em[changeIndex].name,em[changeIndex].sex,em[changeIndex].bm,em[changeIndex].zc,em[changeIndex].gz);
printf("请重新输入该职员信息");
printf( 13、"工号:");
scanf("%s",em[changeIndex].num);
printf("姓名:");
scanf("%s",em[changeIndex].name);
printf("性别:");
scanf("%s",em[changeIndex].sex);
printf("部门:");
scanf("%d",em[changeIndex].bm);
printf("职称:");
scanf("%s",em[changeIndex].zc);
printf("工资:");
scanf("%d",&em[changeIndex].gz) 14、
//信息修改后重新更新文件里面数据 以保持数据一致性
fp=fopen("employee1.txt","wb+");
for (i=0;i 15、)
{
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,em[i].gz);
}
}
void sort()//排序
{
struct employee t;
int wantNUmber=0;
int i=0;
int j=0;
int k=0;
for(i=0;i 16、m[j].gz>em[k].gz)
k=j;
}
if(k!=i)
{
t=em[i];
em[i]=em[k];
em[k]=t;
}
}
printf("你想输出前几名职员信息:");
scanf("%d",&wantNUmber);
if (wantNUmber>Number)
{
wantNUmber=Number;
}
printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");
for(i=0;i 17、 18、um);
printf("平均工资为:%f\n",sum/Number);
i=0;m=0;max=0;
max=em[m].gz;
for(i=1;i 19、
min=em[0].gz;
for(i=1;i 20、
int i=0;
int j=0;
printf("请输入要删除职职员号:");
scanf("%d",gh);
for(i=0;i 21、 for (i=0;i 22、umber;i++)
{
if (strcmp(zc,em[i].zc)==0)
{
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,em[i].gz);
}
}
}
void select()//查看职员
{
int i=0;
printf("以下是全部职员信息\n");
printf("\t工号\t姓名\t性别\t部门\t职称\t工资\n");
for(i=0;i 23、
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,em[i].gz);
}
}
void add()//增加职员
{
int numberTemp=0;
int i=0;
struct employee temp; //临时保留信息
printf("请输入要增加职员信息个数:");
scanf("%d",&numberTemp);
for(i=0;i 24、个职员信息\n",i+1);
printf("工号:");
scanf("%s",temp.num);
printf("姓名:");
scanf("%s",temp.name);
printf("性别:");
scanf("%s",temp.sex);
printf("部门:");
scanf("%s",temp.bm);
printf("职称:");
scanf("%s",temp.zc);
printf("工资:");
scanf("%d",&temp.gz);
em[Number++]=temp; //将 25、刚添加写入到数组
write_file(&temp); //将刚添加写入到文件
}
printf("添加成功\n");
}
void write_file(struct employee *em)
{
FILE *fp=NULL;
fp=fopen("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=fopen("employee1.txt","rb");
while(fread(&em[i],sizeof(struct employee),1,fp))
i++;
fclose(fp);
return i;
}






