C语言实现简单通讯录系统

yizhihongxing

C语言实现简单通讯录系统攻略

1. 确定功能需求

在开始编写代码前,需要明确实现的功能需求。一个简单的通讯录功能包含以下几个方面:

  • 添加联系人;
  • 显示联系人列表;
  • 修改联系人信息;
  • 删除联系人。

2. 设计数据结构

在C语言中,可以使用结构体来存储联系人的相关信息。为了方便,我们可以使用动态内存分配来动态地创建存储联系人的结构体。

typedef struct contact {
    char name[20];
    char phone[11];
    struct contact *next;
} Contact;

其中,name表示联系人姓名,phone表示联系人电话号码,next表示指向下一个联系人结构体的指针。

3. 编写添加联系人函数

添加联系人时,需要动态创建一个联系人结构体,并将它添加到链表的结尾处。示例代码如下:

Contact *addContact(Contact *head) {
    Contact *new_contact = (Contact*) malloc(sizeof(Contact));
    printf("请输入联系人姓名:");
    scanf("%s", new_contact->name);
    printf("请输入联系人电话:");
    scanf("%s", new_contact->phone);
    new_contact->next = NULL;

    if (head == NULL) {
        head = new_contact;
    } else {
        Contact *temp = head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = new_contact;
    }

    printf("联系人添加成功!\n");
    return head;
}

4. 编写显示联系人列表函数

显示联系人列表时,需要遍历链表并输出每个联系人的信息。示例代码如下:

void showContacts(Contact *head) {
    if (head == NULL) {
        printf("通讯录为空!\n");
    } else {
        printf("姓名\t\t电话\n");
        printf("------------------------\n");
        Contact *temp = head;
        while (temp != NULL) {
            printf("%s\t\t%s\n", temp->name, temp->phone);
            temp = temp->next;
        }
    }
}

5. 编写修改联系人信息函数

修改联系人信息时,需要先找到要修改的联系人结构体,然后更新它的name和phone字段。示例代码如下:

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

    Contact *temp = head;
    while (temp != NULL) {
        if (strcmp(temp->name, name) == 0) {
            printf("请输入新的联系人姓名:");
            scanf("%s", temp->name);
            printf("请输入新的联系人电话:");
            scanf("%s", temp->phone);
            printf("联系人信息修改成功!\n");
            return;
        }
        temp = temp->next;
    }

    printf("没有找到该联系人!\n");
}

6. 编写删除联系人函数

删除联系人时,需要先找到要删除的联系人结构体,然后将其从链表中删除并释放内存。示例代码如下:

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

    if (head == NULL) {
        printf("通讯录为空!\n");
        return NULL;
    }

    if (strcmp(head->name, name) == 0) {
        Contact *temp = head->next;
        free(head);
        printf("联系人已删除!\n");
        return temp;
    } else {
        Contact *temp = head;
        while (temp->next != NULL) {
            if (strcmp(temp->next->name, name) == 0) {
                Contact *delete_node = temp->next;
                temp->next = delete_node->next;
                free(delete_node);
                printf("联系人已删除!\n");
                return head;
            }
            temp = temp->next;
        }
    }

    printf("没有找到该联系人!\n");
    return head;
}

7. 编写主函数

主函数负责循环接受用户的输入,并根据输入调用相应的函数。示例代码如下:

int main() {
    Contact *head = NULL;
    int choice = 0;

    while (1) {
        printf("\n-----------------------\n");
        printf("1. 添加联系人\n");
        printf("2. 显示联系人列表\n");
        printf("3. 修改联系人信息\n");
        printf("4. 删除联系人\n");
        printf("0. 退出程序\n");
        printf("-----------------------\n");

        scanf("%d", &choice);

        switch (choice) {
            case 0:
                printf("程序退出!\n");
                return 0;
            case 1:
                head = addContact(head);
                break;
            case 2:
                showContacts(head);
                break;
            case 3:
                modifyContact(head);
                break;
            case 4:
                head = deleteContact(head);
                break;
            default:
                printf("请输入正确的选项!\n");
                break;
        }
    }
}

8. 示例说明

以下是添加、显示和删除联系人的示例:

添加联系人

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
1
请输入联系人姓名:张三
请输入联系人电话:13612345678
联系人添加成功!

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
1
请输入联系人姓名:李四
请输入联系人电话:13812345678
联系人添加成功!

