📄 cpp1.cpp
字号:
char quename[8];
if((fp=fopen("employee.txt","rb"))==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("\n");
printf("工号\t职位\t姓名\t性别\t文化程度\t工资\t身体情况\n");
printf("%d\t",em[i].num);
printf(" %d\t",em[i].position);
printf("%s\t",em[i].name);
printf(" %s\t",em[i].sex);
printf(" %d\t",em[i].cult);
printf(" %d\t",em[i].salary);
printf(" %d\n",em[i].state);
printf("\n");
{
printf("职位说明: 1、总经事 2、副总经理 3、业务经理\n");
printf(" 4、技术负责人 5、进出口负责人 6、秘书\n");
printf(" 7、会计 8、跟单员 9、员工\n");
printf("性别说明: 其中[M]为男 [F]为女\n");
printf("\n");
printf("文化程度说明:1、研究生以上 2、本科 3、专科 4、中专 5、其他\n");
printf("\n");
printf("身体状况说明:1、 好 2、一般 3、差\n");
printf("\n");
}
printf("\n");
printf("查询完毕,按任意键返回\n");
getch();
return;
}
}
fclose(fp);
printf("没有这样的人,按任意键返回\n");
getch();
}
void sortEmployee()//排序职工信息
{ int i;
printf("请选择排序方式\n");
printf("1按姓名排序\n");
printf("2按工号排序\n");
printf("0退出系统\n");
printf("======================\n");
printf("请选择: ");
scanf("%d",&i);
printf("\n");
switch(i)
{
case 1:
sortName();
break;
case 2:
sortNum();
break;
case 0:
return;
default :
printf("输入有错误");
sortEmployee();
}
printf("操作完成按任意键返回\n");
getch();
}
void sortName()//按姓名排序
{ FILE *fp;
int i,j,least;
int count = 0;
if((fp=fopen("employee.txt","r"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
manage();
}
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
count++;
fclose(fp);
if((fp=fopen("employee.txt","w"))==NULL)
{
printf("不能够打开文件,按任意键返回\n");
getch();
manage();
}
for(i=0; i<count-1; i++)
{ for(j=i+1,least=i; j<count; j++)
{ if(strcmp(em[j].name,em[least].name ) <= 0)
least = j;
}
swap(&em[least],&em[i]);
}
for(i=0;i<count;i++)
fwrite(&em[i],sizeof(struct employee),1,fp);
fclose(fp);
printf("排序成功,按任意键返回\n");
getch();
manage();
}
void sortNum()//按工号排序
{ FILE *fp;
int i,j,least;
int count = 0;
if((fp=fopen("employee.txt","r"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
manage();
}
for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
count++;
fclose(fp);
if((fp=fopen("employee.txt","w"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
manage();
}
for(i=0; i<count-1; i++)
{ for(j=i+1,least=i; j<count; j++)
{ if(em[j].num < em[least].num)
least = j;
}
swap(&em[least],&em[i]);
}
for(i=0;i<count;i++)
fwrite(&em[i],sizeof(struct employee),1,fp);
fclose(fp);
printf("排序成功,按任意键返回\n");
getch();
manage();
}
void swap(struct employee *e1, struct employee *e2)
{ struct employee tmp;
memcpy(&tmp,e1,sizeof(struct employee));
memcpy(e1,e2,sizeof(struct employee));
memcpy(e2,&tmp,sizeof(struct employee));
}
void communicate()//通讯录系统
{ int choicecommunicate;
while(1) {
printf("\t\t欢迎进入职工通讯录管理系统\n");
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("\t1、输入/追加职工通讯录信息\n");
printf("\t2、显示全部通讯录信息\n");
printf("\t3、查询职工通讯录信息\n");
printf("\t4、修改职工通讯录信息\n");
printf("\t5、删除一个职工通讯录信息\n");
printf("\t6、删除所有职工通讯录信息\n");
printf("\t7、排序职工通讯录信息\n");
printf("\t0、退出职工通讯录管理系统\n");
printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
printf("请输入0-7进行选择操作类型-");
scanf("%d",&choicecommunicate);
switch(choicecommunicate)
{
case 1:
inputcommunicate();
break;
case 2:
displaycommunicate();
break;
case 3:
querycommunicate();
break;
case 4:
changecommunicate();
break;
case 5:
delcommunicateOne();
break;
case 6:
delcommunicateAll();
break;
case 7:
sortcommunicate();
break;
case 0:
{ printf("谢谢使用再见\n");
printf("按任意键返回\n");
getch();
return;
}
default:
printf("输入有错\n");
}
}//while结束
}
void inputcommunicate()//输入通讯录信息
{ FILE *fp;
int choiceincom='y';
int i=0;
if((fp=fopen("empcom.txt","ab+"))==NULL)
{
printf("无法打开文件,按任意键返回\n");
getch();
return;
}
while(fread(&empc[i],sizeof(struct communication),1,fp) != 0)
i++;
printf("请你输入职工通讯录的信息:\n");
while(toupper(choiceincom)!='N')
{ 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].address1);
printf("请你输入办公地址:\n");
scanf("%s",empc[i].address2);
printf("是否继续输入?(Y/N)\n");
choiceincom=getch();
fwrite(&empc[i],sizeof(struct communication),1,fp);
}
if(toupper(choiceincom)=='N')
{
fclose(fp);
printf("输入完毕,任意键返回\n");
getch();
}
}
void displaycommunicate()//显示全体人员通讯录信息
{ FILE *show;
int i;
if((show=fopen("empcom.txt","rb"))==NULL)
{
printf("对不起,目前无数据可读!\n");
getch();
return;
}
printf("输出结果:\n");
printf("姓名\t办公电话号码\t家庭电话号码\t手机\t家庭地址\t办公地址\n");
for(i=0;fread(&empc[i],sizeof(struct communication),1,show)!=0;i++)
{ printf("%s\t",empc[i].name);
printf("%s\t",empc[i].officetel);
printf("%s\t",empc[i].hometel);
printf("%s\t",empc[i].handtel);
printf("%s\t",empc[i].address1);
printf("%s\n",empc[i].address2);
}
if(i == 0) printf("无记录!");
printf("完毕按任意键返回\n");
getch();
fclose(show);
}
void querycommunicate()//查询通讯录信息
{ FILE *fp;
int i=0;
char qcname[8];
if((fp=fopen("empcom.txt","rb"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
}
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\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].address1);
printf("办公地址:%s\n\n",empc[i].address2);
printf("查询完毕,按任意键返回\n");
fclose(fp);
getch();
}
}
printf("没有这样的人,按任意键返回\n");
getch();
fclose(fp);
}
void changecommunicate()//修改通讯录信息
{ FILE *fp;
int i;
int count = 0;
char chcname[30];
int choicecom;
if((fp=fopen("empcom.txt","rb"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
}
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
count++;
printf("请你输入你要修改的人的姓名:\n");
scanf("%s",chcname);
fclose(fp);
if((fp=fopen("empcom.txt","wb+"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
}
for(i=0; i<count; i++)
{ if(strcmp(empc[i].name,chcname)==0)
{ printf("以下为您所要修改的人的信息:\n\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].address1);
printf("办公地址:%s\n\n",empc[i].address2);
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n");
printf("请你选择要修改的项:\n");
printf("\t1、修改办公室电话号码\n");
printf("\t2、修改家庭电话号码\n");
printf("\t3、修改手机电话号码\n");
printf("\t4、修改家庭地址\n");
printf("\t5、修改办公地址\n");
printf("\t0、退出系统\n");
printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$\n");
printf("请输入0-5进行选择操作类型-");
scanf("%d",&choicecom);
switch(choicecom)
{
case 1:
changetel1(i);
break;
case 2:
changetel2(i);
break;
case 3:
changetel3(i);
break;
case 4:
changetel4(i);
break;
case 5:
changetel5(i);
break;
case 0:
break;
default:
printf("输入有错\n");
}
}
fwrite(&empc[i],sizeof(struct communication),1,fp);
}
fclose(fp);
printf("操作完成按任意键返回\n");
getch();
}
void changetel1(int ii)//修改办公电话号码
{
printf("请输入新的办公电话号码:\n");
scanf("%s",empc[ii].officetel);
}
void changetel2(int ii)//修改家庭电话号码
{ printf("请输入新的家庭电话号码:\n");
scanf("%s",empc[ii].hometel);
}
void changetel3(int ii)//修改手机号码
{ printf("请输入新的手机号码:\n");
scanf("%s",empc[ii].handtel);
}
void changetel4(int ii)//修改家庭地址
{ printf("请输入新的家庭地址:\n");
scanf("%s",empc[ii].address1);
}
void changetel5(int ii)//修改办公地址
{
printf("请输入新的办公地址:\n");
scanf("%s",empc[ii].address2);
}
void delcommunicateOne()//删除一个职工的通讯录信息
{ int i=0;
int count = 0;
char delname[8];
FILE *fp;
if((fp=fopen("empcom.txt","rb"))==NULL)
{ printf("文件为空,不能够打开\n");
printf("按任意键返回\n");
getch();
return;
}
printf("请你输入要删除的人的姓名:\n");//删除的职工的通讯录信息
scanf("%s",delname);
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
count++;
fclose(fp);
if((fp=fopen("empcom.txt","wb+"))==NULL)//显示新的职工通讯录信息
{
printf("不能够打开这个文件\n");
printf("按任意键返回\n");
getch();
return;
}
for(i=0;i<count;i++)
{ if(strcmp(empc[i].name,delname)!=0)
fwrite(&empc[i],sizeof(struct communication),1,fp);
}
fclose(fp);
printf("操作完成按任意键返回\n");
getch();
}
void delcommunicateAll()//删除全体职工通讯录信息
{ FILE *fp;
if((fp=fopen("empcom.txt","wb"))==NULL)
{ printf("文件为空,不能够打开\n");
printf("按任意键返回\n");
getch();
}
printf("删除成功!\n");
fclose(fp);
printf("操作完成按任意键返回\n");
getch();
}
void sortcommunicate()//排序通讯录信息
{ FILE *fp;
int i,j,least;
int count = 0;
if((fp=fopen("empcom.txt","rb"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
return;
}
for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
count++;
fclose(fp);
if((fp=fopen("empcom.txt","wb"))==NULL)
{ printf("不能够打开文件,按任意键返回\n");
getch();
return;
}
for(i=0; i<count-1; i++)
{ for(j=i+1,least=i; j<count; j++)
{ if(strcmp(empc[j].name,empc[least].name ) <= 0)
least = j;
}
swapcommunicate(&empc[least],&empc[i]);
}
for(i=0;i<count;i++)
fwrite(&empc[i],sizeof(struct communication),1,fp);
fclose(fp);
printf("排序成功,按任意键返回\n");
getch();
}
void swapcommunicate(struct communication *c1,struct communication *c2)
{ struct communication tmp;
memcpy(&tmp,c1,sizeof(struct communication));
memcpy(c1,c2,sizeof(struct communication));
memcpy(c2,&tmp,sizeof(struct communication));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -