如何使用C语言代码实现通讯录功能

发布时间:2022-06-18 13:59:44 作者:iii
来源:亿速云 阅读:208

如何使用C语言代码实现通讯录功能

通讯录是一种常见的应用程序,用于存储和管理联系人信息。使用C语言实现一个简单的通讯录功能,可以帮助我们理解数据结构、文件操作和基本的内存管理。本文将介绍如何使用C语言实现一个简单的通讯录功能。

1. 功能需求

在开始编写代码之前,我们需要明确通讯录的基本功能需求:

  1. 添加联系人:用户可以输入联系人的姓名、电话号码等信息,并将其保存到通讯录中。
  2. 删除联系人:用户可以通过姓名或其他标识符删除指定的联系人。
  3. 查找联系人:用户可以通过姓名或其他标识符查找指定的联系人。
  4. 显示所有联系人:用户可以查看通讯录中所有联系人的信息。
  5. 保存通讯录:将通讯录中的联系人信息保存到文件中,以便下次启动程序时可以加载。
  6. 加载通讯录:从文件中加载联系人信息,以便程序启动时可以恢复之前的通讯录状态。

2. 数据结构设计

为了实现上述功能,我们需要设计一个合适的数据结构来存储联系人信息。一个简单的结构体可以满足我们的需求:

#define MAX_NAME_LENGTH 50
#define MAX_PHONE_LENGTH 15

typedef struct {
    char name[MAX_NAME_LENGTH];
    char phone[MAX_PHONE_LENGTH];
} Contact;

每个联系人包含两个字段:namephone,分别用于存储联系人的姓名和电话号码。

3. 功能实现

3.1 添加联系人

void addContact(Contact contacts[], int *count) {
    if (*count >= MAX_CONTACTS) {
        printf("通讯录已满,无法添加更多联系人。\n");
        return;
    }

    Contact newContact;
    printf("请输入联系人姓名: ");
    scanf("%s", newContact.name);
    printf("请输入联系人电话: ");
    scanf("%s", newContact.phone);

    contacts[*count] = newContact;
    (*count)++;
    printf("联系人添加成功!\n");
}

3.2 删除联系人

void deleteContact(Contact contacts[], int *count, const char *name) {
    int found = 0;
    for (int i = 0; i < *count; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            for (int j = i; j < *count - 1; j++) {
                contacts[j] = contacts[j + 1];
            }
            (*count)--;
            found = 1;
            printf("联系人删除成功!\n");
            break;
        }
    }

    if (!found) {
        printf("未找到该联系人。\n");
    }
}

3.3 查找联系人

void findContact(const Contact contacts[], int count, const char *name) {
    int found = 0;
    for (int i = 0; i < count; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            printf("联系人姓名: %s, 电话: %s\n", contacts[i].name, contacts[i].phone);
            found = 1;
            break;
        }
    }

    if (!found) {
        printf("未找到该联系人。\n");
    }
}

3.4 显示所有联系人

void displayContacts(const Contact contacts[], int count) {
    if (count == 0) {
        printf("通讯录为空。\n");
        return;
    }

    for (int i = 0; i < count; i++) {
        printf("联系人 %d: 姓名: %s, 电话: %s\n", i + 1, contacts[i].name, contacts[i].phone);
    }
}

3.5 保存通讯录

void saveContacts(const Contact contacts[], int count, const char *filename) {
    FILE *file = fopen(filename, "w");
    if (file == NULL) {
        printf("无法打开文件进行保存。\n");
        return;
    }

    for (int i = 0; i < count; i++) {
        fprintf(file, "%s %s\n", contacts[i].name, contacts[i].phone);
    }

    fclose(file);
    printf("通讯录已保存。\n");
}

3.6 加载通讯录

void loadContacts(Contact contacts[], int *count, const char *filename) {
    FILE *file = fopen(filename, "r");
    if (file == NULL) {
        printf("无法打开文件进行加载。\n");
        return;
    }

    *count = 0;
    while (fscanf(file, "%s %s", contacts[*count].name, contacts[*count].phone) != EOF) {
        (*count)++;
    }

    fclose(file);
    printf("通讯录已加载。\n");
}

4. 主程序

最后,我们需要编写一个主程序来调用上述功能,并提供一个简单的用户界面:

#include <stdio.h>
#include <string.h>

#define MAX_CONTACTS 100

int main() {
    Contact contacts[MAX_CONTACTS];
    int count = 0;
    char filename[] = "contacts.txt";

    int choice;
    char name[MAX_NAME_LENGTH];

    while (1) {
        printf("\n通讯录管理系统\n");
        printf("1. 添加联系人\n");
        printf("2. 删除联系人\n");
        printf("3. 查找联系人\n");
        printf("4. 显示所有联系人\n");
        printf("5. 保存通讯录\n");
        printf("6. 加载通讯录\n");
        printf("7. 退出\n");
        printf("请选择操作: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addContact(contacts, &count);
                break;
            case 2:
                printf("请输入要删除的联系人姓名: ");
                scanf("%s", name);
                deleteContact(contacts, &count, name);
                break;
            case 3:
                printf("请输入要查找的联系人姓名: ");
                scanf("%s", name);
                findContact(contacts, count, name);
                break;
            case 4:
                displayContacts(contacts, count);
                break;
            case 5:
                saveContacts(contacts, count, filename);
                break;
            case 6:
                loadContacts(contacts, &count, filename);
                break;
            case 7:
                return 0;
            default:
                printf("无效的选择,请重新输入。\n");
        }
    }

    return 0;
}

5. 总结

通过以上步骤,我们实现了一个简单的通讯录管理系统。这个系统可以添加、删除、查找和显示联系人信息,并且可以将通讯录保存到文件中,以便下次启动程序时可以加载。这个示例展示了如何使用C语言进行基本的数据管理和文件操作,为进一步开发更复杂的应用程序奠定了基础。

推荐阅读:
  1. vue如何实现通讯录功能
  2. C语言如何实现简单通讯录

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:基于JS如何实现飞机大战游戏

下一篇:python中的多线程锁lock=threading.Lock()如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》