📄 企业员工管理系统.c
字号:
rewind(fp);
while(fread(&empd,sizeof(struct employee),1,fp))
{
count++;
}
temp=(struct employee *)malloc(count*(sizeof(struct employee)));
rewind(fp);
fread(temp,sizeof(struct employee),count,fp);
fclose(fp);
if((fp=fopen("employee.txt","w")==NULL)){
printf("Error Create new telefon.dat file");
return;
}
else
{
fclose(fp);
fp=fopen("employee.txt","a");
for(i=0;i<count;i++)
{
if(strcmp(temp[i].name,emp1.name)==0)
;
else
fwrite(&temp[i],sizeof(struct employee),1,fp);
}
}
}
fclose(fp);
if((fp=fopen("employee.txt","r"))==NULL)//显示新的职工的信息
return;
printf("新的职工的信息为:\n");
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++) //删除后显示剩余信息
{
printf("工号\t职位\t\t姓名\t年龄\t性别\t文化程度\t工资\t身体情况\n");
printf("%s\t",em[i].num);
switch(em[i].position)
{
case '1':printf("董事长\t\t");break;
case '2':printf("总经理\t\t");break;
case '3':printf("副总经理\t");break;
case '4':printf("经理\t\t");break;
case '5':printf("副经理\t\t");break;
case '6':printf("秘书\t\t");break;
case '7':printf("技术员\t\t");break;
case '8':printf("领班\t\t");break;
case '9':printf("员工\t\t");break;
}
printf("%s\t",em[i].name);
printf("%d\t",em[i].age);
switch(em[i].sex)
{
case 'm':printf("男\t");break;
case 'f':printf("女\t");break;
}
switch(em[i].cult)
{
case '1':printf("专家\t\t");break;
case '2':printf("博士\t\t");break;
case '3':printf("硕士\t\t");break;
case '4':printf("学士\t\t");break;
case '5':printf("其他\t\t");break;
}
printf("%d\t",em[i].salary);
switch(em[i].state)
{
case '1':printf("好\n");break;
case '2':printf("一般\n");break;
case '3':printf("差\n");break;
}
}
printf("是否继续删除?(Y/N)");
fflush(stdin);
scanf("%c",&flag);
if(flag=='y'||flag=='Y')
;
else return;
}while (1);
}
void mcount() //统计员工信息,并输出
{
FILE *fp;
int i=0;
int num=0;//总人数统计
int mnum=0,fnum=0;//性别人数统计
int expernum=0,doctornum=0,masternum=0,bechelornum=0,othernum=0;//学位人数统计
int dsznum=0,zglnum=0,fzglnum=0,glnum=0,fglnum=0;//职位人数统计
int mishunum=0,jsynum=0,lbnum=0,ygnum=0;
clrscr();
if((fp=fopen("employee.txt","r"))==NULL)
{
printf("不能够打开这个文件\n");
printf("按任意键继续\n");
getch();
return;
}
do //通过该循环结构统计员工信息
{
fread(&em[i],sizeof(struct employee),1,fp);
if(feof(fp))
break;
num++;
if(em[i].sex=='m')
mnum++;
if(em[i].sex=='f')
fnum++;
if(em[i].cult=='1')
expernum++;
if(em[i].cult=='2')
doctornum++;
if(em[i].cult=='3')
masternum++;
if(em[i].cult='4')
bechelornum++;
if(em[i].cult='5')
othernum++;
if(em[i].position=='1')//职位统计
dsznum++;
if(em[i].position=='2')
zglnum++;
if(em[i].position=='3')
fzglnum++;
if(em[i].position=='4')
glnum++;
if(em[i].position=='5')
fglnum++;
if(em[i].position=='6')
mishunum++;
if(em[i].position=='7')
jsynum++;
if(em[i].position=='8')
lbnum++;
if(em[i].position=='9')
ygnum++;
i++;
}while(1);
fclose(fp);
printf("总人数为%d\n",num);
printf("====性别分类=====\n");
printf("男人数为%d\n",mnum);
printf("女人数为%d\n",fnum);
printf("=====文凭分类=====\n");
printf("专家数为%d\n",expernum);
printf("博士数为%d\n",doctornum);
printf("硕士数为%d\n",masternum);
printf("学士数为%d\n",bechelornum);
printf("其他的数为%d\n",othernum);
printf("=====职位分类========\n");
printf("董事长数为%d\n",dsznum);
printf("总经理数为%d\n",zglnum);
printf("副总经理数为%d\n",fzglnum);
printf("经理数为%d\n",glnum);
printf("副经理数为%d\n",fglnum);
printf("秘书数为%d\n",mishunum);
printf("技术员数为%d\n",jsynum);
printf("领班人数为%d\n",lbnum);
printf("员工数为%d\n",ygnum);
printf("\n\n统计完毕,按任意键返回上一层\n");
getch();
return;
}
void query() //查询员工的基本信息
{
FILE *fp;
struct employee empd;
int i=0,flag=0;
char quename[8]; //存放要查询的姓名
clrscr();
if((fp=fopen("employee.txt","r"))==NULL)
{
printf("不能够打开文件,按任意键返回\n");
getch();
return;
}
printf("请你输入要查询的人的姓名\n");
scanf("%s",quename);
while(fread(&empd,sizeof(struct employee),1,fp))//循环查找是否存在该信息
{
if(strcmp(quename,empd.name)==0) //如果存在显示可以修改的信息
{
flag=1;
printf("这是你要找的人的信息\n");
printf("工号\t职位\t\t姓名\t年龄\t性别\t文化程度\t工资\t身体情况\n");
printf("%s\t",empd.num);
switch(empd.position)
{
case '1':printf("董事长\t\t");break;
case '2':printf("总经理\t\t");break;
case '3':printf("副总经理\t");break;
case '4':printf("经理\t\t");break;
case '5':printf("副经理\t\t");break;
case '6':printf("秘书\t\t");break;
case '7':printf("技术员\t\t");break;
case '8':printf("领班\t\t");break;
case '9':printf("员工\t\t");break;
}
printf("%s\t",empd.name);
printf("%d\t",empd.age);
switch(empd.sex)
{
case 'm':printf("男\t");break;
case 'f':printf("女\t");break;
}
switch(empd.cult)
{
case '1':printf("专家\t\t");break;
case '2':printf("博士\t\t");break;
case '3':printf("硕士\t\t");break;
case '4':printf("学士\t\t");break;
case '5':printf("其他\t\t");break;
}
printf("%d\t",em[i].salary);
switch(empd.state)
{
case '1':printf("好\n");break;
case '2':printf("一般\n");break;
case '3':printf("差\n");break;
}
}
}
if(flag==0)
printf("您要找的人不存在,按任意键返回上一层\n");
getch();
}
void communicate()
{
char choice;
int stop;
do
{
clrscr();
printf("请你选择操作类型:\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("1为输入通讯录信息\n");
printf("2为查询通讯录信息\n");
printf("3.修改通讯录信息\n");
printf("0.退出通讯录系统\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
fflush(stdin);
scanf("%c",&choice);
switch(choice)
{
case '1':cinput();break;
case '2':cquery();break;
case '3':cchange();break;
case '0':return;break;
default: printf("您输入的有误请重新输入\n");
for(stop=0;stop<50;stop++)
delay(132767);
break;
}
}while(1);
}
void cinput()
{
FILE *fp;
char choice;
char choice1;//判断文件是否存在
int i=0;
if((fp=fopen("communicate.txt","r"))==NULL)
;
else
{ fclose(fp);
printf("文件已存在继续输入将覆盖掉原来的数据\n原来的信息将丢失\n是否继续?(Y/N)");
fflush(stdin);
scanf("%c",&choice1);
if(choice1=='y'||choice1=='Y') //只有if(choice1=='y'||choice1=='Y')才可行if(choice1!='y'||choice1!='Y')不可行
;
else return;
}
fp=fopen("communicate.txt","w");
do
{
i++;
printf("第%d个职工\n",i);
printf("\n");
printf("请你输入工号:\n");
fflush(stdin);
scanf("%s",empc[i].num);
printf("请你输入姓名:\n");
fflush(stdin);
scanf("%s",empc[i].name);
printf("请你输入办公室电话号码:\n");
fflush(stdin);
scanf("%s",empc[i].officetel);
printf("请你输入家庭电话号码:\n");
fflush(stdin);
scanf("%s",empc[i].hometel);
printf("请你输入手机号码:\n");
fflush(stdin);
scanf("%s",empc[i].handtel);
printf("请你输入地址:\n");
fflush(stdin);
scanf("%s",empc[i].address);
fwrite(&empc[i],sizeof(struct communication),1,fp);
printf("输入完毕,是否继续?(Y/N)");
fflush(stdin);
scanf("%c",&choice);
}while(choice=='y'||choice=='Y');
if(choice!='y'||choice!='Y')
{
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
return;
}
}
void cquery() //查询通讯簿的实现
{
FILE *fp;
int i=0;
char qcname[8];
if((fp=fopen("communicate.txt","r"))==NULL)
{
printf("不能够打开文件,按任意键返回\n");
getch();
return;
}
printf("请你输入要查询的人的姓名:\n");
scanf("%s",qcname);
rewind(fp);
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
{
if(strcmp(empc[i].name,qcname)==0)
{
printf("以下为您所要求的信息:\n");
printf("姓名\t\t办公电话\t家庭电话\t手机\t\t家庭地址\n");
printf("%s\t\t",empc[i].name);
printf("%s\t\t",empc[i].officetel);
printf("%s\t\t",empc[i].hometel);
printf("%s\t\t",empc[i].handtel);
printf("%s\n",empc[i].address);
printf("查询完毕,按任意键返回\n");
getch();
fclose(fp);
return;
}
}
printf("没有这样的人,按任意键返回\n");
getch();
fclose(fp);
return;
}
void cchange()
{
FILE *fp;
int i=0,count=0;
struct communication com,comd,*temp;
char chcname[8];
char choicecom;
if((fp=fopen("communicate.txt","rb"))==NULL)
{
printf("打不开文件按任意键返回\n");
getch();
return;
}
printf("请你输入你要修改的人的姓名:\n");
scanf("%s",com.name);
rewind(fp);
while(fread(&comd,sizeof(struct communication),1,fp))
{
if(strcmp(comd.name,com.name)==0)
{clrscr();
printf("以下为您所要修改的人的信息:\n");
printf("姓名\t\t办公电话\t家庭电话\t手机\t\t家庭地址\n");
printf("%s\t\t",comd.name);
printf("%s\t\t",comd.officetel);
printf("%s\t\t",comd.hometel);
printf("%s\t\t",comd.handtel);
printf("%s\n",comd.address);
do{
printf("请你选择要修改的东西:\n");
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf("1修改办公室电话号码\n");
printf("2修改家庭电话号码\n");
printf("3修改手机电话号码\n");
printf("0修改完成,返回上一层\n");
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
com=comd;
fflush(stdin);
scanf("%c",&choicecom);
switch(choicecom)
{
case '1':
printf("请输入新的办公室电话号码:");
scanf("%s",com.officetel);
//修改办公室的电话号码
break;
case '2':
printf("请输入新的家庭电话号码:");
scanf("%s",com.hometel);
break;
case '3':
printf("请输入新的手机号码:");
scanf("%s",com.handtel);
break;
case '0':
return;
default:
printf("您的输入有误,请重新输入\n");
}
}while(1);
rewind(fp);
while(fread(&comd,sizeof(struct communication),1,fp))
{
count++;
}
printf("\n%d\n",count);
temp=(struct communication *)malloc(count*(sizeof(struct communication)));
rewind(fp);
fread(temp,sizeof(struct communication),count,fp);
fclose(fp);
if((fp=fopen("communicate.txt","w")==NULL)){
printf("Error Create new telefon.dat file");
return;
}
else
{
fclose(fp);
fp=fopen("communicate.txt","a");
for(i=0;i<count;i++)
{
if(strcmp(temp[i].name,com.name)==0)
fwrite(&com,sizeof(struct communication),1,fp);
else
fwrite(&temp[i],sizeof(struct communication),1,fp);
}
}
}
} fclose(fp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -