#include #include #include #include #include struct people { char name[20]; char nativePlace[20]; char phoneNumber1[20]; char phoneNumber2[20]; char email[25]; }; void menu() { system("cls"); printf("\n\n\n\n\n"); printf("\t\t|-------------小型通信录系统----------------|\n"); printf("\t\t|\t 0.信息录入 |\n"); printf("\t\t|\t 1.信息浏览 |\n"); printf("\t\t|\t 2.信息查询 |\n"); printf("\t\t|\t 3.信息修改 |\n"); printf("\t\t|\t 4.退出系统 |\n"); printf("\t\t|-------------------------------------------|\n"); } int main(){ FILE *fp; int c,i,j,k,l;//k用于结束判断;i用于主系统进入子系统判断; c用于子系统内的循环 char p1[20],p2[20],p3[20]; struct people people[1000]; for(;;){ menu(); scanf("%d",&i); if(i==4){ printf("已退出系统!");break; } else{ switch(i){ //录入系统 case 0: if((fp=fopen("D:\\c语言\\通信录.txt","a"))==NULL){ printf("文件打开错误"); } for(;;){ getchar();//吃回车符 printf("请输入姓名\n"); gets(people[0].name); fputs(people[0].name,fp); fputs("\n",fp); printf("请输入籍贯\n"); gets(people[0].nativePlace); fputs(people[0].nativePlace,fp); fputs("\n",fp); printf("请输入电话号码1\n"); gets(people[0].phoneNumber1); fputs(people[0].phoneNumber1,fp); fputs("\n",fp); printf("请输入电话号码2\n"); gets(people[0].phoneNumber2); fputs(people[0].phoneNumber2,fp); fputs("\n",fp); printf("请输入电子邮箱\n"); gets(people[0].email); fputs(people[0].email,fp); fputs("\n",fp); fputs("\n",fp); printf("是否退出录入!\n结束请输入0,继续请输入1\n"); scanf("%d",&k); if(k==0){ break; } else continue; } fclose(fp); break; //浏览系统 case 1: if((fp=fopen("D:\\c语言\\通信录.txt","r"))==NULL){ printf("文件打开错误"); } c=0; printf("------------------------通信录------------------------\n"); while(fgets(p1,20,fp)!=NULL){ switch(c){ case 0:printf("name:");c++;break; case 1:printf("nativePlace:");c++;break; case 2:printf("phoneNumber1:");c++;break; case 3:printf("phoneNumber2:");c++;break; case 4:printf("email:");c++;break; case 5:c=0;break; } printf("%s",p1); } fclose(fp); printf("是否退出浏览!\n结束请输入0\n"); scanf("%d",&k); if(k==0){ break; } else break; //查询系统 case 2: if((fp=fopen("D:\\c语言\\通信录.txt","r"))==NULL){ printf("文件打开错误"); } for(;;){ printf("请输入你需要查询信息的人的姓名\n"); gets(p2); gets(p1); strcat(p1,"\n"); printf("------------------------通信录------------------------\n"); while((fgets(p3,20,fp))!=NULL){ c=0; if(strcmp(p1,p3)==0){ printf("name:%s",p3); while(fgets(p3,20,fp)!=NULL){ if(strcmp(p3,"\n")==0) break; else{ switch(c){ case 0:printf("nativePlace:");printf("%s",p3); c++;break; case 1:printf("phoneNumber1:");printf("%s",p3);c++;break; case 2:printf("phoneNumber2:");printf("%s",p3);c++;break; case 3:printf("email:");printf("%s\n",p3);c++;break; } } } } } printf("\n是否退出查询!\n结束请输入0,继续请输入1\n"); scanf("%d",&k); if(k==0) break; else{ rewind(fp); continue; } } break; //修改系统 case 3: if((fp=fopen("D:\\c语言\\通信录.txt","r+"))==NULL){ printf("文件打开错误"); } char pp[1000][20]; for(;;){ getchar(); for(l=0;fgets(pp[l],20,fp)!=NULL;l++){ c=l; }//把文件的数据输出到二维数组pp中 printf("请输入你需要修改信息的人的姓名\n"); gets(p1); strcpy(p2,p1); strcat(p1,"\n"); l=0; for(;l