用c语言编写个人通讯录管理
时间: 2024-10-15 14:24:16 浏览: 26
在C语言中编写个人通讯录管理程序,通常会涉及到文件操作、数据结构(如链表或数组)以及用户交互。以下是一个简单的例子,展示了如何使用链表作为数据结构来存储联系人信息:
1. **创建结构体**:首先,定义一个`Contact`结构体,包含姓名和电话号码。
```c
typedef struct {
char name[50];
char phone_number[20];
} Contact;
```
2. **动态内存管理**:使用`malloc`分配内存给每个新添加的联系人。
3. **定义函数**:
- `create_contact_list()`:初始化一个空的联系人列表。
- `add_contact()`:接受用户输入并将其添加到联系人列表。
- `display_contact_list()`:遍历列表并显示所有联系人的信息。
- `delete_contact()`:按名称删除指定的联系人。
- `search_contact()`:搜索特定名称的联系人。
4. **主循环**:设置一个循环,让用户选择操作,例如添加、查看、删除或退出。
```c
int main() {
Contact *contact_list = NULL; // 初始为空
int choice;
while (1) {
printf("请选择操作:\n1. 添加联系人\n2. 显示联系人\n3. 删除联系人\n4. 搜索联系人\n5. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact(&contact_list);
break;
case 2:
display_contact_list(contact_list);
break;
case 3:
delete_contact(contact_list);
break;
case 4:
search_contact(contact_list);
break;
case 5:
free_contact_list(contact_list);
return 0;
default:
printf("无效的选择,请重新输入。\n");
}
}
}
```
5. **辅助函数**(省略了一些细节,如错误处理):
```c
void add_contact(Contact **list) {
Contact *new_contact = malloc(sizeof(Contact));
if (new_contact != NULL) {
// 获取用户输入并填充结构体
}
// 将新节点插入链表头部
}
void display_contact_list(Contact *list) {
// 遍历链表并打印联系人信息
}
void delete_contact(Contact **list, char* name) {
// 搜索并删除匹配名称的联系人
}
void search_contact(Contact *list, char* name) {
// 查找并打印具有指定名称的联系人
}
void free_contact_list(Contact *list) {
Contact *current = list;
while (current != NULL) {
Contact *temp = current;
current = current->next;
free(temp);
}
}
```
阅读全文