通讯录信息管理系统设计计算机学院计算机科学与技术专业1.课程设计的目的学习了C语言程序设计这门课程之后,使我对程序设计有了一定的了解,为了熟练掌握C语言的语法特点、及其数据结构,提高自身编写程序的能力。通过课程设计实现理论知识与实际情况的结合,使所学知识能够在现实社会中起到一定的作用,防止所编写的程序脱离实际,让程序可以更好的发挥作用,以便减轻实际工作中所遇到的繁琐步骤,提高现实工作中的效率。此外通过课程设计提高逻辑思考能力和解决实际问题的能力。程序设计中,语句的语法和常量变量的定义都有严格的要求,有时输了一个中文标点、打错了一个字母,编译就不通过,程序无法正常运行。因此,程序设计初学阶段,学生经常会犯这样的错误,可能要通过几次乃至十多次的反复修改、调试,才能成功,但这种现象会随着学习的深入而慢慢改观。这当中就有一个严谨治学、一丝不苟的科学精神的培养,又有一个不怕失败、百折不挠品格的锻炼。通讯录信息管理系统是生活中不可缺少的部分编写了一个通讯录信息管理系统是十分必要的。本程序设计具有通讯信息的录入,进行保存、查找、删除等功能,操作界面简洁美观,易于操作。程序用了条件、循环、指针、结构体等知识点,综合了文件的打开和保存编写的。软件运用菜单实现交互式管理,用户轻松的按键既可实现对软件的操作,操作简单易懂,功能丰富,可以很好的满足的需要。通过对通讯录管理系统的设计,进一步理解和掌握C语言这门课程的知识点,能够熟练的调用各种函数,把各种C语句有机的结合起来,提高自己C语言程序设计的能力,为今后解决实际问题打下良好基础。2.设计方案论证2.1设计思路建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。主函数可以调用六个子函数,分别完成添加记录、显示记录、删除记录、查询记录、修改记录、保存记录、退出系统等功能。在主函数中可以以1、2、3、4、5、6数字键分别可以执行某个功能模块。2.2程序设计2.2.1根据图1定义数据类型建立函数typedefstruct{charNum;//编号charName[10];//姓名charTel[15];//电话号码charEmail[20];//邮箱charage[8];//年龄charadds[20];//住址}Person;2.2.2主函数及其流程图定义主函数main()和一系列的功能函数,只有通过这些函数才可实现程序通讯录信息管理系统添加记录显示记录删除记录保存记录查询记录修改记录退出的功能。每次使用都会调用主函数。主函数主要是利用switch语句对数据进行处理,流程图如下:2.2.3增加函数及其流程图2.2.3.1.添加通讯录记录流程图:开始选择1Y添加记录选择2YYYYYY保存记录修改记录查询记录删除记录显示记录选择6选择5选择4选择3NNNNNN结束2.2.3.2.显示通讯录记录流程图:2.2.3.3.删除通讯录记录流程图:2.2.3.4.查询通讯录记录流程图:2.2.3.5.修改通讯录记录流程图:2.3源程序#includestdio.h#includestdlib.h#includestring.htypedefstruct{charNum;//编号charName[10];//姓名charTel[15];//电话号码charEmail[20];//邮箱charage[8];//年龄charadds[20];//住址charrelation[40];//关系}Person;Personpe[80];intmenu_select(){charc;do{system(cls);printf(\t\t*****通讯录*****\n);printf(\t\t┌───────┐\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│0.退出程序│\n);printf(\t\t└───────┘\n);printf(\t\t请您选择(0-6):);c=getchar();}while(c'0'||c'6');return(c-'0');}intInput(Personper[],intn){inti=0;charsign,x[10];while(sign!='n'&&sign!='N'){printf(\t编号:);scanf(\t%d,&per[n+i].score);printf(\t姓名:);scanf(\t%s,per[n+i].name);printf(\t年龄:);scanf(\t%s,per[n+i].age);printf(\t电话号码:);scanf(\t%s,per[n+i].num);printf(\t通讯住址:);scanf(\t%s,per[n+i].adds);printf(\t电子邮箱:);scanf(\t%s,per[n+i].email);printf(“\t关系:”);scanf(“\t%s”,per[n+i].relation);gets(x);printf(\n\t是否继续添加?(Y/N));scanf(\t%c,&sign);i++;}return(n+i);}voidDisplay(Personper[],intn){inti;printf(----------------------------------------------------------------------\n);/*格式*/printf(编号姓名年龄关系电话号码通讯地址电子邮箱\n);printf(----------------------------------------------------------------------\n);for(i=1;in+1;i++){printf(%-5d%-8s%-6s%-40s%-13s%-15s%-15s\n,per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].relation,per[i-1].num,per[i-1].adds,per[i-1].email);if(i1&&i%10==0){printf(\t-----------------------------------\n);printf(\t);system(pause);printf(\t-----------------------------------\n);}}printf(----------------------------------------------------------------------\n);system(pause);}intDelete_a_record(Personper[],intn){chars[20];inti=0,j;printf(\t请输入想删除记录中的名字:);scanf(%s,s);while(strcmp(per[i].name,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return(n);}for(j=i;jn-1;j++){strcpy(per[j].num,per[j+1].num);strcpy(per[j].name,per[j+1].name);strcpy(per[j].age,per[j+1].age);strcpy(per[j].relation,per[j+1].relation);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].email,per[j+1].email);per[j].score=per[j+1].score;}printf(\t\t\t已经成功删除!\n);return(n-1);}voidQuery_a_record(Personper[],intn){intm;printf(\t\n请选择查询方式:\n);printf(\t┌──────┐\n);printf(\t│1------姓名│\n);printf(\t│2------电话│\n);printf(\t│3------地址│\n);printf(\t│4------返回│\n);printf(\t└──────┘\n);printf(请选择:);scanf(%d,&m);while(m!=1&&m!=2&&m!=3&&m!=4){printf(输入错误,请重新选择:);scanf(%d,&m);}if(m==1){chars[20];inti=0;printf(\t请输入想查询的姓名:);scanf(\t%s,s);while(strcmp(per[i].name,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t此人编号:%d\n,per[i].score);printf(\t此人年龄:%s\n,per[i].age);printf(\t与我的关系:%s\n,per[i].relation);printf(\t电话号码:%s\n,per[i].num);printf(\t通讯地址:%s\n,per[i].adds);printf(\t电子邮箱:%s\n,per[i].email);};if(m==2){chars[20];inti=0;printf(\t请输入想查询的电话:);scanf(\t%s,s);while(strcmp(per[i].num,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t此人编号:%d\n,per[i].score);printf(\t此人姓名:%s\n,per[i].name);printf(\t此人年龄:%s\n,per[i].age);printf(\t与我的关系:%s\n,per[i].relation);printf(\t通讯地址:%s\n,per[i].adds);printf(\t电子邮箱:%s\n,per[i].email);};if(m==3){chars[20];inti=0;printf(\t请输入想查询的地址:);scanf(\t%s,s);while(strcmp(per[i].adds,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t此人编号:%d\n,per[i].score);printf(\t此人姓名:%s\n,per[i].name);printf(\t此人年龄:%s\n,per[i].age);printf(\t与我的关系:%s\n,per[i].relation);printf(\t电话号码:%s\n,per[i].num);printf(\t电子邮箱:%s\n,per[i].email);};}voidChange(Personper[],intn){chars[20];inti=0;printf(\t请输入想修改的记录中的名字:);scanf(%s,s);while(strcmp(per[i].name,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t编号:);scanf(\t%d,&per[i].score);printf(\t姓名:);scanf(\t%s,per[i].name);printf(\t年龄:);scanf(\t%s,per[i].age);scanf(\t%s,per[i].relation);printf(\t关系:);printf(\t电话号码