欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    C语言课程设计通讯录管理系统 .doc

    • 资源ID:2384864       资源大小:600KB        全文页数:48页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计通讯录管理系统 .doc

    中国海洋大学青岛学院C语言课程设计报告书题 目通讯录管理系统学生姓名指导教师学 院/系专业班级 组内分工姓名主要任务占系统比例主函数、修改、拨号,通话记录25%删除、退出25%查询25%创建25%目 录1 前言12 需求分析23 模块设计图34 NS流程图清单45 存储结构及函数说明56 课程设计结果67 实践心得体会71 前言1. 目的:加深对C语言课程所学知识的理解,进一步巩固C语言编程方法。学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。培养良好的编程方法。2. 内容:设计一个简易的手机通讯录管理系统。该题目要求熟练的掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算数运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握C语言基本知识的应用,包括链表、结构体、指针、文件读写,以及函数的调用操作等。其中结构体,函数的调用,算法的设计是尤为重要的。2 需求分析根据用户的需求,总结出系统将实现以下功能:创建:新增联系人:可以增加一个新的联系人,依次录入姓名、手机、电话号码、电子邮件、公司。新增分类:可以增加一个联系人的分类。例如、朋友、同事、家人等。查询:按号码查询:输入你所要查询的联系人号码,自动显示号码所匹配联系人的详细信息。按姓名查询:输入所要查询的联系人姓名,自动显示号码所匹配联系人的详细信息。查询分类:可以显示自定义的所有分类。修改:修改联系人信息:可以修改联系人的纤细信息。例如修改联系人的姓名、手机号码、电话号码、电子邮件、公司等。添加联系人到类:可以新增一个联系人同时给他确定所属的分类,也可以把一个现有的联系人添加到一个存在的分类。更改类名:可以更改分类的名称,以及所有此类名的联系人的分类属性。删除:删除联系人:删除所有此联系人的信息。删除分类:可以删除分类并且将所有的此分类下的联系人分类属性更改为默认属性。删除分类中的联系人:通过输入联系人的姓名或者号码将此联系人从此分类中删除,并将联系人的分类属性改为默认。拨号:按姓名拨号:输入要拨打的联系人的姓名可选择要拨打的号码,电话号码或者手机号码,实现虚拟拨号。按号码拨打:如果你要拨打的号码中联系人中已存在,自动在屏幕上显示联系人姓名,实现虚拟拨号。通话记录:将拨打过的号码保存起来并可以通过查询通话记录进行查询。退出:当选择此功能时将退出系统。3 模块设计图通讯录管理系统通话记录哭拨号删除修改查询退出创建添加联系人到类按姓名拨号查询通话记录按号码拨号删除类中联系人删除分类删除联系人查询分类修改联系人修改分组新增联系人新增分类按姓名查询按号码查询详细功能介绍:创建:新增联系人:可以增加一个新的联系人,依次录入姓名、手机、电话号码、电子邮件、公司。新增分类:可以增加一个联系人的分类。例如、朋友、同事、家人等。查询:按号码查询:输入你所要查询的联系人号码,自动显示号码所匹配联系人的详细信息。按姓名查询:输入所要查询的联系人姓名,自动显示号码所匹配联系人的详细信息。查询分类:可以显示自定义的所有分类。修改:修改联系人信息:可以修改联系人的纤细信息。例如修改联系人的姓名、手机号码、电话号码、电子邮件、公司等。添加联系人到类:可以新增一个联系人同时给他确定所属的分类,也可以把一个现有的联系人添加到一个存在的分类。更改类名:可以更改分类的名称,以及所有此类名的联系人的分类属性。删除:删除联系人:删除所有此联系人的信息。删除分类:可以删除分类并且将所有的此分类下的联系人分类属性更改为默认属性。删除分类中的联系人:通过输入联系人的姓名或者号码将此联系人从此分类中删除,并将联系人的分类属性改为默认。拨号:按姓名拨号:输入要拨打的联系人的姓名可选择要拨打的号码,电话号码或者手机号码,实现虚拟拨号。按号码拨打:如果你要拨打的号码中联系人中已存在,自动在屏幕上显示联系人姓名,实现虚拟拨号。通话记录:将拨打过的号码保存起来并可以通过查询通话记录进行查询。退出:当选择此功能时将退出系统。4 NS流程图清单主函数:void main()主函数:switch(choose)case 1case 2case 3case 4case 5case 6case 0defaultsystem("cls");Addmenu();调用新增菜单函数Add();调用新增函数system("cls");Searchmenu();调用查询菜单函数Search();调用查询函数system("cls");Changemenu();调用更改菜单函数Change();调用更改函数system("cls");Deletemenu();调用删除菜单函数Del();调用删除函数system("cls");Callmenu();调用拨号菜单函数Call();调用拨号函数system("cls");Recordmenu();调用查询通话记录菜单函数Record();调用查询通话记录函数exit(0);printf("nttt请输入0-6之间的一个数!n");新增模块:void Add()Addmenu():提示新增联系人种类Add():switch(choice)case 1case 2case 0defaultsystem("cls");creatContacts();/*创建联系人*/system("cls");creatClasses();/*创建分类*/system("cls");main();/*返回主函数*/printf("nttt请输入0-2之间的一个数!n");创建联系人函数:void creatContacts()while(1)打开文件按提示录入信息 head1=readContact(); p2=head1;while(p2!=NULL)if(strcmp(p2->name,p1->name)=0)假 真printf("ntt联系人已存在!n");break;p2=p2->next;假 if(p2=NULL) 真fprintf(fp,"%s %s %s %s %s %sn",p1->name,p1->telephoneno,p1->phoneno,p1->email,p1->company,p1->classification);p1=(struct contact *)malloc(LEN);printf("ntt联系人创建成功!n");假 if(fclose(fp) 真printf("ntt文件关闭失败!n"); exit(0);printf("nntt是否要继续创建?(1/0)t"); scanf("%d",&select);假 if(select!=1) 真break;创建分类函数:void creatClasses()while(1) 按提示录入信息 head=readClassification(); p=head;while(p!=NULL) if(strcmp(p1->class_name,p->class_name)=0) 假 真printf("ntt分类已存在!n"); break;p=p->next; if(p=NULL) 假 真 if(fp=fopen("分类.txt","a")=NULL)假 真printf("ntt文件打开失败!n");exit(0);fprintf(fp,"%sn",p1->class_name); p1=(struct classification *)malloc(sizeof(struct classification);printf("ntt分类创建成功!n"); if(fclose(fp)假 真printf("ntt文件关闭失败!n");exit(0);printf("nntt是否要继续创建?(1/0)t");scanf("%d",&select);if(select!=1)假 真break;读取联系人函数:struct contact *readContact()int n; FILE *fp; struct contact *head; struct contact *p1,*p2;p1=p2=(struct contact *)malloc(LEN); head=NULL; n=0; if(decideContact()=0) 判断contact文件是否为空函数 假 真return head; if(fp=fopen("contact.txt","r")=NULL | feof(fp) 真 假return head;while(!feof(fp)fscanf(fp,"%s %s %s %s %s %sn",p1->name,p1->telephoneno,p1->phoneno,p1->email,p1->company,p1->classification);n+; if(n=1)真 假head=p1;p2->next=p1;p2=p1; p1=(struct contact *)malloc(LEN);p2->next=NULL; fclose(fp); return head;读取分类函数:struct classification *readClassification()FILE *fp; int n; struct classification *head; struct classification *p1,*p2; n=0;p1=p2=(struct classification *)malloc(sizeof(struct classification); head=NULL; if(decideClassification()=0) 判断分类文件是否为空函数假 真return head; if(fp=fopen("分类.txt","r")=NULL | feof(fp) 真 假return head;while(!feof(fp)fscanf(fp,"%sn",p1->class_name); n+; if(n=1) 真 假head=p1;p2->next=p1;p2=p1; p1=(struct classification *)malloc(sizeof(struct classification);p2->next=NULL; fclose(fp); return head;查询模块:void Search() int choice; printf("ntt请输入你的选择:t"); scanf("%d",&choice);switch(choice)case 1case 2case 3case 0defaultsearchNumber();按号码查询break;searchName();按姓名查询break;searchClass();按分类查询break;main();/*返回主函数*/printf("nttt请输入0-3之间的一个数!n");按号码查询:int searchNumber()while(1)system("cls");int select; char number18; struct contact *head; struct contact *p; head=readContact(); if(head=NULL)真 假printf("nttt不存在联系人!n");printf("ntttt 按号码查询n");printf("n*n");printf("nttt请输入你要查询的号码:t");scanf("%s",number);p=head;while(p!=NULL) if(strcmp(p->phoneno,number)=0|strcmp(p- >telephoneno,number)=0) 真 假 输出查找到的信息p=p->next;if(p=NULL) 真 假printf("nttt不存在该联系人!n");printf("nttt是否要继续?(1/0)t"); scanf("%d",&select); if(select!=1) 真 假break; return 1;按姓名查询:int searchName()while(1)system("cls");int select; char name18; struct contact *head; struct contact *p; head=readContact(); if(head=NULL)真 假printf("ntt不存在联系人!n");printf("ntttt 按姓名查询n");printf("n*n");printf("nttt请输入你要查询的联系人:t");scanf("%s",name);p=head;while(p!=NULL) if(strcmpstrcmp(p->name,name)=0 真 假 输出查找到的信息p=p->next;if(p=NULL) 真 假printf("nttt不存在该联系人!n");printf("nttt是否要继续?(1/0)t"); scanf("%d",&select); if(select!=1) 真 假break; return 1;显示联系人函数:int allContacts()int choice; struct contact *head; struct contact *p; head=readContact();if(head=NULL) 真 假printf("ntt不存在联系人!n");printf("nntt是否要创建联系人?(1/0)t");scanf("%d",&choice);p=head; printf("ntttt联系人n");printf("ntt-n"); if(choice=1) 真 假while(p!=NULL)creatContacts();printf("ntt%sn",p->name); p=p->next;printf("ntt-n");return 1;按分类查询:int searchClass()while(1)system("cls");int select;char classname19;struct classification *head;struct contact *head1;struct classification *p;struct contact *p1;head=readClassification(); if(head=NULL)真 假printf("ntt不存在分类!n");printf("ntttt 分类查询n");printf("n*n");printf("nttt请输入你要查询的分类:t");scanf("%s",classname);p=head;while(p!=NULL) if(strcmp(classname,p->class_name)=0) 真 假 printf("nttt%sn",p->class_name);head1=readContact();if(p=NULL) 假 真 p1=head1;printf("ntt-n");return 0; while(p1!=NULL) if(strcmp(p1->classification,p->class_name)=0) 真 假printf("nttt%sn",p1->name);p1=p1->next;printf("ntt-n"); break;p=p->next; if(p=NULL) 真 假printf("ntt不存在该分类!n");printf("nntt是否要继续查询?(1/0)t");scanf("%d",&select);if(select!=1) 真 假break; return 1;显示分类函数:int allClasses()int choice; struct classification *head; struct classification *p; head=readClassification();if(head=NULL) 真 假printf("ntt不存在分类!n");printf("nntt是否要创建分类?(1/0)t");scanf("%d",&choice);p=head; printf("ntttt分类n");printf("ntt-n"); if(choice=1) 真 假while(p!=NULL)creatClasses();printf("ntt%sn",p->class_name); p=p->next;printf("ntt-n");return 1;修改模块:void Change()Changemenu() 修改菜单Change() 选择要修改的内容int choice; printf("ntt请输入你的选择:t"); scanf("%d",&choice); switch(choice)case 1case 2case 3case 0defaultchangeContacts();/*修改联系人信息*/break;addClassmember();/*添加联系人到类*/break;changeClassname();/*更改类名*/break;main();/*返回主函数*/break;printf("ntt请输入0-3之间的一个数!n");break;修改联系人信息函数:void changeContacts()int select; struct contact *head; char cn18;while(1)system("cls"); printf("ntttt修改联系人n");printf("n*n");allContacts(); printf("ntt请输入要修改的联系人姓名:t"); scanf("%s",cn);head=changeContacts(readContact(),cn); printContacts(head); printf("nntt是否要继续修改?(1/0)t");scanf("%d",&select);if(select!=1) 真 假 break;将链表中联系人信息打印到文件中函数:void printContacts(struct contact *head)FILE *fp; struct contact *p; if(fp=fopen("contact.txt","w+")=NULL) 真 假printf("ntt文件打开失败!n"); exit(0);p=head;while(p!=NULL)fprintf(fp,"%s %s %s %s %s %sn",p->name,p->telephoneno,p->phoneno,p->email,p->company,p->classification); p=p->next;if(fclose(fp) 真 假printf("ntt文件关闭失败!n"); exit(0);将链表中分类信息打印到链表中函数:void printClass(struct classification *head)FILE *fp; struct classification *p; if(fp=fopen("分类.txt","w+")=NULL) 真 假printf("ntt文件打开失败!n"); exit(0);p=head;while(p!=NULL)fprintf(fp,"%sn",p->class_name); p=p->next;if(fclose(fp) 真 假printf("ntt文件关闭失败!n"); exit(0);动态链表修改联系人函数:struct contact *changeContacts(struct contact *head,char name)char n18; struct contact *p1,*p2; if(head=NULL) 真 假printf("ntt不存在联系人!n"); return head;p1=head;while(strcmp(name,p1->name)!=0 && p1->next!=NULL)p2=p1; p1=p1->next; if(strcmp(name,p1->name)=0) 真 假根据提示输入修改后信息printf("ntt联系人%s没有找到!n",name);return(head);添加联系人到分类函数:void addClassmember()while(1)struct classification *head1,*p; struct contact *head; int select; head=readContact(); char classi19;char cn18; system("cls"); printf("ntttt添加联系人到类n");printf("n*n");allClasses(); allContacts(); printf("ntt你要添加联系人的类:t"); scanf("%s",classi);head1=readClassification(); p=head1;while(p!=NULL) if(strcmp(p->class_name,classi)=0) 真 假printf("ntt请输入要添加到类'%s'联系人:t",classi);scanf("%

    注意事项

    本文(C语言课程设计通讯录管理系统 .doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开