您好,欢迎访问三七文档
#includestdio.h#includestdlib.h#includeconio.h#includestring.h#includewindows.h#defineLENsizeof(structstudent)#defineTITLE_T╔═══════════════╗\n#defineNAME║※姓名:号码:║\n#defineGESHI║※%-15s%-11s║\n#defineBOTTOM_B╚═══════════════╝\n#defineNEIRONGstu[i].name,stu[i].numstructstudent//定义通讯录结构体{charname[15];//姓名charnum[12];//号码};structstudentstu[50];//定义结构体数组voidin();//添加联系人voidshow();//显示联系人voidorder();//按字符排序voiddel();//删除联系人voidmodify();//修改联系人voidmenu();//主菜单voidtotal();//计算总人数voidsearch();//查找联系人voidmain()//主函数{system(title某某某通讯录);//设置cmd窗口标题system(modeconcols=85lines=35);//设置cmd窗口大小system(color8A);intn;menu();//执行菜单命令scanf(%d,&n);//输入选择功能的编号while(n){switch(n){case1:in();break;case2:show();break;case3:search();break;case4:del();break;case5:modify();break;case6:total();break;default:printf(输入编码有误!正在返回...);Sleep(3000);break;}menu();//执行完功能再次显示菜单界面scanf(%d,&n);}}voidmenu()//自定义函数实现菜单功能{system(cls);system(date/t);system(time/t);printf(\n\n\n\n\n);printf(\t\t╔══════════某某某通讯录══════════╗\n);printf(\t\t║※0.退出║\n);printf(\t\t║※1.添加║\n);printf(\t\t║※2.查看║\n);printf(\t\t║※3.查找║\n);printf(\t\t║※4.删除║\n);printf(\t\t║※5.修改║\n);printf(\t\t║※6.联系人总数║\n);printf(\t\t╚══════════════════════════╝\n\n);printf(\t\t请选择(0-6):);}voidin()//添加联系人{inti,m=0;//m是记录的条数charch[2];FILE*fp;//定义文件指针if((fp=fopen(data,ab+))==NULL)//打开指定文件{printf(打开文件失败!正在返回...);Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m],LEN,1,fp)==1)m++;//统计当前记录条数}fclose(fp);if(m==0)printf(当前无记录!\n);else{system(cls);printf(TITLE_T);printf(NAME);for(i=0;im;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}if((fp=fopen(data,wb))==NULL)//以只写二进制方式打开文件{printf(打开文件失败!正在返回...);Sleep(3000);return;}for(i=0;im;i++)fwrite(&stu[i],LEN,1,fp);//如果原来有记录,就将记录写入到磁盘文件中printf(是否添加?(y/n):);scanf(%s,ch);while(strcmp(ch,Y)==0||strcmp(ch,y)==0)//判断是否要添加联系人{back:printf(请输入联系人姓名:);scanf(%s,&stu[m].name);//输入姓名for(i=0;im;i++)if(strcmp(stu[i].name,stu[m].name)==0){printf(您输入的联系人已存在!\n);gotoback;}printf(请输入联系人号码:);scanf(%s,stu[m].num);if(fwrite(&stu[m],LEN,1,fp)!=1)//将新录入的信息写入指定的磁盘文件{printf(保存'%s'失败!是否继续?(y/n):,stu[m].name);scanf(%s,ch);continue;}else{printf(添加'%s'成功!\n,stu[m].name);m++;}printf(是否继续?(y/n):);//询问是否继续scanf(%s,ch);}printf(正在返回...);fclose(fp);order();return;}voidshow()//显示联系人{FILE*fp;inti,m=0;if((fp=fopen(data,ab+))==NULL)//打开指定文件{printf(打开文件失败!正在返回...);Sleep(3000);return;}while(!feof(fp)){if(fread(&stu[m],LEN,1,fp)==1)m++;}fclose(fp);if(m0){printf(TITLE_T);printf(NAME);for(i=0;im;i++)printf(GESHI,NEIRONG);//将信息按指定格式输出printf(BOTTOM_B);}elseprintf(当前无记录!);printf(按任意键返回...);getch();}voiddel()//删除联系人函数{FILE*fp;inti,j,m=0;charsname[15];charch[2];if((fp=fopen(data,ab+))==NULL){printf(不能打开文件,正在返回...\n);Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf(当前无记录!正在返回...\n);Sleep(3000);return;}printf(请输入联系人姓名:);scanf(%s,sname);for(i=0;im;i++)if(strcmp(sname,stu[i].name)==0)break;if(i==m){printf(找不到'%s'!正在返回...,sname);Sleep(3000);return;}printf(已找到'%s',是否删除?(y/n),sname);scanf(%s,ch);if(strcmp(ch,Y)==0||strcmp(ch,y)==0)//判断是否要进行删除{for(j=i;jm;j++)stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置m--;//记录的总个数减1printf(删除'%s'成功!\n,sname);}if((fp=fopen(data,wb))==NULL){printf(打开文件失败!正在返回...\n);Sleep(3000);return;}for(j=0;jm;j++)//将更改后的记录重新写入指定的磁盘文件中if(fwrite(&stu[j],LEN,1,fp)!=1){printf(保存失败!正在返回...\n);Sleep(3000);}fclose(fp);show();}voidsearch()//自定义查找函数{FILE*fp;inti,m=0;charsname[15];charch[2];if((fp=fopen(data,ab+))==NULL){printf(打开文件失败!正在返回...\n);Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf(当前无记录!正在返回...\n);Sleep(3000);return;}back1:printf(请输入联系人姓名:);scanf(%s,&sname);for(i=0;im;i++)if(strcmp(sname,stu[i].name)==0)//查找输入的号码是否在记录中{printf(已找到'%s',是否显示?(y/n),sname);scanf(%s,ch);if(strcmp(ch,Y)==0||strcmp(ch,y)==0){printf(TITLE_T);printf(NAME);printf(GESHI,NEIRONG);//将查找出的结果按指定格式输出printf(BOTTOM_B);}else{printf(正在返回...);Sleep(3000);return;}}if(i==m+1){printf(找不到'%s',是否继续?(y/n):,sname);//未找到要查找的信息scanf(%s,ch);while(strcmp(ch,Y)==0||strcmp(ch,y)==0)//判断是否要继续查找联系人gotoback1;printf(正在返回...);Sleep(3000);return;}printf(按任意键返回...\n);getch();}voidmodify(){FILE*fp;inti,j,m=0;charsname[15];if((fp=fopen(data,ab+))==NULL){printf(打开文件失败!正在返回...\n);Sleep(3000);return;}while(!feof(fp))if(fread(&stu[m],LEN,1,fp)==1)m++;fclose(fp);if(m==0){printf(当前无记录!正在返回...\n);Sleep(3000);return;}printf(请输入联系人姓名:\n);scanf(%s,&sname);for(i=0;im;i++)if(strcmp(sname,stu[i].name)==0)//检索记录中是否有要修改的信息break;if(im){printf(已找到'%s',请修改!\n,sname);printf(请输入联系人姓名:\n);scanf(%s,stu[i].name);//输入名字printf(请输入联系人号码:\n);//输入号码scanf(%s,stu[i].num);}else{printf(找不到'%s'!正在返回...,sname);Sleep(3000);return;}if((fp=fopen(data,wb))==NULL){printf(打开文件失败!正在返回...\n);Sleep(3000);return;}for(j=0;jm;j++)//将新修改的信息写入指定的磁盘文件中if(fwrite(&stu[j],LEN,1,fp)!=1){printf(保存'%s'失败!正在返回...,sname);Sleep(3000);return;}fclose(fp);order();show();}voidtotal()//自定义计算总人数函数{FILE*fp;intm=0;if((fp=fopen(data,ab+))==NULL){printf(打开文件失败!正在返回...\n);Sleep(3000);return;}while(!feof(fp))i
本文标题:C语言简单通讯录
链接地址:https://www.777doc.com/doc-6125381 .html