关于通讯录管理系统基础功能(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;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
小型通讯录管理系统主要功能模块包括: 1. 添加联系人:输入联系人姓名、电话号码、电子邮件等信息,将联系人添加到通讯录中。 算法设计: - 接收用户输入的联系人信息; - 检查输入的信息是否符合格式要求; - 将联系人信息存储到数据库或文件中; - 显示添加成功或失败的提示信息。 2. 删除联系人:根据联系人姓名或电话号码等信息,从通讯录中删除指定的联系人。 算法设计: - 接收用户输入的删除条件; - 在通讯录中查找符合条件的联系人; - 显示查找结果并让用户确认是否删除; - 如果用户确认删除,则将联系人从数据库或文件中删除; - 显示删除成功或失败的提示信息。 3. 修改联系人信息:根据联系人姓名或电话号码等信息,修改指定联系人的信息。 算法设计: - 接收用户输入的修改条件; - 在通讯录中查找符合条件的联系人; - 显示查找结果并让用户输入需要修改的信息; - 检查输入的信息是否符合格式要求; - 将修改后的联系人信息保存到数据库或文件中; - 显示修改成功或失败的提示信息。 4. 查询联系人信息:根据联系人姓名或电话号码等信息,查询指定联系人的信息。 算法设计: - 接收用户输入的查询条件; - 在通讯录中查找符合条件的联系人; - 显示查找结果并输出联系人的详细信息。 5. 显示全部联系人信息:显示通讯录中所有联系人的信息。 算法设计: - 从数据库或文件中读取所有联系人信息; - 显示所有联系人的详细信息。 以上是小型通讯录管理系统主要功能模块的算法设计。需要注意的是,在实际开发中,还需要对输入的信息进行格式检查、数据存储和读取等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值