C语言实现通讯录系统程序

C语言实现通讯录系统程序攻略

通讯录系统是一个经典的应用程序,其实现也是编程入门的一大重点。本文将分享使用C语言实现通讯录系统程序的完整攻略,帮助你从零开始完成一个完整的通讯录系统。

步骤1:需求分析

在编写任何程序之前,需要进行需求分析,从而明确程序需要实现的具体功能。在此我们定义所需的功能如下:

  1. 添加联系人:用户可以添加一个新的联系人,并记录该联系人的姓名、性别、年龄、手机号、家庭住址等信息。

  2. 显示联系人:用户可以查看所有已经添加的联系人信息,包括每个联系人的姓名、性别、年龄、手机号、家庭住址等信息。

  3. 删除联系人:用户可以选择一个要删除的联系人,并将其从通讯录中删除。

  4. 查找联系人:根据联系人的姓名进行查找,并在查询结果中显示该联系人的所有信息。

  5. 修改联系人:用户可以选择一个要修改的联系人,并修改该联系人的信息,如手机号、家庭住址等。

步骤2:设计程序数据结构

根据上述需求,我们可以设计出通讯录系统的数据结构,如下所示:

#define NAME_MAX_LEN 20
#define SEX_MAX_LEN 5
#define PHONE_MAX_LEN 12
#define ADDR_MAX_LEN 30

/* 联系人结构体 */
struct Contact {
    char name[NAME_MAX_LEN];
    char sex[SEX_MAX_LEN];
    int age;
    char phone[PHONE_MAX_LEN];
    char addr[ADDR_MAX_LEN];
};

上述代码中,我们定义了一个联系人结构体,其中包含了姓名、性别、年龄、手机号、家庭住址等信息。在程序中,我们将会增删改查联系人信息,因此这个结构体是非常重要的。

步骤3:实现程序功能

接下来,我们就可以根据需求,开始实现程序的功能,具体操作如下:

1. 添加联系人

在程序中,我们需要向用户询问联系人信息,然后将该联系人信息保存到通讯录列表中,代码如下所示:

/* 将新增联系人信息添加到通讯录列表 */
void add_contact(struct Contact* contacts, int* cnt) {
    printf("请输入联系人姓名:");
    scanf("%s", contacts[*cnt].name);
    printf("请输入联系人性别:");
    scanf("%s", contacts[*cnt].sex);
    printf("请输入联系人年龄:");
    scanf("%d", &contacts[*cnt].age);
    printf("请输入联系人手机号:");
    scanf("%s", contacts[*cnt].phone);
    printf("请输入联系人家庭住址:");
    scanf("%s", contacts[*cnt].addr);

    (*cnt)++;
    printf("联系人添加成功!\n");
}

在上述代码中,我们使用scanf函数获取用户输入的联系人信息,然后将其保存到通讯录列表中。同时,通过更新通讯录列表中联系人数量的方式,可以达到添加联系人的效果。

2. 显示联系人

在程序中,我们需要遍历通讯录列表,并输出每一个联系人的信息,代码如下:

/* 显示所有联系人信息 */
void show_contacts(struct Contact* contacts, int cnt) {
    printf("所有联系人信息如下:\n");
    for (int i = 0; i < cnt; i++) {
        printf("姓名:%s\t性别:%s\t年龄:%d\t手机号:%s\t家庭住址:%s\n",
            contacts[i].name, contacts[i].sex, contacts[i].age,
            contacts[i].phone, contacts[i].addr);
    }
}

在上述代码中,我们使用for循环遍历通讯录列表,然后输出每一个联系人的信息。通过使用printf函数,我们可以将每一个联系人的信息按照一定的格式进行显示。

3. 删除联系人

在程序中,我们需要让用户选择一个要删除的联系人,然后将其从通讯录列表中删除,代码如下:

