C语言实现静态存储通讯录的示例代码

下面是详细的“C语言实现静态存储通讯录的示例代码”的攻略:

一、准备工作

1. 安装开发环境

首先需要安装C语言开发环境,推荐使用Code::Blocks,可以在官网https://www.codeblocks.org/上进行下载和安装。

2. 创建项目

在Code::Blocks中,选择File->New->Project,选择“Console application”,按照提示设置项目名称和路径等信息,创建一个新的C语言项目。

3. 编写代码

根据通讯录的需求,编写相应的代码,包括定义结构体、添加联系人、删除联系人、显示所有联系人等操作。具体代码如下:

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

#define MAX_CONTACTS 100    // 最大联系人数
#define MAX_NAME_LEN 20     // 姓名的最大长度
#define MAX_PHONE_LEN 20    // 电话号码的最大长度

// 定义联系人结构体
struct Contact {
    char name[MAX_NAME_LEN];
    char phone[MAX_PHONE_LEN];
};

// 定义通讯录结构体
struct AddressBook {
    struct Contact contacts[MAX_CONTACTS];
    int count;    // 当前联系人数
};

// 向通讯录添加联系人
void addContact(struct AddressBook *addressBook) {
    if (addressBook->count >= MAX_CONTACTS) {
        printf("通讯录已满!\n");
        return;
    }

    printf("请输入联系人姓名:\n");
    scanf("%s", addressBook->contacts[addressBook->count].name);    // 输入姓名
    printf("请输入联系人电话:\n");
    scanf("%s", addressBook->contacts[addressBook->count].phone);   // 输入电话

    addressBook->count++;    // 当前联系人数加一
    printf("添加联系人成功!\n");
}

