#include #include #include typedef struct { char name[10]; char jiguan[20]; long long num1; long long num2; char email[20]; }person; void xinjian(FILE *p); void liulan(FILE *p); void chaxun(FILE *p); void xiugai(FILE *p); int shanchu(FILE *p); int count=0; FILE *p; person lxr; void main() { char next='Y'; char ch; int b; while(next=='Y') { printf("---------欢迎使用讯通讯录---------\n"); printf("功能目录:\n"); printf("1:新建联系人\n"); printf("2:查看联系人\n"); printf("3:查找联系人\n"); printf("4:修改联系人信息\n"); printf("5:删除联系人\n"); printf("6:退出通讯录\n"); int c; printf("请输入序号:"); scanf("%d",&c); switch(c) { case 1:xinjian(p); break; case 2:liulan(p); break; case 3:chaxun(p); break; case 4:xiugai(p); break; case 5:b=shanchu(p); break; case 6:printf("感谢您的使用!"); break; default:printf("请输入正确的序号:\n"); break; } if(c==6) next='N'; else { printf("继续使用系统功能:Y\n退出:其他字母\n"); if(c==5) scanf("%c",&next); else scanf("%c%c",&ch,&next); } } } void xinjian(FILE *p) { char next='Y'; p=fopen("txl.sto","rb+"); if(p==NULL) p=fopen("txl.sto","wb+"); fseek(p,0,SEEK_END); while(next=='Y') { printf("姓名:\n"); scanf("%s",lxr.name); printf("籍贯:\n"); scanf("%s",lxr.jiguan); printf("电话号码1:\n"); scanf("%lld",&lxr.num1); printf("电话号码2:\n"); scanf("%lld",&lxr.num2); printf("邮箱:\n"); scanf("%s",lxr.email); fwrite(&lxr,sizeof(lxr),1,p); fflush(stdin); printf("是否继续进行建立新联系人;\n是:Y\n否:其他字母\n"); next=getchar(); count=count+1; } fclose(p); } void liulan(FILE *p) { int i=0; p=fopen("txl.sto","rb+"); if(p==NULL) { printf("通讯录为空,请建立新联系人!\n"); fclose(p); } else { rewind(p); printf("\n\nItem list-------------------------------------1\n"); printf("姓名 籍贯 电话号码1 电话号码2 邮箱\n"); fread(&lxr,sizeof(lxr),1,p); while(!feof(p)) { printf("%s %s %lld %lld %s\n",lxr.name,lxr.jiguan,lxr.num1,lxr.num2,lxr.email); fread(&lxr,sizeof(lxr),1,p); } fclose(p); } } void chaxun(FILE *p) { int xuhao1=0; p=fopen("txl.sto","rb+"); if(p==NULL) { printf("通讯录为空,请建立新联系人!\n"); fclose(p); } else { char mingzi[20]; printf("请输入要查询的用户名:\n"); scanf("%s",mingzi); fread(&lxr,sizeof(lxr),1,p); while(!feof(p)) { if(strcmp(mingzi,lxr.name)==0) { printf("姓名: 籍贯: 电话号码1: 电话号码2: 邮箱:\n"); printf("%s %s %lld %lld %s\n",lxr.name,lxr.jiguan,lxr.num1,lxr.num2,lxr.email); xuhao1=xuhao1+1; } fread(&lxr,sizeof(lxr),1,p); } if(xuhao1==count&&(strcmp(mingzi,lxr.name)!=0)) printf("无该联系人\n"); fclose(p); } } void xiugai(FILE *p) { rewind(p); p=fopen("txl.sto","rb+"); if(p==NULL) { printf("通讯录为空,请建立新联系人!\n"); fclose(p); } else { char mingzi[20]; printf("请输入要修改的有用户名:\n"); scanf("%s",mingzi); while(!feof(p)) { fread(&lxr,sizeof(lxr),1,p); if(strcmp(mingzi,lxr.name)==0) { char next='Y'; printf("1.姓名:%s\n",lxr.name); printf("2.籍贯:%s\n",lxr.jiguan); printf("3.电话号码1:%lld\n",lxr.num1); printf("4.电话号码2:%lld\n",lxr.num2); printf("5.邮箱:%s\n",lxr.email); printf("6.取消\n"); while(next=='Y') { int xuhao; printf("请输入序号:"); scanf("%d",&xuhao); switch(xuhao) { case 1:printf("请修改姓名:"); scanf("%s",lxr.name); break; case 2:printf("请修改籍贯:"); scanf("%s",lxr.jiguan); break; case 3:printf("请修改电话号码1:"); scanf("%lld",&lxr.num1); break; case 4:printf("请修改电话号码2:"); scanf("%lld",&lxr.num2); break; case 5:printf("请修改邮箱:"); scanf("%s",lxr.email); break; case 6:break; default:printf("输入错误\n"); break; } printf("继续修改:Y\n停止修改:其他字母\n"); getchar(); next=getchar(); } fseek(p,-sizeof(lxr),SEEK_CUR); fwrite(&lxr,sizeof(lxr),1,p); printf("修改成功!\n"); fclose(p); return ; } } printf("没有该联系人\n"); fclose(p); return; } } int shanchu(FILE *p) { p=fopen("txl.sto","rb+"); if(p==NULL) { printf("通讯录为空,请建立新联系人!\n"); fclose(p); getchar(); return 0; } else { person b; person blank={}; char name[20]; int jishu=0; rewind(p); printf("请输入您要删除的联系人名称:"); scanf("%s",name); fflush(stdin); while(!feof(p)) { fread(&b,sizeof(b),1,p); if(strcmp(name,b.name)==0) { fseek(p,-sizeof(b),SEEK_CUR); fwrite(&blank,sizeof(blank),1,p); printf("删除成功!\n"); fclose(p); jishu=jishu+1; return 0; } } if(jishu==count&&(strcmp(name,b.name)!=0)) printf("无该联系人!\n"); fclose(p); return 0; } }