Menu Explicit/Hidden

通讯录c语言程序设计代码

下面是一个简单的通讯录C语言程序设计代码:

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

#define MAX_CONTACTS 100

typedef struct {
    char name[50];
    char phone[20];
    char email[50];
} Contact;

Contact contacts[MAX_CONTACTS];
int numContacts = 0;

void addContact() {
    if (numContacts >= MAX_CONTACTS) {
        printf("通讯录已满,无法添加新联系人。\n");
        return;
    }

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

    contacts[numContacts] = newContact;
    numContacts++;

    printf("联系人已添加成功。\n");
}

void searchContact() {
    char name[50];
    printf("请输入要搜索的联系人姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            printf("联系人姓名:%s\n", contacts[i].name);
            printf("联系人电话:%s\n", contacts[i].phone);
            printf("联系人邮箱:%s\n", contacts[i].email);
            found = 1;
            break;
        }
    }

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

void displayContacts() {
    if (numContacts == 0) {
        printf("通讯录为空。\n");
        return;
    }

    printf("通讯录中的联系人:\n");
    for (int i = 0; i < numContacts; i++) {
        printf("联系人姓名:%s\n", contacts[i].name);
        printf("联系人电话:%s\n", contacts[i].phone);
        printf("联系人邮箱:%s\n", contacts[i].email);
        printf("--------------------\n");
    }
}

int main() {
    int choice;

    while (1) {
        printf("请选择操作:\n");
        printf("1. 添加联系人\n");
        printf("2. 搜索联系人\n");
        printf("3. 显示所有联系人\n");
        printf("4. 退出\n");
        printf("请输入选择:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addContact();
                break;
            case 2:
                searchContact();
                break;
            case 3:
                displayContacts();
                break;
            case 4:
                printf("程序已退出。\n");
                exit(0);
            default:
                printf("无效的选择。\n");
        }
    }

    return 0;
}

这个程序实现了一个简单的通讯录功能,可以添加联系人、搜索联系人和显示所有联系人。通讯录使用结构体数组来存储联系人信息,最多可以存储100个联系人。用户可以通过输入数字选择不同的操作,直到选择退出为止。

这个程序还可以进一步完善,例如可以添加删除联系人的功能,以及对联系人信息的修改和保存等。下面是一个补充的版本:

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

#define MAX_CONTACTS 100

typedef struct {
    char name[50];
    char phone[20];
    char email[50];
} Contact;

Contact contacts[MAX_CONTACTS];
int numContacts = 0;

void addContact() {
    if (numContacts >= MAX_CONTACTS) {
        printf("通讯录已满,无法添加新联系人。\n");
        return;
    }

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

    contacts[numContacts] = newContact;
    numContacts++;

    printf("联系人已添加成功。\n");
}

void searchContact() {
    char name[50];
    printf("请输入要搜索的联系人姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            printf("联系人姓名:%s\n", contacts[i].name);
            printf("联系人电话:%s\n", contacts[i].phone);
            printf("联系人邮箱:%s\n", contacts[i].email);
            found = 1;
            break;
        }
    }

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

void deleteContact() {
    char name[50];
    printf("请输入要删除的联系人姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            for (int j = i; j < numContacts - 1; j++) {
                contacts[j] = contacts[j + 1];
            }
            numContacts--;
            found = 1;
            printf("联系人已成功删除。\n");
            break;
        }
    }

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

void modifyContact() {
    char name[50];
    printf("请输入要修改的联系人姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < numContacts; i++) {
        if (strcmp(contacts[i].name, name) == 0) {
            printf("请输入新的联系人电话:");
            scanf("%s", contacts[i].phone);
            printf("请输入新的联系人邮箱:");
            scanf("%s", contacts[i].email);
            found = 1;
            printf("联系人信息已成功修改。\n");
            break;
        }
    }

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

void saveContacts() {
    FILE *file = fopen("contacts.txt", "w");
    if (file == NULL) {
        printf("无法打开文件。\n");
        return;
    }

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

    fclose(file);
    printf("通讯录已成功保存到文件。\n");
}

void loadContacts() {
    FILE *file = fopen("contacts.txt", "r");
    if (file == NULL) {
        printf("无法打开文件。\n");
        return;
    }

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

    fclose(file);
    printf("通讯录已成功从文件加载。\n");
}

void displayContacts() {
    if (numContacts == 0) {
        printf("通讯录为空。\n");
        return;
    }

    printf("通讯录中的联系人:\n");
    for (int i = 0; i < numContacts; i++) {
        printf("联系人姓名:%s\n", contacts[i].name);
        printf("联系人电话:%s\n", contacts[i].phone);
        printf("联系人邮箱:%s\n", contacts[i].email);
        printf("--------------------\n");
    }
}

int main() {
    int choice;

    while (1) {
        printf("请选择操作:\n");
        printf("1. 添加联系人\n");
        printf("2. 搜索联系人\n");
        printf("3. 删除联系人\n");
        printf("4. 修改联系人\n");
        printf("5. 保存通讯录到文件\n");
        printf("6. 从文件加载通讯录\n");
        printf("7. 显示所有联系人\n");
        printf("8. 退出\n");
        printf("请输入选择:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addContact();
                break;
            case 2:
                searchContact();
                break;
            case 3:
                deleteContact();
                break;
            case 4:
                modifyContact();
                break;
            case 5:
                saveContacts();
                break;
            case 6:
                loadContacts();
                break;
            case 7:
                displayContacts();
                break;
            case 8:
                printf("程序已退出。\n");
                exit(0);
            default:
                printf("无效的选择。\n");
        }
    }

    return 0;
}

这个版本在原有的基础上添加了删除联系人、修改联系人、保存通讯录到文件和从文件加载通讯录的功能。用户可以通过输入数字选择不同的操作,直到选择退出为止。通讯录的信息会保存到名为"contacts.txt"的文件中,可以在程序下次运行时加载。