// 从通讯录删除联系人
void deleteContact(struct AddressBook *addressBook, char *name) {
    int index = -1;

    // 查找姓名对应的联系人
    for (int i = 0; i < addressBook->count; i++) {
        if (strcmp(name, addressBook->contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

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

    // 移动后面的联系人,覆盖被删除的联系人
    for (int i = index + 1; i < addressBook->count; i++) {
        addressBook->contacts[i - 1] = addressBook->contacts[i];
    }

    addressBook->count--;    // 当前联系人数减一
    printf("删除联系人成功!\n");
}

// 显示所有联系人
void showContacts(struct AddressBook *addressBook) {
    if (addressBook->count == 0) {
        printf("通讯录为空!\n");
        return;
    }

    printf("共有%d个联系人:\n", addressBook->count);
    for (int i = 0; i < addressBook->count; i++) {
        printf("%d.姓名:%s,电话:%s\n", i + 1, addressBook->contacts[i].name, addressBook->contacts[i].phone);
    }
}

int main() {
    struct AddressBook addressBook = {{}, 0};    // 初始化为空通讯录
    int choice;

    // 提示用户输入命令
    while (1) {
        printf("\n请输入指令:\n");
        printf("1.添加联系人\n");
        printf("2.删除联系人\n");
        printf("3.显示所有联系人\n");
        printf("0.退出\n");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addContact(&addressBook);
                break;
            case 2: {
                char name[MAX_NAME_LEN];
                printf("请输入要删除的联系人姓名:\n");
                scanf("%s", name);
                deleteContact(&addressBook, name);
                break;
            }
            case 3:
                showContacts(&addressBook);
                break;
            case 0:
                return 0;
            default:
                printf("无效的指令!\n");
        }
    }
}

二、示例说明

1. 添加联系人

当用户选择1,即“添加联系人”时,程序会提示用户输入联系人姓名和电话,依次将输入的姓名和电话保存到下一个空闲的联系人位置,同时更新联系人数。如果通讯录已满,则提示“通讯录已满!”。代码如下:

void addContact(struct AddressBook *addressBook) {
    if (addressBook->count >= MAX_CONTACTS) {
        printf("通讯录已满!\n");
        return;
    }

    printf("请输入联系人姓名:\n");
    scanf("%s", addressBook->contacts[addressBook->count].name);    // 输入姓名
    printf("请输入联系人电话:\n");
    scanf("%s", addressBook->contacts[addressBook->count].phone);   // 输入电话

    addressBook->count++;    // 当前联系人数加一
    printf("添加联系人成功!\n");
}

2. 删除联系人

当用户选择2,即“删除联系人”时,程序会提示用户输入待删除联系人的姓名。如果找到了该联系人,则将该联系人的信息从通讯录中删除,并将后面的联系人依次向前移动。如果未找到该联系人,则提示“联系人不存在!”。代码如下:

void deleteContact(struct AddressBook *addressBook, char *name) {
    int index = -1;

    // 查找姓名对应的联系人
    for (int i = 0; i < addressBook->count; i++) {
        if (strcmp(name, addressBook->contacts[i].name) == 0) {
            index = i;
            break;
        }
    }

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

    // 移动后面的联系人,覆盖被删除的联系人
    for (int i = index + 1; i < addressBook->count; i++) {
        addressBook->contacts[i - 1] = addressBook->contacts[i];
    }

    addressBook->count--;    // 当前联系人数减一
    printf("删除联系人成功!\n");
}

以上就是“C语言实现静态存储通讯录的示例代码”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现静态存储通讯录的示例代码 - Python技术站

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

相关文章

  • C++实现学生住宿管理系统

    C++实现学生住宿管理系统攻略 系统介绍 学生住宿管理系统主要功能是管理学生住宿信息,包括学生的基本信息和住宿信息,如宿舍楼、宿舍号、床位号等。该系统可以实现学生住宿信息的增删改查等基本操作,方便学生和管理员进行管理。 系统设计 数据库设计 首先,我们需要设计一个数据库,用来存储学生信息和住宿信息。可以使用MySQL或SQLite等关系型数据库,也可以使用文…

    C 2023年5月23日
    00
  • C++实现多源最短路径之Floyd算法示例

    C++实现多源最短路径之Floyd算法示例 多源最短路径问题是指在给定图中任意两个顶点之间的最短路径问题。Floyd算法是解决该问题的一种经典算法,效率较低,但实现简单。 本篇文章将详细讲解如何使用C++语言实现Floyd算法,主要包含以下内容: 代码实现 算法详解 示例说明 代码实现 #include<iostream> using names…

    C 2023年5月22日
    00
  • C程序 计算数组中所有元素的平均数

    下面是使用攻略。 标题 C程序 计算数组中所有元素的平均数 介绍 本文介绍使用C语言编写计算数组中所有元素的平均数的程序,并提供两个示例进行说明。 代码 #include <stdio.h> int main() { int n, sum = 0; double avg; printf("请输入数组元素个数:"); scanf…

    C 2023年5月9日
    00
  • C 程序 检查闰年

    下面是关于“C 程序 检查闰年”的完整使用攻略。这个文本包含了关于如何使用这个程序的一些基本信息和使用示例。 程序介绍 这个程序是用 C 语言编写的,它可以检查某一年是否是闰年。 使用攻略 这个程序的使用非常简单。你可以按照以下步骤来使用这个程序: 下载程序代码 你可以从网站上下载该程序的源代码,将其复制到你的本地计算机中。 打开代码文件 你可以使用任何文本…

    C 2023年5月9日
    00
  • C语言实现三子棋游戏简易版

    C语言实现三子棋游戏简易版 介绍 三子棋是一种经典的棋类游戏。它是两个人玩的棋类游戏,用九个方格组成的棋盘进行比赛。其中一个玩家使用圆形(O)标志,另一个玩家使用叉(X)标记。第一方最早可以在横着、竖着或斜着放三个自己标记的棋子的人获胜。 本次攻略将教你如何用 C 语言实现一个简易的三子棋游戏,并提供两个示例以方便理解。 详细步骤 设计游戏界面和规则。首先定…

    C 2023年5月22日
    00
  • Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space

    Python 字符串处理中的特殊空格包括非换行空格(Non-breaking space)、制表符(Tab)和换行符(Newline)。在字符串处理中,这些特殊空格可能会对文本处理和分析造成一定的影响。 非换行空格 非换行空格通常是由于文本的格式化处理而产生的,它可以通过 Unicode 编码表中的字符 \xc2\xa0 表示。在 Python 中,可以通过…

    C 2023年5月22日
    00
  • C++类和对象到底是什么

    C++是一种面向对象的程序设计语言,类和对象是它最为重要的特性之一。 类是对现实事物的抽象,是对具有相同属性和行为的对象的实现。例如,对于一个图书类,每本书都会有书名、作者、出版社、价格等属性,每本书都可以借阅、购买、查阅等行为。在C++中,类的定义以class关键字开始,紧跟着是类的名称和花括号内的成员变量和成员函数。 class Book{ public…

    C 2023年5月23日
    00
  • C/C++ 中怎样使用SetConsoleTextAttribute()函数来控制输出字符的颜色

    当在控制台程序中使用C/C++语言输出字符时,通过SetConsoleTextAttribute()函数可以改变输出字符的颜色。该函数在Windows头文件中定义。下面给出SetConsoleTextAttribute()函数的用法及示例代码。 语法 BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, W…

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