#include #include #include//标准库函数 struct stu{//定义数据结构 char n[15];//姓名 char d[15];//籍贯 char y[15],g[15];//电话号码1和电话号码2 char e[20]; //邮箱 }; struct stu s[100];//定义结构体数组,方便下面的输入与输出 FILE *fp;//定义文件指针变量 int N;//定义整型变量选择功能 void luru();//录入信息功能 void xiuzheng();//为用户输出联系人的所以信息,用户决定是否真的需要修改 void xiugai();//修改信息功能 void shuchu();//浏览信息功能 void baocun(int t);//保存信息功能 void chazhao();//查找信息功能 void wel();//菜单界面 void main() { do{ system("cls");//清屏 wel(); scanf("%d",&N); if(N==0) break; switch(N) { case 1:luru(); break; case 2:shuchu(); break; case 3:chazhao(); break; case 4:xiuzheng(); break; default:printf("输入错误!\n"); } }while(1);//do-while实现程序的反复操作 } void wel() { printf(" "); printf(" 欢迎使用通讯录管理系统\n\n\n"); printf(" "); printf(" *录入信息请按1\n\n"); printf(" "); printf(" *浏览信息请按2\n\n"); printf(" "); printf(" *查询信息请按3\n\n"); printf(" "); printf(" *修改信息请按4\n\n"); printf(" "); printf(" *程序终止请按0\n\n"); } void luru()//实现录入信息功能 { int i=0,v,t;//i为结构体数组的初始地址,v为判断循环是否继续的条件,t作为参数传给保存函数保存 do{ system("cls");//清屏 fflush(stdin);//清除内存缓冲区 printf("请输入第%d个联系人的名字\n",i+1); gets(s[i].n); fflush(stdin); printf("请输入第%d个联系人的籍贯\n",i+1); gets(s[i].d); fflush(stdin); printf("请输入第%d个联系人的电话号码1\n",i+1); scanf("%s",&s[i].y); fflush(stdin); printf("请输入第%d个联系人的电话号码2\n",i+1); scanf("%s",&s[i].g); fflush(stdin); printf("请输入第%d个联系人的邮箱\n",i+1); gets(s[i].e); fflush(stdin); i=i+1;//为下一个循环准备 t=i; system("cls");//清屏 printf("继续输入请按1,停止输入请按0\n"); scanf("%d",&v); }while(v==1); baocun(t); printf("录入完毕\n"); system("pause");//暂停程序的执行 } void shuchu()//信息浏览功能 { int i,n;//i为结构体数组的地址变量 system("cls"); printf("姓名\t籍贯\t电话号码1\t\t电话号码2\t\t邮箱\n"); if((fp=fopen("通讯录.txt","r"))==NULL)//打开文件 { printf("File open error!\n"); exit(0); } for(i=0;feof(fp)==0;i++) { fscanf(fp,"%s%s%s%s%s",s[i].n,s[i].d,&s[i].y,&s[i].g,s[i].e);//读完文件 } fclose(fp);//关闭文件 for(n=0;n<=i;n++) printf("%s\t%s\t%s\t\t%s\t\t%s\n",s[n].n,s[n].d,s[n].y,s[n].g,s[n].e);//输出文件里面的内容 system("pause"); } void xiugai(int n)//修改内容 { int b,k;//b为选择功能修改对应信息定义的变量,k为判断修改是否继续定义的变量 do{ system("cls"); printf("请选择你要修改的内容\n"); printf("1:姓名 2:地址 3:电话号码1 4:电话号码2 5.邮箱\n"); scanf("%d",&b); switch(b) { case 1: printf("输入你要修改的内容\n");scanf("%s",s[n].n); break; case 2: printf("输入你要修改的内容\n");scanf("%s",s[n].d); break; case 3: printf("输入你要修改的内容\n");scanf("%s",s[n].y); break; case 4: printf("输入你要修改的内容\n");scanf("%s",s[n].g); break; case 5: printf("输入你要修改的内容\n");scanf("%s",s[n].e); break; default:printf("输入错误!\n"); } printf("修改成功\n"); printf("继续修改请按1 退出修改请按0\n"); scanf("%d",&k); if(k==0) break; }while(1);//对多项内容进行修改 } void xiuzheng()//找到输入的联系人的地址进行修改 { int i,n=0,k=0,t; char c[20]; printf("请输入你需要修改信息的联系人的姓名\n"); scanf("%s",c); if((fp=fopen("通讯录.txt","r+"))==NULL)//对文件进行读和写 { printf("File open error!\n"); exit(0); } for(i=0;feof(fp)==0;i++) { fscanf(fp,"%s %s %s %s %s\n",s[i].n,s[i].d,s[i].y,s[i].g,s[i].e); if(strcmp(c,s[i].n)==0) { n=i; k++; } } if(k==i) { printf("无该联系人\n"); } printf("请确认联系人\n"); printf("姓名\t地址\t电话号码1\t电话号码2\t\t邮箱\n"); printf("%s\t%s\t%s\t%s\t\t%s\n",s[n].n,s[n].d,s[n].y,s[n].g,s[n].e);//输出用户所需联系人的所有信息 printf("确认修改请按1 退出修改请按2\n"); scanf("%d",&t); if(t==1) xiugai(n); if(fclose(fp))//不修改信息退出 { printf("关闭失败\n"); exit(0); } if((fp=fopen("通讯录.txt","w"))==NULL) { printf("File open error!\n"); exit(0); } for(n=0;n