/* 从通讯录列表中删除指定联系人 */
void delete_contact(struct Contact* contacts, int* cnt) {
    char name[NAME_MAX_LEN];
    printf("请输入要删除的联系人姓名:");
    scanf("%s", name);

    int index = -1;
    for (int i = 0; i < *cnt; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("通讯录中不存在该联系人!\n");
    } else {
        for (int i = index; i < (*cnt) - 1; i++) {
            contacts[i] = contacts[i + 1];
        }
        (*cnt)--;
        printf("联系人删除成功!\n");
    }
}

在上述代码中,我们使用scanf函数获取用户输入的联系人姓名,然后遍历通讯录列表,查找该联系人的位置。如果找到该联系人,我们将通讯录列表中此位置以后所有的联系人向前移动一个位置,并更新联系人数量。否则,我们提示用户通讯录中不存在该联系人。

4. 查找联系人

在程序中,我们需要让用户输入要查找的姓名,并将所有符合条件的联系人信息输出,代码如下:

/* 根据姓名查找联系人 */
void find_contact(struct Contact* contacts, int cnt) {
    char name[NAME_MAX_LEN];
    printf("请输入要查找的联系人姓名:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < cnt; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            printf("姓名:%s\t性别:%s\t年龄:%d\t手机号:%s\t家庭住址:%s\n",
                contacts[i].name, contacts[i].sex, contacts[i].age,
                contacts[i].phone, contacts[i].addr);
            found = 1;
        }
    }

    if (!found) {
        printf("通讯录中不存在该联系人!\n");
    }
}

在上述代码中,我们使用scanf函数获取用户输入的联系人姓名,然后遍历通讯录列表,查找所有符合条件的联系人,并将其信息进行输出。如果找不到任何联系人,我们提示用户通讯录中不存在该联系人。

5. 修改联系人

在程序中,我们需要让用户选择一个要修改的联系人,然后修改该联系人的信息,代码如下:

