基于C语言打造高效通讯录的示例代码
更新时间:2023-08-09前言
通讯录是一个常见的应用程序,在大多数情况下,我们需要一个高效的通讯录来存储和管理联系人的信息。本示例将使用C语言来实现一个高效的通讯录,它将允许用户添加、更新、删除和搜索联系人的信息。我们将使用数组和结构体来存储联系人的信息,在内存中管理这些记录,并通过命令行界面与用户进行交互。
代码实现
#include#include #include #define MAX_CONTACTS 100 // 定义联系人结构体 typedef struct { char name[50]; char phone[20]; char email[50]; } Contact; // 定义通讯录结构体 typedef struct { Contact contacts[MAX_CONTACTS]; int count; } AddressBook; // 初始化通讯录 void initialize(AddressBook* addressBook) { addressBook->count = 0; } // 添加联系人 void addContact(AddressBook* addressBook, Contact contact) { if (addressBook->count < MAX_CONTACTS) { addressBook->contacts[addressBook->count] = contact; addressBook->count++; printf("联系人已成功添加!\n"); } else { printf("通讯录已满,无法添加更多的联系人!\n"); } } // 更新联系人 void updateContact(AddressBook* addressBook, int index, Contact contact) { if (index >= 0 && index < addressBook->count) { addressBook->contacts[index] = contact; printf("联系人已成功更新!\n"); } else { printf("无效的联系人索引!\n"); } } // 删除联系人 void deleteContact(AddressBook* addressBook, int index) { if (index >= 0 && index < addressBook->count) { for (int i = index; i < addressBook->count - 1; i++) { addressBook->contacts[i] = addressBook->contacts[i + 1]; } addressBook->count--; printf("联系人已成功删除!\n"); } else { printf("无效的联系人索引!\n"); } } // 搜索联系人 void searchContact(AddressBook* addressBook, char* keyword) { int found = 0; for (int i = 0; i < addressBook->count; i++) { if (strstr(addressBook->contacts[i].name, keyword) != NULL || strstr(addressBook->contacts[i].phone, keyword) != NULL || strstr(addressBook->contacts[i].email, keyword) != NULL) { printf("联系人 #%d\n", i + 1); printf("姓名: %s\n", addressBook->contacts[i].name); printf("电话: %s\n", addressBook->contacts[i].phone); printf("邮箱: %s\n", addressBook->contacts[i].email); printf("\n"); found = 1; } } if (!found) { printf("未找到匹配的联系人!\n"); } } // 主函数 int main() { AddressBook addressBook; initialize(&addressBook); Contact contact1 = {"张三", "123456789", "zhangsan@example.com"}; addContact(&addressBook, contact1); Contact contact2 = {"李四", "987654321", "lisi@example.com"}; addContact(&addressBook, contact2); updateContact(&addressBook, 0, contact2); deleteContact(&addressBook, 1); searchContact(&addressBook, "张三"); return 0; }
代码解释
在这段代码中,我们使用了两个结构体来表示联系人和通讯录。联系人结构体包含了姓名、电话和电子邮件等信息。通讯录结构体则包含了一个联系人数组和记录数量。 我们通过 initialize 函数来初始化通讯录,count 设置为 0。addContact 函数用于添加联系人到通讯录中,首先检查通讯录是否已满,然后将联系人添加到数组中,并将记录计数加 1。updateContact 函数将根据给定的索引更新通讯录中的联系人。deleteContact 函数删除指定索引的联系人,通过将后面的联系人向前移动来填充空缺。searchContact 函数根据关键字在通讯录中搜索匹配的联系人,并将结果打印出来。 在主函数中,我们演示了如何使用这些函数来操作通讯录。我们首先创建了两个联系人,然后添加第一个联系人,接下来更新第一个联系人为第二个联系人,然后删除第二个联系人,并通过关键字搜索第一个联系人。
总结
通过这个示例代码,我们学习了如何使用C语言来实现一个高效的通讯录。我们使用了数组和结构体来存储和管理联系人的信息,并通过函数来添加、更新、删除和搜索记录。通过灵活使用这些功能,我们可以构建一个基本的通讯录应用程序,并根据需求进行扩展和优化。