#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 100
struct employee//职工基本情况
{
int num;//工号
int position;//职位1为董事长2为总经理3为副总经理等
char name[8];//姓名
char sex[2];//性别f为女m为男
int age;//年龄
int cult;//文化程度1为专家2为博士3为硕士4为学士5为其他
int salary;//工资
int state;//健康情况分为good,general,bad
}em[N];
struct communication//职工通讯录
{
char name[8];
char officetel[13];
char hometel[13];
char handtel[13];
char address[13];
}empc[N];
struct empsalary//职工工资与姓名的文件
{
char name[8];
int salary;
}emps[N];
void manage();
void query();
void communicate();
void input();
void display();
void change();
void del();
void add();
void count();
int changeposition();
int changecult();
int changesalary();
int changestate();
void querysalary();
void creat();
void inputcommunicate();
void querycommunicate();
void changecommunicate();
void changetel1();
void changetel2();
void changetel3();
char password[7]=\"123456\";
void main()
{
int choice;
char s[7];
int flag=0;
int n=3;
do
{
printf(\"请你输入密码:\\n\");
scanf(\"%s\",s);
if(!strcmp(s,password))//若密码正确
{
printf(\"恭喜你成功登陆了\\n\\n\\n\");
flag=1;
break;
}
else
{
printf(\"输入有错误请重新输入:\\n\");
n--;
}
}while(n>0);
if(!flag)
{
printf(\"你的输入次数已到再见\\n\");
}
do
{
printf(\"~~~~~~~~~~\\t\\t\\t~~~~~~~~~~~~\\n\");
printf(\"\\t\\t欢迎进入职工管理系统中文版\\n\");
printf(\"制作人:李华诗\\t班级:计034班\\t学号:2003041150\\n\");
printf(\"联系地址:广西工学院\\n\");
printf(\"%%%%%%%%%%%%%%%%%%%%%%%%%%%\\n\");
printf(\"\\t\\t请你选择操作类型:\\n\");
printf(\"==============\\t\\t==============\\n\");
printf(\"\\t\\t1进入管理系统\\n\");
printf(\"\\t\\t2进入查询系统\\n\");
printf(\"\\t\\t3进入通讯录\\n\");
printf(\"\\t\\t0退出系统\\n\");
printf(\"==============\\t\\t==============\\n\");
printf(\"说明:版权归作者所有违者必究\\n\\n\\n\\n\");
scanf(\"%d\",&choice);
switch(choice)
{
case 1:
manage();
break;
case 2:
query();
break;
case 3:
communicate();
break;
case 0:
{
printf(\"谢谢使用再见\\n\");
exit(0);
}
default:
{
printf(\"输入有错误请重新输入:\\n\");
return;
}
}
}while(1);
}
void manage()
{
int choicemanage;
char choice=\'y\';
while(choice==\'y\'||choice==\'Y\')
{
printf(\"\\t\\t欢迎进入管理系统\\n\");
printf(\"===================\\n\");
printf(\"\\t\\t请你选择操作类型:\\n\");
printf(\"\\t\\t1输入职工信息\\n\");
printf(\"\\t\\t2显示职工信息\\n\");
printf(\"\\t\\t3修改职工信息\\n\");
printf(\"\\t\\t4追加一个职工信息\\n\");
printf(\"\\t\\t5删除一个职工信息\\n\");
printf(\"\\t\\t6统计职工信息\\n\");
printf(\"\\t\\t0返回\\n\");
printf(\"=====================\\n\");
scanf(\"%d\",&choicemanage);
switch(choicemanage)
{
case 1:
input();//输入职工信息
break;
case 2:
display();//显示职工信息
break;
case 3:
change();//修改职工信息
break;
case 4:
add();//追加一个职工信息
break;
case 5:
del();//删除一个职工信息
break;
case 6:
count();//统计职工信息
break;
case 0:
printf(\"谢谢你的使用再见\\n\");
return;
default:
[NextPage]
printf(\"你的输入有错请重新输入\\n\");
}
printf(\"是否继续管理?(y/n)\");
scanf(\"%s\",&choice);
}
if(toupper(choice)==\'N\'||(choice)==\'n\')
{
printf(\"输入完毕,任意键返回\\n\");
getch();
return;
}
}
void input()
{
FILE *fp;
int i=0;
char choiceinput=\'y\';
if((fp=fopen(\"employee.txt\",\"w\"))==NULL)
return;
while(choiceinput==\'y\'||choiceinput==\'Y\')
{
i++;
printf(\"第%d个职工\\n\",i);
printf(\"\\n\");
printf(\"请你输入工号:\\n\");//输入工号
scanf(\"%d\",&em[i].num);
printf(\"\\n\");
printf(\"请你输入职位:\\n\");//输入职位
printf(\"1为董事长2为总经理3为副总经理\\n\");
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
scanf(\"%d\",&em[i].position);
printf(\"\\n\");
printf(\"请你输入姓名:\\n\");//输入姓名
scanf(\"%s\",em[i].name);
printf(\"\\n\");
printf(\"请你输入性别以m为男f为女:\\n\");//输入性别
scanf(\"%s\",em[i].sex);
printf(\"\\n\");
printf(\"请你输入文化程度:\\n\");//输入文化程度
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
scanf(\"%d\",&em[i].cult);
printf(\"\\n\");
printf(\"请你输入工资:\\n\");//输入工资
scanf(\"%d\",&em[i].salary);
printf(\"\\n\");
printf(\"请你输入身体情况:\\n\");//身体情况
printf(\"1好2为一般3为差\\n\");
scanf(\"%d\",&em[i].state);
printf(\"\\n\");
printf(\"是否继续输入?(y/n)\\n\");
scanf(\"%s\",&choiceinput);
fwrite(&em[i],sizeof(struct employee),1,fp);
}
if(toupper(choiceinput)==\'N\')
{
fclose(fp);
printf(\"输入完毕,任意键返回\\n\");
getch();
return;
}
}
void display()//显示职工信息
{
FILE *fp;
int i;
if((fp=fopen(\"employee.txt\",\"r\"))==NULL)
return;
printf(\"输出结果:\\n\");
printf(\"工号 职位 姓名 性别 文化程度 工资 身体情况\\n\");
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
{
printf(\"工号%d\\n\",em[i].num);
printf(\"职位为%d\\n\",em[i].position);
printf(\"1为董事长2为总经理3为副总经理\\n\");
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
printf(\"姓名为%s\\n\",em[i].name);
printf(\"性别为%s\\n\",em[i].sex);
printf(\"其中m为男f为女\\n\");
printf(\"文化程度为%d\\n\",em[i].cult);
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
printf(\"工资为%d\\n\",em[i].salary);
printf(\"身体情况为%d\\n\",em[i].state);
printf(\"1好2为一般3为差\\n\");
}
printf(\"完毕按任意键返回\\n\");
getch();
fclose(fp);
return;
}
void change()
{
FILE *fp;
int i;
char chname[8];
int choicechange;
printf(\"请你输入要修改的人的姓名:\\n\");
scanf(\"%s\",&chname);
if((fp=fopen(\"employee.txt\",\"w+\"))==NULL)
{
printf(\"不能够打开这个文件\\n\");
return;
}
for(i=0;i<N;i++)
{
if(strcmp(chname,em[i].name)==0)
{
printf(\"这是你要修改的人的信息\\n\");
printf(\"工号为%d职位为%d姓名为%s性别为%s文化程度为%d工资为%d身体为%d\\n\",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);
printf(\"------------------------------------------------------------\\n\");
printf(\"请你输入要修改的部分:\\n\");
printf(\"======================\\n\");
printf(\"1修改职位\\n\");
printf(\"2修改文化程度\\n\");
printf(\"3修改工资\\n\");
printf(\"4修改身体情况\\n\");
printf(\"0退出系统\\n\");
printf(\"======================\\n\");
printf(\"请选择\\n\");
scanf(\"%d\",&choicechange);
switch(choicechange)
{
case 1:
em[i].position=changeposition();
[NextPage]
break;
case 2:
em[i].cult=changecult();
break;
case 3:
em[i].salary=changesalary();
break;
case 4:
em[i].state=changestate();
break;
case 0:
return;
default :
printf(\"输入有错误\");
}
fwrite(&em[i],sizeof(struct employee),1,fp);
}
}
fclose(fp);
printf(\"操作完成按任意键返回\\n\");
getch();
return;
}
int changeposition()
{
int newposition;
printf(\"请你输入新职位:\\n\");
printf(\"1为董事长2为总经理3为副总经理\\n\");
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
scanf(\"%d\",&newposition);
return(newposition);
}
int changecult()
{
int newcult;
printf(\"请你输入新的文凭:\\n\");
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
scanf(\"%d\",&newcult);
return(newcult);
}
int changesalary()
{
int newsalary;
printf(\"请你输入新的工资:\\n\");
scanf(\"%d\",&newsalary);
return(newsalary);
}
int changestate()
{
int newstate;
printf(\"请你输入现在的身体情况:\\n\");
printf(\"1好2为一般3为差\\n\");
scanf(\"%d\",&newstate);
return(newstate);
}
void add()//追加一个职工信息
{
struct employee emp;
FILE *fp;
int i=0;
if((fp=fopen(\"employee.txt\",\"ab+\"))==NULL)
{
printf(\"不能够打开这个文件\\n\");
getch();
return;
}
printf(\"请你输入新人的内容:\\n\");
printf(\"请你输入工号:\\n\");//输入工号
scanf(\"%d\",&emp.num);
printf(\"请你输入职位:\\n\");//输入职位
printf(\"1为董事长2为总经理3为副总经理\\n\");
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
scanf(\"%d\",&emp.position);
printf(\"请你输入姓名:\\n\");//输入姓名
scanf(\"%s\",emp.name);
printf(\"请你输入性别以m为男f为女:\\n\");//输入性别
scanf(\"%s\",emp.sex);
printf(\"请你输入文化程度:\\n\");//输入文化程度
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
scanf(\"%d\",&emp.cult);
printf(\"请你输入工资:\\n\");//输入工资
scanf(\"%d\",&emp.salary);
printf(\"请你输入身体情况:\\n\");//身体情况
printf(\"1好2为一般3为差\\n\");
scanf(\"%d\",&emp.state);
fwrite(&emp,sizeof(struct employee),1,fp);
rewind(fp);
printf(\"插入完毕,按任意键返回\\n\");
getch();
fclose(fp);
return;
}
void del()//删除一个职工信息
{
int i=0;
char delname[8];
FILE *fp;
if((fp=fopen(\"employee.txt\",\"w\"))==NULL)
{
printf(\"文件为空,不能够打开\\n\");
printf(\"按任意键返回\\n\");
getch();
return;
}
printf(\"请你输入要删除的人的姓名:\\n\");//删除的职工的信息
scanf(\"%s\",delname);
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
{
if(strcmp(em[i].name,delname)!=0)
fwrite(&em[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(\"工号%d\",em[i].num);
printf(\"职位为%d\",em[i].position);
printf(\"1为董事长2为总经理3为副总经理\\n\");
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
printf(\"姓名为%s\",em[i].name[8]);
printf(\"性别为%s\",em[i].sex[2]);
printf(\"其中m为男f为女\");
printf(\"文化程度为%d\",em[i].cult);
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
printf(\"工资为%d\",em[i].salary);
printf(\"身体情况为%d\",em[i].state);
printf(\"1好2为一般3为差\\n\");
fclose(fp);
}
}
void count()
{
FILE *fp;
int i=0;
int num=0;//总人数统计
[NextPage]
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;
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(strcmp(em[i].sex,\"m\")==0)
mnum++;
if(strcmp(em[i].sex,\"f\")==0)
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);
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\",fzglnum);
printf(\"经理数为%d\",glnum);
printf(\"副经理数为%d\",fglnum);
printf(\"秘书数为%d\",mishunum);
printf(\"技术员数为%d\",jsynum);
printf(\"领班人数为%d\",lbnum);
printf(\"员工数为%d\",ygnum);
fclose(fp);
return;
}
void query()
{
FILE *fp;
int i=0;
char quename[8];
if((fp=fopen(\"employee.txt\",\"r\"))==NULL)
{
printf(\"不能够打开文件,按任意键返回\\n\");
getch();
return;
}
printf(\"请你输入要查询的人的姓名\\n\");
scanf(\"%s\",quename);
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
{
if(strcmp(em[i].name,quename)==0) /*找到,并显示该职工记录*/
{
printf(\"\\t\\t\\n查询到的职工号或姓名为的信息如下:\\n\");
printf(\"以下是你要查询的人的信息\\n\");
printf(\"工号%d\",em[i].num);
printf(\"职位为%d\",em[i].position);
printf(\"\\t1为董事长2为总经理3为副总经理\\n\");
printf(\"\\t4为经理5为副经理6为秘书\\n\");
printf(\"\\t7为技术员8为领班9为员工\\n\");
printf(\"姓名为%s\",em[i].name);
printf(\"性别为%s\",em[i].sex);
printf(\"\\t其中m为男f为女\");
printf(\"文化程度为%d\",em[i].cult);
printf(\"\\t1为专家2为博士3为硕士4为学士5为其他\\n\");
printf(\"工资为%d\",em[i].salary);
printf(\"身体情况为%d\",em[i].state);
printf(\"\\n\");
printf(\"查询完毕,按任意键返回\\n\");
getch();
fclose(fp);
return;
}
}
printf(\"没有这样的人,按任意键返回\\n\");
getch();
fclose(fp);
return;
}
void querysalary()
{
int i;
FILE *fp1,*fp2;
creat();
if((fp1=fopen(\"employee.txt\",\"w+\"))==NULL)
return;
for(i=0;fread(&em[i],sizeof(struct employee),1,fp1)!=0;i++)
{
printf(\"输出结果为:\\n\");
printf(\"工号%d\",em[i].num);
printf(\"职位为%d\",em[i].position);
printf(\"1为董事长2为总经理3为副总经理\\n\");
[NextPage]
printf(\"4为经理5为副经理6为秘书\\n\");
printf(\"7为技术员8为领班9为员工\\n\");
printf(\"姓名为%s\",em[i].name[8]);
printf(\"性别为%s\",em[i].sex[2]);
printf(\"其中m为男f为女\");
printf(\"文化程度为%d\",em[i].cult);
printf(\"1为专家2为博士3为硕士4为学士5为其他\\n\");
printf(\"工资为%d\",em[i].salary);
printf(\"身体情况为%d\",em[i].state);
printf(\"1好2为一般3为差\\n\");
strcpy(emps[i].name,em[i].name);
emps[i].salary=em[i].salary;
}
if((fp2=fopen(\"empsalary.txt\",\"w\"))==NULL)
return;
for(i=0;i<N;i++)
fwrite(&emps[i],sizeof(struct empsalary),1,fp2);
fclose(fp1);
fclose(fp2);
}
void creat()
{
FILE *fp;
if((fp=fopen(\"employee.txt\",\"w+\"))==NULL)
return;
input();
fclose(fp);
}
void communicate()
{
int choicecommunicate;
printf(\"欢迎进入通讯录系统\\n\");
printf(\"请你选择操作类型:\\n\");
printf(\"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\");
printf(\"1为输入通讯录信息\\n\");
printf(\"2为查询通讯录信息\\n\");
printf(\"3为修改通讯录信息\\n\");
printf(\"0为退出通讯录系统\\n\");
printf(\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n\");
scanf(\"%d\",&choicecommunicate);
switch(choicecommunicate)
{
case 1:
inputcommunicate();
break;
case 2:
querycommunicate();
break;
case 3:
changecommunicate();
break;
case 0:
{
printf(\"谢谢使用再见\\n\");
printf(\"按任意键返回\\n\");
getch();
return;
}
default:
printf(\"输入有错\\n\");
}
}
void inputcommunicate()
{
FILE *fp;
int choiceincom=\'y\';
int i=0;
if((fp=fopen(\"empcom.txt\",\"w\"))==NULL)
{
printf(\"不能够打开文件\\n\");
printf(\"任意键返回\\n\");
getch();
return;
}
printf(\"请你输入通讯录的信息:\\n\");
while(choiceincom==\'y\'||choiceincom==\'Y\')
{
i++;
printf(\"第%d个职工\\n\",i);
printf(\"请你输入姓名:\\n\");
scanf(\"%s\",empc[i].name);
printf(\"请你输入办公室电话号码:\\n\");
scanf(\"%s\",empc[i].officetel);
printf(\"请你输入家庭电话号码:\\n\");
scanf(\"%s\",empc[i].hometel);
printf(\"请你输入手机号码:\\n\");
scanf(\"%s\",empc[i].handtel);
printf(\"请你输入地址:\\n\");
scanf(\"%s\",empc[i].address);
printf(\"是否继续输入?(y/n)\\n\");
[NextPage]
choiceincom=getch();
fwrite(&empc[i],sizeof(struct communication),1,fp);
}
if(toupper(choiceincom)==\'N\')
{
fclose(fp);
printf(\"输入完毕,任意键返回\\n\");
return;
}
}
void querycommunicate()
{
FILE *fp;
int i=0;
char qcname[8];
if((fp=fopen(\"empcom.txt\",\"r\"))==NULL)
{
printf(\"不能够打开文件,按任意键返回\\n\");
getch();
return;
}
printf(\"请你输入要查询的人的姓名:\\n\");
scanf(\"%s\",qcname);
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
{
if(strcmp(empc[i].name,qcname)==0)
{
printf(\"以下为您所要求的信息:\\n\");
printf(\"姓名为%s\\n\",empc[i].name);
printf(\"办公室电话号码为%s\\n\",empc[i].officetel);
printf(\"家庭电话号码为%s\\n\",empc[i].hometel);
printf(\"手机号码为%s\\n\",empc[i].handtel);
printf(\"家庭地址为%s\\n\",empc[i].address);
printf(\"查询完毕,按任意键返回\\n\");
getch();
fclose(fp);
return;
}
}
printf(\"没有这样的人,按任意键返回\\n\");
getch();
fclose(fp);
return;
}
void changecommunicate()
{
FILE *fp;
int i=0;
char chcname[8];
int choicecom;
if((fp=fopen(\"empcom.txt\",\"w+\"))==NULL)
{
printf(\"打不开文件按任意键返回\\n\");
getch();
return;
}
printf(\"请你输入你要修改的人的姓名:\\n\");
scanf(\"%s\",chcname);
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
{
if(strcmp(empc[i].name,chcname)==0)
{
printf(\"以下为您所要修改的人的信息:\\n\");
printf(\"姓名为%s\\n\",empc[i].name);
printf(\"办公室电话号码为%s\\n\",empc[i].officetel);
printf(\"家庭电话号码为%s\\n\",empc[i].hometel);
printf(\"手机号码为%s\\n\",empc[i].handtel);
printf(\"家庭地址为%s\\n\",empc[i].address);
printf(\"请你选择要修改的东西:\\n\");
printf(\"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\\n\");
printf(\"1修改办公室电话号码\\n\");
[NextPage]
printf(\"2修改家庭电话号码\\n\");
printf(\"3修改手机电话号码\\n\");
printf(\"0退出系统\\n\");
printf(\"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\\n\");
scanf(\"%d\",&choicecom);
switch(choicecom)
{
case 1:
changetel1();
break;
case 2:
changetel2();
break;
case 3:
changetel3();
break;
case 0:
return;
default:
printf(\"输入有错\\n\");
}
}
}
}
void changetel1()
{
printf(\"参照上面有时间再编\\n\");
}
void changetel2()
{
printf(\"参照上面有时间再编\\n\");
}
void changetel3()
{
printf(\"参照上面有时间再编\\n\");
}