C语言实现简单通讯录系统攻略
1. 确定功能需求
在开始编写代码前,需要明确实现的功能需求。一个简单的通讯录功能包含以下几个方面:
- 添加联系人;
- 显示联系人列表;
- 修改联系人信息;
- 删除联系人。
2. 设计数据结构
在C语言中,可以使用结构体来存储联系人的相关信息。为了方便,我们可以使用动态内存分配来动态地创建存储联系人的结构体。
typedef struct contact {
char name[20];
char phone[11];
struct contact *next;
} Contact;
其中,name表示联系人姓名,phone表示联系人电话号码,next表示指向下一个联系人结构体的指针。
3. 编写添加联系人函数
添加联系人时,需要动态创建一个联系人结构体,并将它添加到链表的结尾处。示例代码如下:
Contact *addContact(Contact *head) {
Contact *new_contact = (Contact*) malloc(sizeof(Contact));
printf("请输入联系人姓名:");
scanf("%s", new_contact->name);
printf("请输入联系人电话:");
scanf("%s", new_contact->phone);
new_contact->next = NULL;
if (head == NULL) {
head = new_contact;
} else {
Contact *temp = head;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = new_contact;
}
printf("联系人添加成功!\n");
return head;
}
4. 编写显示联系人列表函数
显示联系人列表时,需要遍历链表并输出每个联系人的信息。示例代码如下:
void showContacts(Contact *head) {
if (head == NULL) {
printf("通讯录为空!\n");
} else {
printf("姓名\t\t电话\n");
printf("------------------------\n");
Contact *temp = head;
while (temp != NULL) {
printf("%s\t\t%s\n", temp->name, temp->phone);
temp = temp->next;
}
}
}
5. 编写修改联系人信息函数
修改联系人信息时,需要先找到要修改的联系人结构体,然后更新它的name和phone字段。示例代码如下:
void modifyContact(Contact *head) {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
Contact *temp = head;
while (temp != NULL) {
if (strcmp(temp->name, name) == 0) {
printf("请输入新的联系人姓名:");
scanf("%s", temp->name);
printf("请输入新的联系人电话:");
scanf("%s", temp->phone);
printf("联系人信息修改成功!\n");
return;
}
temp = temp->next;
}
printf("没有找到该联系人!\n");
}
6. 编写删除联系人函数
删除联系人时,需要先找到要删除的联系人结构体,然后将其从链表中删除并释放内存。示例代码如下:
Contact *deleteContact(Contact *head) {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
if (head == NULL) {
printf("通讯录为空!\n");
return NULL;
}
if (strcmp(head->name, name) == 0) {
Contact *temp = head->next;
free(head);
printf("联系人已删除!\n");
return temp;
} else {
Contact *temp = head;
while (temp->next != NULL) {
if (strcmp(temp->next->name, name) == 0) {
Contact *delete_node = temp->next;
temp->next = delete_node->next;
free(delete_node);
printf("联系人已删除!\n");
return head;
}
temp = temp->next;
}
}
printf("没有找到该联系人!\n");
return head;
}
7. 编写主函数
主函数负责循环接受用户的输入,并根据输入调用相应的函数。示例代码如下:
int main() {
Contact *head = NULL;
int choice = 0;
while (1) {
printf("\n-----------------------\n");
printf("1. 添加联系人\n");
printf("2. 显示联系人列表\n");
printf("3. 修改联系人信息\n");
printf("4. 删除联系人\n");
printf("0. 退出程序\n");
printf("-----------------------\n");
scanf("%d", &choice);
switch (choice) {
case 0:
printf("程序退出!\n");
return 0;
case 1:
head = addContact(head);
break;
case 2:
showContacts(head);
break;
case 3:
modifyContact(head);
break;
case 4:
head = deleteContact(head);
break;
default:
printf("请输入正确的选项!\n");
break;
}
}
}
8. 示例说明
以下是添加、显示和删除联系人的示例:
添加联系人
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
1
请输入联系人姓名:张三
请输入联系人电话:13612345678
联系人添加成功!
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
1
请输入联系人姓名:李四
请输入联系人电话:13812345678
联系人添加成功!
显示联系人列表
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
2
姓名 电话
------------------------
张三 13612345678
李四 13812345678
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
删除联系人
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
4
请输入要删除的联系人姓名:李四
联系人已删除!
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
2
姓名 电话
------------------------
张三 13612345678
-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单通讯录系统 - Python技术站