1.需求分析根据题目要求,通讯录保存在文件中,要提供文件的输入和输出功能;还有就是要提供通讯录添加(个人信息包括姓名、学号、年龄、住址、电子邮件等)、删除、显示、修改等基本功能。2.概要设计系统总体设计是信息的输入、信息的编辑和退出。系统功能模块如下:1.添加通讯录;2.输出通讯录;3.查找通讯录;4.修改通讯录;5.删除通讯录;6.退出通讯录;3.详细设计1.通讯录里无信息,所以要添加信息。用键盘逐个输入通讯录里联系人的信息。2.输出通讯录用于让使用者观看通讯录里所有的信息。YN开始新建联系人是否继续添加联系人?结束3.查找通讯录是让使用者可以通过电话或姓名来查找通讯录里的联系人。4.修改通讯录是让使用者通过姓名查找到通讯录里的联系人,然后其作出修改。开始按姓名查找按号码查找结束开始输出所有联系人信息结束5.删除通讯录是用来按照联系人的姓名或电话来单独删除通讯录中一些不想要的联系人。还可以集体删除通讯录中的联系人。开始输入姓名查找联系人选择要修改的信息是否继续修改其它联系人结束YN6.退出通讯录系统。4.主要源程序代码#includestdio.h#includestdlib.h#includestring.h#includeconio.hstructrecord{charname[20];charage[20];charphone[20];charadress[40];charnumber[30];chare_mail[20];}contact[500];intNO=0;FILE*fp;voidmainmenu();voidnewrecord();voidbrowsemenu();voidsearchmenu();开始删除单人按姓名删除按电话删除删除集体结束voidsearchname();voidsearchphone();voidmodifymenu();voiddeletemenu();voiddeleteall();voiddeletesingle();voiddeletename();voiddeletephone();intloadfile();voidsavefile();voidmain(){printf(\n\t\t:)欢迎使用通讯录管理系统beta);printf(\n\t\t文件导入中……请稍后……\n\n\n\n\n);system(cls);loadfile();while(1){mainmenu();}}voidmainmenu(){charchoice;system(cls);printf(\n\t\t********************主菜单********************);printf(\n\t\t******************1-新建菜单******************);printf(\n\t\t******************2-浏览菜单******************);printf(\n\t\t******************3-查找菜单******************);printf(\n\t\t******************4-修改菜单******************);printf(\n\t\t******************5-删除菜单******************);printf(\n\t\t******************6-退出******************);printf(\n\t\t************************************************);printf(\n\t\t请选择:);choice=getch();switch(choice){case'1':newrecord();break;case'2':browsemenu();break;case'3':searchmenu();;break;case'4':modifymenu();break;case'5':deletemenu();break;case'6':exit(0);default:mainmenu();}}voidnewrecord(){printf(\n\t\t****************请输入联系人信息****************\n);printf(\n\t\t输入姓名:);scanf(%s,&contact[NO].name);printf(\n\t\t输入年龄:);scanf(%s,&contact[NO].age);printf(\n\t\t输入电话号码:);scanf(%s,&contact[NO].phone);printf(\n\t\t输入家庭住址:);scanf(%s,&contact[NO].adress);printf(\n\t\t输入学号:);scanf(%s,&contact[NO].number);printf(\n\t\t输入电子邮件:);scanf(%s,&contact[NO].e_mail);NO++;savefile();printf(\n\t\t是否继续添加?(y/n):);if(getch()=='y')newrecord();return;}voidbrowsemenu(){inti;system(cls);if(NO!=0){printf(\n\t\t***************以下为通讯录所有信息************);for(i=0;iNO;i++){printf(\n\t\t姓名:%s,contact[i].name);printf(\n\t\t年龄:%s,contact[i].age);printf(\n\t\t联系电话:%s,contact[i].phone);printf(\n\t\t家庭住址:%s,contact[i].adress);printf(\n\t\t学号:%s,contact[i].number);printf(\n\t\t电子邮件:%s,contact[i].e_mail);printf(\t\t);if(i+1NO){printf(\n\t\t__________________________);system(pause);}}printf(\n\t\t************************************************);}elseprintf(\n\t\t通讯录中无任何纪录);printf(\n\t\t按任意键返回主菜单:);getch();return;}voidsearchmenu(){charchoice;system(cls);printf(\n\t\t*******************查找菜单*******************);printf(\n\t\t*****************1-按姓名查找*****************);printf(\n\t\t*****************2-按电话查找*****************);printf(\n\t\t*****************3-返回主菜单*****************);printf(\n\t\t************************************************);printf(\n\t\t请选择:);choice=getch();switch(choice){case'1':searchname();break;case'2':searchphone();break;case'3':mainmenu();break;}}voidsearchname(){intmark=0;inti;inta=0;charname[20];printf(\n\t\t*****************按姓名查找*******************);printf(\n\t\t请输入姓名:);scanf(%s,name);for(i=a;iNO;i++){if(strcmp(contact[i].name,name)==0){printf(\n\t\t************以下是您查找的联系人信息**********);printf(\n\t\t姓名:%s,contact[i].name);printf(\n\t\t年龄:%s,contact[i].age);printf(\n\t\t联系电话:%s,contact[i].phone);printf(\n\t\t家庭住址:%s,contact[i].adress);printf(\n\t\t学号:%s,contact[i].number);printf(\n\t\t电子邮件:%s,contact[i].e_mail);printf(\n\t\t************************************************);printf(\n\t\t按任意键返回主菜单:);mark++;getch();return;return;}}if(mark==0){printf(\n\t\t没有该姓名的联系人纪录);printf(\n\t\t按任意键返回主菜单);getch();return;}}voidsearchphone(){intmark=0;inti;inta=0;charphone[10];printf(\n\t\t******************按电话查找******************);printf(\n\t\t请输入电话:);scanf(%s,phone);for(i=0;iNO;i++){if(strcmp(contact[i].phone,phone)==0){printf(\n\t\t*************以下是您查找的联系人信息*********);printf(\n\t\t姓名:%s,contact[i].name);printf(\n\t\t年龄:%s,contact[i].age);printf(\n\t\t联系电话:%s,contact[i].phone);printf(\n\t\t家庭住址:%s,contact[i].adress);printf(\n\t\t学号:%s,contact[i].number);printf(\n\t\t电子邮件:%s,contact[i].e_mail);printf(\n\t\t************************************************);printf(\n\t\t按任意键返回主菜单:);mark++;getch();return;}}if(mark==0){printf(\n\t\t没有该联系人信息);printf(\n\t\t按任意键返回主菜单);getch();return;}}voidmodifymenu(){intmark=0;inti,k;inta=0;intt=0;charchoice;charname[20];structrecordmodify;system(cls);printf(\n\t\t请输入您要修改的姓名:);scanf(%s,name);for(i=a;iNO;i++){if(strcmp(contact[i].name,name)==0){k=i;mark=1;modify=contact[i];printf(\n\t\t**********以下是您将修改的联系人信息**********);printf(\n\t\t姓名:%s,contact[i].name);printf(\n\t\t年龄:%s,contact[i].age);printf(\n\t\t联系电话:%s,contact[i].phone);printf(\n\t\t家庭住址:%s,contact[i].adress);pr