c语言通讯录管理系统 能实现添加联系人信息 删除联系人信息 修改联系人信息 查找联系人信息 显示所有联系人信息
时间: 2024-01-31 13:04:54 浏览: 90
是的,C语言通讯录管理系统可以实现添加联系人信息、删除联系人信息、修改联系人信息、查找联系人信息和显示所有联系人信息,具体实现方式如下:
1. 添加联系人信息
可以使用结构体来存储联系人信息,然后使用链表来存储多个联系人的信息,每次添加联系人时,创建一个新的节点,将联系人信息存储在节点中,然后将该节点插入到链表中即可。
示例代码:
```c
typedef struct Contact {
char name[20];
char phone[20];
char email[30];
struct Contact *next;
} Contact;
Contact *head = NULL; // 链表头节点
void addContact() {
Contact *newContact = (Contact *)malloc(sizeof(Contact));
printf("请输入姓名:");
scanf("%s", newContact->name);
printf("请输入电话:");
scanf("%s", newContact->phone);
printf("请输入邮箱:");
scanf("%s", newContact->email);
newContact->next = NULL;
if (head == NULL) {
head = newContact;
} else {
Contact *p = head;
while (p->next != NULL) {
p = p->next;
}
p->next = newContact;
}
printf("添加联系人成功!\n");
}
```
2. 删除联系人信息
删除联系人时,需要先查询该联系人是否存在,如果存在则删除该联系人节点,否则提示该联系人不存在。
示例代码:
```c
void deleteContact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
if (head == NULL) {
printf("通讯录为空,无法删除联系人!\n");
return;
}
if (strcmp(head->name, name) == 0) {
Contact *temp = head;
head = head->next;
free(temp);
printf("删除联系人成功!\n");
return;
}
Contact *p = head;
while (p->next != NULL) {
if (strcmp(p->next->name, name) == 0) {
Contact *temp = p->next;
p->next = temp->next;
free(temp);
printf("删除联系人成功!\n");
return;
}
p = p->next;
}
printf("该联系人不存在,无法删除!\n");
}
```
3. 修改联系人信息
修改联系人信息时,需要先查询该联系人是否存在,如果存在则修改联系人信息,否则提示该联系人不存在。
示例代码:
```c
void editContact() {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
Contact *p = head;
while (p != NULL) {
if (strcmp(p->name, name) == 0) {
printf("请输入新的电话:");
scanf("%s", p->phone);
printf("请输入新的邮箱:");
scanf("%s", p->email);
printf("修改联系人信息成功!\n");
return;
}
p = p->next;
}
printf("该联系人不存在,无法修改!\n");
}
```
4. 查找联系人信息
查找联系人信息时,可以根据姓名、电话、邮箱等信息进行查找。如果找到符合条件的联系人,则输出该联系人的详细信息,否则提示查无此人。
示例代码:
```c
void searchContact() {
char keyword[20];
printf("请输入要查找的关键词:");
scanf("%s", keyword);
Contact *p = head;
int count = 0;
while (p != NULL) {
if (strstr(p->name, keyword) != NULL || strstr(p->phone, keyword) != NULL || strstr(p->email, keyword) != NULL) {
printf("姓名:%s\t电话:%s\t邮箱:%s\n", p->name, p->phone, p->email);
count++;
}
p = p->next;
}
if (count == 0) {
printf("查无此人!\n");
}
}
```
5. 显示所有联系人信息
显示所有联系人信息时,只需遍历整个链表,输出每个联系人的详细信息即可。
示例代码:
```c
void displayAllContacts() {
Contact *p = head;
while (p != NULL) {
printf("姓名:%s\t电话:%s\t邮箱:%s\n", p->name, p->phone, p->email);
p = p->next;
}
}
```
以上是C语言通讯录管理系统的实现方式,可以根据自己的需求进行修改和完善。
阅读全文