/* 修改通讯录列表中指定联系人的信息 */
void modify_contact(struct Contact* contacts, int cnt) {
    char name[NAME_MAX_LEN];
    printf("请输入要修改的联系人姓名:");
    scanf("%s", name);

    int index = -1;
    for (int i = 0; i < cnt; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

    if (index == -1) {
        printf("通讯录中不存在该联系人!\n");
        return;
    }

    printf("请输入新的联系人信息:\n");
    printf("请输入联系人性别:");
    scanf("%s", contacts[index].sex);
    printf("请输入联系人年龄:");
    scanf("%d", &contacts[index].age);
    printf("请输入联系人手机号:");
    scanf("%s", contacts[index].phone);
    printf("请输入联系人家庭住址:");
    scanf("%s", contacts[index].addr);
    printf("联系人信息修改成功!\n");
}

在上述代码中,我们使用scanf函数获取用户输入的联系人姓名,然后遍历通讯录列表,查找要修改的联系人,并更新该联系人的信息。如果找不到该联系人,我们提示用户通讯录中不存在该联系人。

步骤4:测试程序

根据上述代码,我们已经完成了通讯录系统的编写,现在可以编译并运行程序,查看是否符合需要。

为了方便测试,下面提供两个示例:

示例一:添加联系人

  1. 打开程序,选择“1. 添加联系人”。
  2. 输入联系人信息:“张三”、“男”、“18”、“13800138000”、“北京市昌平区”。
  3. 程序提示“联系人添加成功!”。

示例二:显示联系人

  1. 打开程序,选择“2. 显示联系人”。
  2. 程序依次输出所有已经添加的联系人的信息。

总结

以上就是使用C语言实现通讯录系统程序的完整攻略,通过以上代码,你可以了解到如何定义数据结构、实现程序功能、以及测试程序的方法。希望本文对于你学习C语言编程有所帮助,如果你有任何疑问或建议,欢迎在评论区留言。

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

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

相关文章

  • IOS Object-C 中Runtime详解及实例代码

    iOS Object-C 中Runtime详解及实例代码 1. Runtime简介 Runtime是OC的运行时系统。是一个由 C 语言编写的 底层的 Objective-C 对象(如实例和 Class)的管理系统。它是编译器和 CPU 的桥梁, Objective-C 的“动态”本质得以实现。 通过运行时机制,Objective-C能够实现动态绑定和方法调…

    C 2023年5月22日
    00
  • Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)

    接下来我将详细讲解Python对文件和目录进行操作的方法,包括file对象、os模块、os.path模块和shutil模块的使用方法。 一、file对象 1.1 打开文件 在Python中,我们使用open()函数来打开一个文件。open()函数的基本语法如下所示: f = open(file, mode=’r’, buffering=-1, encodin…

    C 2023年5月23日
    00
  • python多线程同步实例教程

    下面我会详细讲解“Python多线程同步实例教程”的完整攻略。 Python多线程同步实例教程 什么是多线程同步? 多线程同步是指,在多线程环境中,协调各个线程之间的执行顺序,避免线程之间的竞争问题,使得线程能够协调合作,实现正确的程序逻辑。 Python多线程同步的方法 Python多线程同步有以下几种方法: Lock(锁) Lock是Python中最基本…

    C 2023年5月22日
    00
  • Go语言编程入门超级指南

    Go语言编程入门超级指南是一本适合初学者的Go语言入门教材,本书详细讲解了Go语言的语法、常用数据结构以及并发编程等内容。本文将为大家提供完整的入门指南。 目录 安装Go语言环境 编写第一个Go程序 常用数据结构与方法 并发编程 Go语言项目实战 1. 安装Go语言环境 首先需要在官网下载Go语言的安装包,并按照安装向导进行安装。安装过程中可以选择自定义安装…

    C 2023年5月23日
    00
  • C++实现地铁自动售票系统程序设计

    C++实现地铁自动售票系统程序设计攻略 概述 地铁自动售票系统是一种基于计算机技术的智能化自助售票系统,可以方便快捷地为乘客提供地铁车票的购买、充值、查询、退款等服务。本文主要介绍如何使用C++语言实现地铁自动售票系统的设计以及开发方法。 实现步骤 第一步:确定功能需求 地铁自动售票系统的主要功能包括: 售卖地铁票和充值。要求用户输入选择的地铁线路和数量,然…

    C 2023年5月23日
    00
  • C语言代码实现扫雷游戏

    下面我会详细讲解一下“C语言代码实现扫雷游戏”的完整攻略。 环境及工具准备 在进行C语言代码实现扫雷游戏之前,需要准备以下环境及工具: C语言编译器,比如gcc、clang等; 图形化库,比如SDL、OpenGL等; 编辑器,比如VS Code、Sublime Text等。 这里以使用gcc编译器,SDL图形化库,VS Code编辑器为例进行讲解。 第一步:…

    C 2023年5月23日
    00
  • 老生常谈C语言静态函数库的制作和使用

    老生常谈C语言静态函数库的制作和使用 静态函数库是一组用C语言编写并经过编译后得到的功能模块,可以在程序开发过程中被反复使用。本文将详细讲解如何制作和使用C语言的静态函数库,并提供两个示例以帮助读者更好地理解。 制作静态函数库 以下是制作静态函数库的具体步骤: 编写需要的函数并将其放入单独的.c文件中。 将所有.c文件一起编译,生成相应的目标文件.o。 使用…

    C 2023年5月23日
    00
  • OPENMP SECTIONS CONSTRUCT原理示例解析

    下面我将为您详细讲解“OPENMP SECTIONS CONSTRUCT原理示例解析”的完整攻略,并且给出两条示例说明。 OPENMP SECTIONS CONSTRUCT原理示例解析 什么是OPENMP SECTIONS CONSTRUCT? OPENMP SECTIONS CONSTRUCT是OPENMP的一种并行计算模式,它允许多个线程同时执行不同的代…

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