c语言编程笔录

首页 > C语言 > c语言

c语言

基于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语言来实现一个高效的通讯录。我们使用了数组和结构体来存储和管理联系人的信息,并通过函数来添加、更新、删除和搜索记录。通过灵活使用这些功能,我们可以构建一个基本的通讯录应用程序,并根据需求进行扩展和优化。