C语言课程设计 职工信息管理系统 结构体数组实现程序源代码_c语言结构体数组介绍

2020-02-27 其他范文 下载本文

C语言课程设计 职工信息管理系统 结构体数组实现程序源代码由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言结构体数组介绍”。

//C语言课程设计 职工信息管理系统—结构体数组实现 #include #include #include

struct employee { char num[10];char name[15];char sex[5];char bm[20];char zc[20];int gz;};

int read_file(struct employee em[]);void menu();void write_file(struct employee em[]);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[300];//这个数组用来保存所有的职工信息 和文件里面的一致

int Number=0;//记录总的职工人数 也就是数组/文件里面的职工人数

void menu(){ printf(“t***********************************************************************n”);printf(“t* *n”);printf(“t*

职工信息管理系统_结构体数组实现 *n”);printf(“t* *n”);printf(“t* [1] 增加职工信息 [2] 查看职工信息 *n”);printf(“t* [3] 查找职工信息 [4] 删除职工信息 *n”);printf(“t* [5] 统计 [6] 职工工资排列 *n”);printf(“t* [7] 修改职工信息 [8] 保存职工信息 *n”);printf(“t* [9] 显示职工信息 [0] 退出系统 *n”);printf(“t* *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”,&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){ menu();printf(“tt====>请选择:”);scanf(“%d”,&choose);system(“cls”);switch(choose){ case 0:

exit(0);//退出

break;

case 1:

add();

fh();//增加职工信息 break;

case 2:

select();

fh();//查看职工信息 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:

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”);} 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

if(strcmp(gh,em[i].num)==0)//比较输入工号和数组中已有工号

{

changeIndex=i;//保存要修改的人的下标

break;

}

} printf(“t工号t姓名t性别t部门t职称t工资n”);printf(“t%st%st%st%st%st%dnn”,em[changeIndex].num,em[changeIndex].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);printf(“性别:”);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(“employee1.txt”,“wb+”);for(i=0;i

fwrite(&em[i],sizeof(struct employee),1,fp);//把ptr所指向n*size个字节输入到fp所指向的文件中

} fclose(fp);printf(“t=======>修改成功n”);}

void disp()//输出所有职工信息 { int i=0;for(i=0;i

printf(“t%st%st%st%st%st%dnn”,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

for(j=i+1;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(“%d”,&wantNUmber);if(wantNUmber>Number){

wantNUmber=Number;}

printf(“t工号t姓名t性别t部门t职称t工资n”);for(i=0;i

printf(“t%st%st%st%st%st%dnn”,em[i].num,em[i].name,em[i].sex,em[i].bm,em[i].zc,em[i].gz);}

}

void tongji()//统计 {

int i,m,k,max,min;double sum=0.0;for(i=0;i

if(em[i].gz>max)

m=i;

max=em[m].gz;} printf(“最高工资为:%dn”,max);printf(“t%st%st%st%st%st%dnn”,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=1;i

if(em[i].gz

k=i;

min=em[k].gz;} printf(“最低工资:%dn”,min);printf(“t%st%st%st%st%st%dnn”,em[k].num,em[k].name,em[k].sex,em[k].bm,em[k].zc,em[k].gz);

}

void num_del()//按工号删除 { FILE *fp=NULL;char gh[60];int i=0;int j=0;printf(“请输入要删除的职工工号:”);scanf(“%d”,gh);for(i=0;i

if(strcmp(gh,em[i].num)==0)//如果查找到就删除

{

for(j=i;j

{

em[j]=em[j+1];

}

Number--;

} }

//将剩余数据写入文件 重新一写的方式打开文件 把以前的数据擦除了

fp=fopen(“employee1.dat”,“wb”);for(i=0;i

fwrite(&em[i],sizeof(struct employee),1,fp);} fclose(fp);printf(“删除成功;n”);}

void zc_query()//按职称查找 {

char zc[20];int i=0;printf(“请输入要查找职工职称:”);scanf(“%s”,zc);system(“cls”);printf(“t工号t姓名t性别t部门t职称t工资n”);for(i=0;i

if(strcmp(zc,em[i].zc)==0)

{

printf(“t%st%st%st%st%st%dnn”,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

printf(“t%st%st%st%st%st%dnn”,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

printf(“输入第%d个职工信息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;//将刚添加的写入到数组

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;}

《C语言课程设计 职工信息管理系统 结构体数组实现程序源代码.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
C语言课程设计 职工信息管理系统 结构体数组实现程序源代码
点击下载文档
相关专题 c语言结构体数组介绍 数组 源代码 信息管理系统 c语言结构体数组介绍 数组 源代码 信息管理系统
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文