C语言编写通讯录

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

注:本程序适用于大学程序设计课程的通讯录编写。程序没有问题可以运行但其中读取功能未编写,最终得分能在80分左右。下面是一些主要内容。一.课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言》课程后进行的一次全面的综合练习。本课程设计的目的和任务:1)巩固和加深学生对C语言课程的基本知识的理解和掌握;2)掌握C语言编程和程序调试的基本技能;3)利用C语言进行基本的软件设计;4)掌握书写程序设计说明文档的能力5)提高运用C语言解决实际问题的能力。二.课程设计要求1.分析课程设计题目的要求;2.写出详细设计说明;3.编写程序代码,调试程序使其能正确运行;4.设计完成的软件要便于操作和使用,有整齐、美观的使用界面;5.设计完成后提交课程设计报告和源代码文件的电子文档。二、课程设计内容基本功能:a)添加个人信息b)查询个人信息c)删除个人信息d)修改个人信息e)信息排序f)输出全部信息拓展功能:采用文件形式对通讯录进行操作,包括:a)写入文件b)读取文件创新(自拟)功能:程序实现的其它功能由个人自拟。通讯录至少应该有以下数据项:姓名,家庭住址,手机号码,邮编,E-mail。输入信息时要检查数据项手机、邮编、E-mail的合法性,手机号码:11位数字;邮编:6位数字;E-mail:包含@字符,且@两边都非空。对通讯录应该包含有以下操作(包括基本功能和拓展功能):a)向通讯录中添加信息;b)在通讯录中按姓名或手机号查找个人信息;c)删除通讯录中的个人信息;d)修改通讯录中的个人信息,并保存入文件;e)按不同数据项排序后列表输出通讯录中所有人的信息。通讯录中记录的数量没有限制。f)将通讯录中的数据写入文件和从文件读入数据。程序启动时先从文件读入数据,如果文件中没有数据则给出提示;写入文件时有两种方式,一为覆盖所有原有的内容;二为只将本次操作所修改的个人信息写入文件g)程序启动时先从文件读入数据,如果文件中没有数据则给出提示退出程序。三、详细设计说明通讯录1.添加2.查询3.删除4.修改5.排序6.输出全部信息7.写入文件0.退出8.读取文件选择1添加结束YYYYYYYYYNNNNNN2查询NNN删除修改排序输出全部信息写入文件读取文件退出3456780开始是否继续输入信息输入信息i=0结束NY图3.2添加功能流程图图3.3查询功能流程图开始判断通讯录中是否有此人输入查询的姓名输出“通讯录中没有此人”显示该人所有记录结束NY输入修改者姓名判断通讯录中是否有此人输出通讯录中没有此人依次修改内容结束NY图3.4修改功能流程图in+1输出一个记录i++结束Y图3.5输出全部信息流程图name[j+1])0strcpy(tmp,name[j])strcpy(name[j],name[j+1])strcpy(name[j+1],tmp)输出名结束图3.6排序功能流程图图3.7删除功能流程图设计思路建立一个函数,用来添加、显示、删除、查询、修改、保存通讯录等信息,完成通讯录的功能。主函数可以调用八个子函数,分别完成添加记录、查询记录、删除记录、修改记录、排序记录、输出全部信息记录、写入文件、读取文件。退出系统等功能。在主函数中可以以1、2、3、4、5、6、7、8数字键分别可以执行某个功能模块。开始输入删除的姓名判断通讯录中是否有此人输出“通讯录中没有此人”删除该项纪录结束NY附录源程序#includestdio.h#includestdlib.h#includestring.h#includeconio.htypedefstruct{charName[10];//姓名charTel[15];//电话号码charEmail[20];//邮箱charpostcode[8];charadds[20];//住址}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│7.写入文件│\n);printf(\t\t│8.读取文件│\n);printf(\t\t│0.退出│\n);printf(\t\t└─────────┘\n);printf(\t\t请您选择(0-8):);c=getchar();}while(c'0'||c'8');return(c-'0');}intInput(Personper[],intn){inty,i=0,z=0;charsign,x[10],*p,*q,*r;while(sign!='n'&&sign!='N'){printf(\t姓名:);scanf(\t%s,per[n+i].Name);printf(\t邮编:);scanf(\t%s,per[n+i].postcode);p=per[n+i].postcode;for(y=0;y6;y++){if(p[y]='0'&&p[y]='9');else{printf(输入的邮编不合理,请重新输入:);scanf(\t%s,per[n+i].postcode);}}printf(\t手机号码:);scanf(\t%s,per[n+i].Tel);q=per[n+i].Tel;for(y=0;y11;y++){if(q[y]='0'&&q[y]='9');else{printf(输入的手机号不合理,请重新输入:);scanf(\t%s,per[n+i].Tel);}}printf(\t通讯住址:);scanf(\t%s,per[n+i].adds);printf(\t电子邮箱:);scanf(\t%s,per[n+i].Email);r=per[n+i].Email;for(y=0;r[y]!='\0';y++){if(r[y]=='@')z++;}if(z!=1){printf(输入的邮箱不合理,请重新输入:);scanf(\t%s,per[n+i].Email);}gets(x);printf(\n\t是否继续添加?(Y/N));scanf(\t%c,&sign);i++;}return(n+i);}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此人邮编:%s\n,per[i].postcode);printf(\t手机号:%s\n,per[i].Tel);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].Tel,s)!=0&&in)i++;if(i==n){printf(\t通讯录中没有此人!\n);return;}printf(\t此人姓名:%s\n,per[i].Name);printf(\t此人邮编:%s\n,per[i].postcode);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此人姓名:%s\n,per[i].Name);printf(\t此人邮编:%s\n,per[i].postcode);printf(\t手机号:%s\n,per[i].Tel);printf(\t电子邮箱:%s\n,per[i].Email);};}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].Name,per[j+1].Name);strcpy(per[j].postcode,per[j+1].postcode);strcpy(per[j].adds,per[j+1].adds);strcpy(per[j].Email,per[j+1].Email);}printf(\t\t\t已经成功删除!\n);return(n-1);}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%s,per[i].Name);printf(\t邮编:);scanf(\t%s,per[i].postcode);printf(\t手机号:);scanf(\t%s,per[i].Tel);printf(\t通讯住址:);scanf(\t%s,per[i].adds);printf(\t电子邮箱:);scanf(\t%s,per[i].Email);printf(\t修改成功!);}voidWritetoText(Personper[],intn){inti=0;FILE*fp;//定义文件指针charfilename[20];//定义文件名printf(\t写入到文件\n);//输入文件名printf(\t请输入所写入的文件名:);scanf(\t%s,filename);if((fp=fopen(filename,w))==NULL){printf(\t无法打开文件\n);system(pause);return;}fprintf(fp,******************************************通讯录******************************************\n);fprintf(fp,姓名邮编手机号通讯地址电子邮箱\n);fprintf(fp,---------------------------

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功