- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?##一、项目概述
通讯录管理系统是一个用于存储和管理联系人信息的软件。使用C语言的单链表数据结构来实现该系统,能够方便地进行联系人信息的添加、删除、查找、修改以及显示等操作。
##二、单链表基本概念
单链表是一种线性数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。单链表的头节点是链表的起始点,通过头节点可以访问整个链表。
##三、通讯录管理系统功能需求
1.添加联系人:能够输入联系人的姓名、电话号码、电子邮箱等信息,并将其添加到通讯录中。
2.删除联系人:根据联系人姓名或电话号码删除相应的联系人信息。
3.查找联系人:可以根据联系人姓名或电话号码查找并显示其详细信息。
4.修改联系人信息:对已存在的联系人信息进行修改。
5.显示所有联系人:将通讯录中所有联系人的信息依次显示出来。
##四、单链表节点结构设计
```c
typedefstructContact{
charname[50];
charphone[20];
charemail[50];
structContact*next;
}Contact;
```
该结构体定义了一个联系人节点,包含姓名、电话号码、电子邮箱以及指向下一个节点的指针。
##五、主要函数实现
1.创建新节点函数
```c
Contact*createNode(charname[],charphone[],charemail[]){
Contact*newNode=(Contact*)malloc(sizeof(Contact));
if(newNode==NULL){
printf(内存分配失败\n);
returnNULL;
}
strcpy(newNode-name,name);
strcpy(newNode-phone,phone);
strcpy(newNode-email,email);
newNode-next=NULL;
returnnewNode;
}
```
该函数用于创建一个新的联系人节点,并初始化其数据。
2.添加联系人函数
```c
voidaddContact(Contacthead,charname[],charphone[],charemail[]){
Contact*newNode=createNode(name,phone,email);
if(*head==NULL){
*head=newNode;
}else{
Contact*current=*head;
while(current-next!=NULL){
current=current-next;
}
current-next=newNode;
}
printf(联系人添加成功\n);
}
```
该函数将新创建的联系人节点添加到链表的末尾。
3.删除联系人函数
```c
voiddeleteContact(Contacthead,charkey[]){
Contact*current=*head;
Contact*prev=NULL;
while(current!=NULLstrcmp(current-name,key)!=0){
prev=current;
current=current-next;
}
if(current==NULL){
printf(未找到联系人\n);
return;
}
if(prev==NULL){
*head=current-next;
}else{
prev-next=current-next;
}
free(cur
文档评论(0)