#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:
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();
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(