显示联系人列表

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
2
姓名                电话
------------------------
张三                13612345678
李四                13812345678

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------

删除联系人

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
4
请输入要删除的联系人姓名:李四
联系人已删除!

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------
2
姓名                电话
------------------------
张三                13612345678

-----------------------
1. 添加联系人
2. 显示联系人列表
3. 修改联系人信息
4. 删除联系人
0. 退出程序
-----------------------

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现简单通讯录系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C语言函数指针和字符串

    让我们来详细讲解一下“C语言函数指针和字符串”的使用攻略。 函数指针 定义函数指针 函数指针是指向函数的指针。在C语言中,我们可以通过以下方式定义函数指针: 返回值类型 (*指针变量名)(参数列表) 例如,下面是一个函数指针的定义示例: int (*func_ptr)(int, int); 上面的代码定义了一个名为func_ptr的函数指针,它可以指向一个返…

    C 2023年5月9日
    00
  • 详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案

    详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案 GIL是什么 全局解释器锁(Global Interpreter Lock,GIL)是Python解释器中一项重要的机制,它保证同一时刻只有一个线程运行在解释器中。在多线程编程中,GIL是一个容易被忽略但却非常重要的问题。GIL的引入是为了解决CPython解释器的线程安全问题。 由于GI…

    C 2023年5月22日
    00
  • vs2019中使用MFC构建简单windows窗口程序

    下面我将详细讲解如何在VS2019中使用MFC构建简单的windows窗口程序。 1. 准备工作 首先,我们需要安装Microsoft Visual Studio 2019,并选择安装C++桌面开发组件中的MFC组件。 2. 创建MFC应用程序 在VS2019中打开,选择“创建新项目”,然后在左侧选中“Visual C++”,在右侧选中“MFC应用程序”,并…

    C 2023年5月30日
    00
  • Win7系统蓝屏提示0x000000CA错误代码的解决方法

    Win7系统蓝屏提示0x000000CA错误代码的解决方法 前言 在使用Windows 7操作系统的过程中,有时候会遇到蓝屏错误提示,其中错误代码为0x000000CA。此错误通常与内存的使用有关,但具体问题可能很多。本文将提供一些解决方案,帮助您解决这个问题。 解决方案 方法一:检查硬件 首先,我们需要检查硬件是否正常工作。有一些问题可能会导致0x0000…

    C 2023年5月23日
    00
  • c语言实现足球比赛积分统计系统

    使用C语言实现足球比赛积分统计系统 介绍 足球比赛积分统计系统是一个基本的数据管理系统,它能够记录球队之间的胜、负、平等信息,计算出每个球队的比赛积分。本文将详细讲解如何使用C语言实现一个简单的足球比赛积分统计系统。 准备工作 要使用C语言实现足球比赛积分统计系统,您需要了解一些基本的程序设计概念,例如: 变量 运算符 控制结构(如if/else) 循环结构…

    C 2023年5月22日
    00
  • Win10打开软件报错“应用程序无法正常启动0xc0150002”解决方法图文教程

    以下是详细的攻略: 问题描述 当尝试打开某些软件时,可能会出现以下错误提示: 应用程序无法正常启动0xc0150002。 该错误通常由缺失或损坏的Microsoft Visual C++ 等可视化库文件引起。 解决方法 为了解决这个问题,我们可以尝试以下几种方法。 方法一:重新安装Microsoft Visual C++运行库 打开控制面板,并进入“程序和功…

    C 2023年5月23日
    00
  • php调用c++的方法

    下面是关于如何在PHP中调用C++的方法的完整攻略。 1. 简介 在PHP中调用C++方法,需要使用到PHP扩展。PHP扩展是一个独立的实体,它可以被增加到PHP中,从而扩展或改变PHP的功能。 在PHP扩展中调用C++函数,可以使用两种方式:直接调用C++代码或者使用PHP扩展编写C++扩展。 2. 直接调用C++代码 2.1 准备工作 创建C++头文件和…

    C 2023年5月23日
    00
  • C连接Mysql数据库代码

    当我们需要在C程序中使用MySQL数据库时,我们需要连接MySQL数据库。下面是将C程序连接MySQL数据库的完整攻略。 步骤1:安装MySQL C API 在C程序中使用MySQL数据库,我们需要安装MySQL C API。MySQL提供了C API开发包,我们可以到MySQL官方网站上下载。 步骤2:连接MySQL数据库 连接MySQL数据库前,需要先初…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部