关于通讯录管理系统基础功能(vs可用)

基本功能:

添加个人信息

删除个人信息

修改个人信息

名字排序

全部信息展示

退出

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

struct Contact 
{
    char name[50];
    char address[100];
    char phoneNumber[12];
    char postalCode[7];
    char email[50];
};

struct Contact addressBook[100];
int contactCount = 0;

void addContact() 
{
    if (contactCount < 100) 
    {
        struct Contact newContact;

        printf("请输入姓名: ");
        scanf("%s", newContact.name);

        printf("请输入家庭住址: ");
        scanf("%s", newContact.address);

        printf("请输入手机号码: ");
        scanf("%s", newContact.phoneNumber);

        printf("请输入邮编: ");
        scanf("%s", newContact.postalCode);

        printf("请输入E-mail: ");
        scanf("%s", newContact.email);

       

        addressBook[contactCount++] = newContact;

        printf("成功添加个人信息!\n");
    }
    else {
        printf("通讯录已满,无法添加更多信息。\n");
    }
}

void searchContact()                                                                             //搜索联络人
{
    char query[50];                                                                             //查询
    int found = 0;

    printf("请输入要查询的姓名或手机号: ");
    scanf("%s", query);

    for (int i = 0; i < contactCount; ++i) 
    {                                                                                            //strcmp比较2个字符串的指针   逻辑或
        if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
            printf("姓名: %s\n家庭住址: %s\n手机号码: %s\n邮编: %s\nE-mail: %s\n",
                addressBook[i].name, addressBook[i].address,
                addressBook[i].phoneNumber, addressBook[i].postalCode,
                addressBook[i].email);
            found = 1;
            break;
        }
    }

    if (found==0) 
    {
        printf("未找到匹配的信息。\n");
    }
}

void deleteContact() 
{
    char query[50];
    int found = 0;

    printf("请输入要删除的姓名或手机号: ");
    scanf("%s", query);
    int j = 0;
    for (int i = 0; i < contactCount; ++i) {
        if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
            
            for ( j = i; j < contactCount - 1; ++j) 
            {
                addressBook[j] = addressBook[j + 1];
            }

            --contactCount;
            found = 1;
            printf("成功删除个人信息!\n");
            break;
        }
    }

    if (found==0) 
    {
        printf("未找到匹配的信息。\n");
    }
}

void modifyContact() 
{
    char query[50];
    int found = 0;

    printf("请输入要修改的姓名或手机号: ");
    scanf("%s", query);

    for (int i = 0; i < contactCount; ++i) 
    {
        if (strcmp(addressBook[i].name, query) == 0 || strcmp(addressBook[i].phoneNumber, query) == 0) {
            printf("请输入新的姓名: ");
            scanf("%s", addressBook[i].name);

            printf("请输入新的家庭住址: ");
            scanf("%s", addressBook[i].address);

            printf("请输入新的手机号码: ");
            scanf("%s", addressBook[i].phoneNumber);

            printf("请输入新的邮编: ");
            scanf("%s", addressBook[i].postalCode);

            printf("请输入新的E-mail: ");
            scanf("%s", addressBook[i].email);

            

            found = 1;
            printf("成功修改个人信息!\n");
            break;
        }
    }

    if (found==0) 
    {
        printf("未找到匹配的信息。\n");
    }
}

void sortContacts() 
{
                                                                                                 // 简单实现按姓名排序
    for (int i = 0; i < contactCount - 1; ++i) {
        for (int j = 0; j < contactCount - i - 1; ++j) {
            if (strcmp(addressBook[j].name, addressBook[j + 1].name) > 0) {
                                                                                                 // 交换元素
                struct Contact temp = addressBook[j];
                addressBook[j] = addressBook[j + 1];
                addressBook[j + 1] = temp;
            }
        }
    }

    printf("通讯录已按姓名排序。\n");
}

void printAllContacts() 
{
    if (contactCount > 0) 
    {
        printf("通讯录中的所有个人信息:\n");
        for (int i = 0; i < contactCount; ++i) {
            printf("姓名: %s\n家庭住址: %s\n手机号码: %s\n邮编: %s\nE-mail: %s\n",
                addressBook[i].name, addressBook[i].address,
                addressBook[i].phoneNumber, addressBook[i].postalCode,
                addressBook[i].email);
            printf("------------------------------\n");
        }
    }
    else 
    {
        printf("通讯录为空。\n");
    }
}

int main() 
{
    int a;

    do 
    {
        printf("\n===== 通讯录管理系统 =====\n");
        printf("1. 添加个人信息\n");
        printf("2. 查询个人信息\n");
        printf("3. 删除个人信息\n");
        printf("4. 修改个人信息\n");
        printf("5. 信息排序\n");
        printf("6. 输出全部信息\n");
        printf("0. 退出\n");
        printf("请输入您的选择: ");
        scanf("%d", &a);

        switch (a) {
        case 1:
            addContact();
            break;
        case 2:
            searchContact();
            break;
        case 3:
            deleteContact();
            break;
        case 4:
            modifyContact();
            break;
        case 5:
            sortContacts();
            break;
        case 6:
            printAllContacts();
            break;
        case 0:
            printf("感谢使用,再见!\n");
            break;
        default:
            printf("无效的选择,请重新输入。\n");
        }

    }
    while (a != 0);

    return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值