您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 个人通讯录管理(c语言课程设计)
安徽工业大学《C语言课程设计》实习综合报告课题名称:个人通讯录管理系统实习成员:王刚学号:109074372专业班级:网络工程103班指导教师:郑啸老师目录一.问题描述……………………………………………..2二.各功能流程图与设计思路…………………………..32.1显示模块……………………………………….……32.2查找模块……………………………………………4..2.3添加模块…………………………………………..…62.4删除模块………………………………………..……82.5修改模块…………………………………………..…9三、文件的读取与保存…………………………………….11四、程序源代码……………………………………….……12五、调试与运行结果…………………………………….…18六、计算机学院课程设计评定意见……………………….24一.问题描述设计通讯录包含以下功能:(1)通讯录的每一条信息包括姓名、单位、固定电话、移动手机、分类(如同事、朋友、同学、家人等)、EMAIL、QQ等。(2)输入功能:可以一次完成若干条信息的输入。(3)显示功能:完成全部通讯录信息的显示。(4)查找功能:可以按姓名等多种方式查找通讯信息。(5)增加、删除、修改功能:完成通讯录信息的多种更新。二.各功能流程图与设计思路Menu菜单:开始菜单menu显示查找增加删除修改保存结束运用switch()进行操作:case'1':显示功能,list()函数说明:利用for循环,逐个输出已保存的内容代码如下://*****************显示通讯录中的内容*************voidlist(){printf(编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n);for(i=0;im;i++){if(rec[i].name[0]){printf(%d、%-8s%-10s%-12s%-18s%-18s%-12s\n,rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);}}printf(\t\t\t----------------END--------------\n);开始For循环输出信息结束YN}case'2':查找功能,search()函数说明:先用switch让操作者选择是按姓名查找还是按编号查找,然后再按操作者的输入,逐个判断是否有操作者要查的联系人信息,若有则输出此人信息,若没有则输出“通讯录中没有您要查找的联系人”代码如下://*****************查找联系人的信息********************开始输入查找的姓名或编号For语句循环IfStrcmp==0输出相关信息结束YNNYvoidsearch(){charxm[10];charch;intd;printf(→1.按姓名查找\n);printf(→2.按编号查找\n);printf(请选择...\n);ch=getchar();getchar();switch(ch){case'1':printf(输入查找的姓名\n);gets(xm);for(i=0;im;i++){if(strcmp(xm,rec[i].name)==0){printf(\t\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆☆\n\n);printf(编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n);printf(%d、%-8s%-10s%-12s%-18s%-18s%-12s\n,rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);break;}}if(i==m)printf(\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n);break;case'2':printf(输入查找的编号\n);scanf(%d,&d);for(i=0;im;i++){if(d==rec[i].num){printf(\t\t☆☆☆☆☆这是您需要查找的联系人的信息☆☆☆☆\n\n);printf(编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n);printf(%d、%-8s%-10s%-12s%-18s%-18s%-12s\n,rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);break;}}if(i==m)printf(\t\t\t☆☆☆☆☆通讯录中没有您要查找的联系人☆☆☆☆☆\n);break;default:printf(输入错误!!);}getchar();}case'3':增加功能,app()函数开始输入信息判断是否继续添加结束YN说明:按照屏幕的提示,依次输入要添加联系人的各项信息,并保存到结构体当中,输入完成后,提示是否继续添加,若是,则进入循环,若否,则结束。代码如下://*******************添加联系人*******************voidapp(){charan;puts(当前通讯录中的内容\n);list();do{rec[m].num=m+1;printf(请按照提示输入新添加记录的各项信息\n);printf(姓名:);gets(rec[m].name);printf(\n电话:);gets(rec[m].tel);printf(\n手机:);gets(rec[m].celtel);printf(\n工作单位:);gets(rec[m].dw);printf(\nEMAIL:);gets(rec[m].email);printf(\nQQ:);gets(rec[m].qq);puts(\n这是新添加联系人的信息!\n);printf(编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n);printf(%d、%-8s%-10s%-12s%-18s%-18s%-12s\n,rec[m].num,rec[m].name,rec[m].tel,rec[m].celtel,rec[m].dw,rec[m].email,rec[m].qq);m++;puts(\t\t\t☆☆☆☆☆新纪录输入完成!☆☆☆☆☆\n);puts(☆继续添加吗?(y/n));an=getchar();getchar();}while(an=='y');}case'4':删除功能,dele()函数;开始输入要删除的记录号判断是否存在该信息删除结束YN说明:输入要删除的编号,判断是否存在,若不存在就要重新输入,若存在,则利用循环进行删除操作,从要删除的编号开始,逐个由后一项往前一项覆盖。代码如下://*****************删除联系人的记录********************voiddele(){inta;intn=0;list();do{n++;if(n1){printf(没有此记录,请重新输入...\n);}printf(删除几号记录?\n);scanf(%d,&a);}while(am&&a0||a0);if(a!=m+1){for(i=a;im;i++){rec[i-1]=rec[i];rec[i-1].num=i;}m--;list();printf(\t\t\t☆☆☆☆☆完成删除!☆☆☆☆☆\n);}getchar();}case'5':修改功能,correct()函数;说明:输入修改的编号,判断是否存在,若存在则输出此人初始信息,再按提示输入修改后的新信息,若不存在,则结束操作。代码如下://*******************修改联系人的信息*****************voidcorrect(){charxm[10];boolk=1;list();开始输入要修改的记录号判断是否存在输入新信息结束YNprintf(输入要修改联系人的姓名:);gets(xm);for(i=0;im;i++){if(strcmp(xm,rec[i].name)==0){k=0;printf(\n这是您要修改联系人的初始信息\n\n);printf(编号姓名电话\t手机\t工作单位\tEMAIL\t\tQQ\n);printf(%d、%-8s%-10s%-12s%-18s%-18s%-12s\n,rec[i].num,rec[i].name,rec[i].tel,rec[i].celtel,rec[i].dw,rec[i].email,rec[i].qq);printf(请输入修改后的电话号码:);gets(rec[i].tel);printf(\n请输入修改后的手机:);gets(rec[i].celtel);printf(\n请输入修改后的工作单位:);gets(rec[i].dw);printf(\n请输入修改后的EMAIL:);gets(rec[i].email);printf(\n请输入修改后的QQ:);gets(rec[i].qq);list();printf(\t\t\t☆☆☆☆☆修改完成!☆☆☆☆☆\n);break;}}if(k)printf(输入有误,通讯录中没有此联系人信息\n);}三.文件的读取与保存读取://***************从文件读记录到通讯录中*****************voidload(){FILE*fp;if((fp=fopen(tongxunlu.txt,rb))==NULL){printf(Can'topenfile\n);exit(0);}for(i=0;iSIZE;i++){if(fread(&rec[i],sizeof(structrecord),1,fp)!=1){if(feof(fp))break;printf(Filereaderror!\n);}rec[i].num=i+1;m++;}list();printf(\t\t\t☆☆☆☆☆读取成功!☆☆☆☆☆\n);fclose(fp);}保存://******************保存通讯录内容到文件中*************voidsave(){FILE*fp;if((fp=fopen(tongxunlu.txt,wb))==NULL){printf(Can'topenfile);exit(0);}list();for(i=0;im;i++)if(fwrite(&rec[i],sizeof(structrecord),1,fp)!=1)printf(Filewreteerror!\n);fclose(fp);printf(\t\t\t☆☆☆☆☆保存成功!☆☆☆☆☆\n);}四.程序源代码#includestdio.h#includestdlib.h#includestring.h#defineSIZE100inti,m=0;//m为当前通讯录中的记录数charmenu();//选单voidlist();//显示voidsearch();//查找voidapp();//增加voiddele();//删除voidcorrect();//修改voidsave();//保存voidload();//读入structrecord//结构体包含的联系人信息{intnum;//在通讯录中的编号charname[10];//联系人姓名chartel[12];//联系人电话号码charceltel[12];//联系人手机号码chardw[20];//联系人工作单位charemail[20];//联系人邮箱charqq[12];//联系人QQ}rec[SIZE];voidmain(){charchoice;charan;while(1){choice=menu();switch(choice){case'1':printf(
本文标题:个人通讯录管理(c语言课程设计)
链接地址:https://www.777doc.com/doc-2342433 .html