基于单链表的通讯录管理系统设计与实现

0 下载量 190 浏览量 更新于2024-06-24 收藏 283KB DOC 举报
通讯录管理系统-数据结构课程设计 通讯录管理系统是数据结构课程设计的重要组成部分,本设计旨在实现通讯录的建立、输出、插入、删除和查询等多种操作功能。系统采用单链表作为存储结构,使用菜单作为应用程序的主要界面,提供了多种功能选择项,包括通讯录链表的建立、结点的插入、查询和删除、通讯录链表的输出等。 **数据结构设计** 在通讯录管理系统中,数据结构是核心组成部分。系统采用单链表作为存储结构,每个结点代表一个通讯录记录,包含姓名、编号、电话号码、地址等信息。单链表的使用可以提高数据的存储和检索效率,满足系统的性能要求。 **算法设计** 系统的算法设计是基于菜单选择项的实现。主函数设计采用switch语句来判定选择项,并跳转到相应的功能函数。系统还定义了两个全局变量j和flag1,j用于控制循环运行,flag1用于判定是否建立通讯录链表。在选择退出后,j赋值为0,flag1赋值为0,表示尚未建立通讯录链表。 **功能设计** 系统的功能设计包括菜单选择界面、建立通讯录记录、插入联系人记录、查找联系人记录、删除联系人记录、输出所有联系人记录和退出程序等多种功能。这些功能的实现是基于数据结构和算法设计的基础上,满足系统的性能和功能要求。 **系统流程图** 系统流程图如图所示,展示了系统的主要流程和功能模块。系统的流程图包括主函数设计、菜单选择界面、建立通讯录记录、插入联系人记录、查找联系人记录、删除联系人记录、输出所有联系人记录和退出程序等多种功能模块。 **结论** 通讯录管理系统是数据结构课程设计的重要组成部分,本设计旨在实现通讯录的建立、输出、插入、删除和查询等多种操作功能。系统的设计基于数据结构和算法设计,提供了多种功能选择项,满足系统的性能和功能要求。本设计可以帮助读者更好地理解和掌握数据结构的基本概念和应用方法,提高数据结构课程设计的教学效果。
2023-05-30 上传
《数据结构》 课 程 设 计 报 告 书 题 目: 通讯录管理系统 系 别: 计算机科学与应用系 学 号: 学生: 指导教师: 完成日期: 2012年5月28日 1 问题描述 (1)题目容:通讯录管理。 (2)基本要求:利用单链表实现通讯录的建立、通讯者的插入、通讯者的删除、通讯者的 查询以及通讯录的输出。 (3)设计目的:通过本次课程设计,了解通讯录的一些基本功能。掌握利用单链表进行插 入,查找,用关键字建立单链表。 2 需求分析 经过本次的课程设计,我认为通讯录主要实现的功能如下: (1)添加信息:一个通讯录应该有其基本的添加功能。在程序设计时,我通过一个具有添 加功能的函数,实现了个人信息的添加,如:,性别,,QQ,地址。 (2)删除信息:当你不需要某个联系人的信息时,可以直接将该人的信息删除。 (3)查找:一个通讯录应该具有令一基本功能就是查找,本设计时可以按联系人为关键字 查找的,只要你输入要查找人的或手机或QQ就可出来相应的个人信息。 (4)输出:一个通讯录应该具有输出所有联系人的功能,本设计按照次序可以从头到尾把 通讯录中的所有联系人都输出,供自己查看。 (5)退出:当你做完你要做的事情之后,就可以退出该程序。 3 总体设计 3.1 算法的定义 LinkList Creat_LinkList()创建空单链表 void Insert_LinkList(LinkList H)建立通讯录,录入联系人的信息,可以把联系人的,性别,手机号,QQ号,地址录入 系统。 void Locate_LinkList(LinkList H)按照联系人的,手机,QQ查找通讯录中联系人的信息。 void Delete_LinkList(LinkList H)按照联系人的,手机,QQ删除联系人的所有信息。 void print_LinkList(LinkList H)输出通讯录中的所有联系人的信息供使用者查看。 3.2 系统流程图 图3-1通讯录管理功能图 3.3 详细程序设计 1)定义数据结构 typedef struct Node //定义 数据结构 { char name[20];// char sex[4]; //性别 char tel[11];// char qq[13]; //qq char ad[100];//地址 Node *next;//存放后继元素的地址 }LNode,*LinkList; 2)创建一个空的单链表 LinkList Creat_LinkList() {//创建空单链表,入口参数无 LinkList H; H=new LNode; if(H)//确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表 { H->next=NULL; } return H; } 3)向通讯录中插入联系人 void Insert_LinkList(LinkList H) { LinkList p; p=new LNode; if(!p) { cout<<"不能插入!"<<endl; } cout<<"请输入你要插入的联系人信息:"<<endl; cout<<":"<<endl; cin>>p->name; cout<<"性别:"<<endl; cin>>p->sex; cout<<"手机:"<<endl; cin>>p->tel; cout<<"QQ:"<<endl; cin>>p->qq; cout<<"地址:"<<endl; cin>>p->ad; p->next=H->next; H->next=p; cout<<"插入成功"<<endl; } 4)查询通讯录中某个联系人的信息 void Locate_LinkList(LinkList H) { int x; LinkList p=H->next; cout<<"你要通过哪种方式查询?"<<endl; cout<<"1.通过联系人查询"<<endl; cout<<"2.通过联系人手机查询"<<endl; cout<<"3.通过联系人QQ查询"<<endl; cin>>x; char str[30]; if(x==1) { cout<<"请输入你要查询的联系人的:"; cin>>str; while(p && strcmp(p->name,str)!=0) { p=p->next; } } if(x==2) { cout<<"请输入你要查询的联系人的手机:"; cin>>str; while(p&&strcmp(p->tel,str)!=0) { p=p->next; } } if(x==3) { cout<<"请输入你要查询的联系人的QQ:"; cin>>str; while(p&&strcmp(p->qq,str)!=0) { p=p->next; }