C语言代码实现通讯录管理系统

yizhihongxing

C语言代码实现通讯录管理系统

1. 思路

通讯录管理系统主要分为三个模块:显示、添加、删除联系人。首先,我们需要定义一个联系人的结构体,包含姓名、电话、地址等基本信息。然后,通过数组来存储联系人信息,可以通过遍历数组来显示已有联系人,通过添加、删除数组中的元素来添加、删除联系人信息。

2. 代码实现

2.1 定义联系人结构体

在这个管理系统中,我们需要联系人的名字、电话和地址。一个合适的结构体定义如下:

#define MAX_NAME 20     // 姓名最大长度
#define MAX_PHONE 12    // 电话最大长度
#define MAX_ADDR 30     // 地址最大长度

typedef struct {
    char name[MAX_NAME];    // 姓名
    char phone[MAX_PHONE];  // 电话
    char addr[MAX_ADDR];    // 地址
} person;  

2.2 显示联系人信息

添加联系人后,我们需要显示已有的所有联系人信息。这个可以通过遍历数组来实现。示例代码如下:

int show(person *list, int count) {
    int i;
    if (count == 0) {
        printf("\nEmpty List!\n");
        return 0;
    }
    printf("%-20s%-20s%-20s\n", "Name", "Phone", "Address");
    for (i = 0; i < count; i++) {
        printf("%-20s%-20s%-20s\n", list[i].name, list[i].phone, list[i].addr);
    }
    return 0;
}

2.3 添加联系人

添加联系人主要是向数组中添加一个person结构体元素。示例代码如下:

int add(person *list, int *pcount) {
    char ch;
    do {
        printf("Please enter the name [Length <= 20]:");
        scanf("%s", list[*pcount].name);
        printf("Please enter the phone [Length <= 12]:");
        scanf("%s", list[*pcount].phone);
        printf("Please enter the address [Length <= 30]:");
        scanf("%s", list[*pcount].addr);
        (*pcount)++;    // count自增1
        printf("Continue to add another person? (y/n): ");
        scanf("%s", &ch);
    } while (ch == 'y' || ch == 'Y');
    return 0;
}

2.4 删除联系人

删除联系人实际上是将数组中的一个元素删除,并将后面的元素依次前移,最后将数组大小减1。示例代码如下:

int delete(person *list, int *pcount) {
    int i, pos;
    char name[MAX_NAME];
    if (*pcount == 0) {
        printf("\nEmpty List!\n");
        return -1;
    }
    printf("Please enter the name to delete: ");
    scanf("%s", name);
    for (i = 0; i < *pcount; i++) {
        if (strcmp(name, list[i].name) == 0) {  // 找到对应的联系人
            for (pos = i; pos < (*pcount) - 1; pos++) {    // 将后面的元素前移
                list[pos] = list[pos+1];
            }
            (*pcount)--;    // 将数组大小减1
            printf("\nDelete Done!\n");
            return 0;
        }
    }
    printf("\nCan't find the person whose name is %s!\n", name);   // 未找到对应的联系人
    return -1;
}

3. 示例说明

3.1 示例1

运行程序,在菜单中选择添加联系人:

=========================
Welcome to the Contacts System
=========================

Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 2

Please enter the name [Length <= 20]:Tom
Please enter the phone [Length <= 12]:139xxxxx
Please enter the address [Length <= 30]:Shanghai
Continue to add another person? (y/n): y

Please enter the name [Length <= 20]:Jerry
Please enter the phone [Length <= 12]:138xxxxx
Please enter the address [Length <= 30]:Beijing
Continue to add another person? (y/n): n

Add Done!

然后选择显示联系人:

Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 1

Name                Phone               Address             
Tom                 139xxxxx            Shanghai            
Jerry               138xxxxx            Beijing             

3.2 示例2

从上一个示例中删除联系人Jerry:

Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 3

Please enter the name to delete: Jerry

Delete Done!

然后再次选择显示联系人:

Please select the operation you want to do:
1) Show all contacts
2) Add a new contact
3) Delete a contact
4) Quit
Your choice is [1-4]: 1

Name                Phone               Address             
Tom                 139xxxxx            Shanghai            

4. 总结

通讯录管理系统的实现可以帮助我们了解数组和结构体的使用,同时也让我们熟悉C语言的基本语法。在实现过程中,需要注意错误处理、代码优化等方面。该系统还可以进一步扩展、完善,比如添加按姓名排序等功能,可以让我们继续深入学习,提高自己的编程能力。

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

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

相关文章

  • 淘宝直播间进不去怎么回事?怎么做?

    淘宝直播间进不去怎么回事?怎么做? 淘宝直播是淘宝平台上的一项直播服务,为商家提供直播卖货的渠道,吸引了大量用户。但是,用户在使用淘宝直播时,有时遇到无法进入直播间的问题,接下来我们将为大家介绍如何解决。 一、检查网络连接 首先,我们需要检查一下自己的网络连接是否正常。可以打开其他网站试试看,如果其他网站打得开,那就是淘宝平台的问题,如果其他网站也打不开,那…

    C 2023年5月23日
    00
  • ajax处理返回的json格式数据方法

    下面我会给你详细讲解“ajax处理返回的json格式数据方法”的完整攻略。 步骤一:发起ajax请求 在网页中使用ajax处理json数据通常需要调取服务器端的api,通过发起ajax请求获取json数据。发起ajax请求可以使用像jquery这样的第三方库,以下是一个发起ajax请求的范例代码: $.ajax({ url: ‘/api/getData’, …

    C 2023年5月23日
    00
  • jsoup 框架的使用小结

    下面来详细讲解一下“jsoup 框架的使用小结”的完整攻略。 什么是jsoup框架 jsoup是一个Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了类似于JQuery的CSS选择器,用于从HTML解析出DOM,也可用于HTML的提取和转换。 jsoup框架的安装和使用步骤 安装方式 直接从官网下载jar包:https://jso…

    C 2023年5月23日
    00
  • 拳皇14跳出0xc000007b怎么解决_跳出0xc000007b的解决方法(必看)

    拳皇14跳出0xc000007b怎么解决_跳出0xc000007b的解决方法(必看) 问题描述 拳皇14是一款非常受欢迎的格斗游戏,但是有些玩家在启动游戏时会遇到0xc000007b的错误提示,导致游戏无法正常运行。那么这个问题怎么解决呢?本文将为大家提供详细的解决方法。 解决方法 方法一:安装/修复DirectX 首先请确认您的电脑上已经安装了最新的Dir…

    C 2023年5月23日
    00
  • 在Visual Studio Code中配置C++编译环境的问题

    下面是在Visual Studio Code中配置C++编译环境的完整攻略: 1. 确保计算机中已安装C++编译环境 在开始之前,首先需要确保计算机中已经安装了C++编译环境。如果尚未安装,可以在官网上下载对应版本的Visual C++ Redistributable Packages进行安装。 2. 安装Visual Studio Code 如果尚未安装V…

    C 2023年5月23日
    00
  • C语言完美实现动态数组代码分享

    C语言完美实现动态数组代码分享 简介 动态数组是一种在程序运行时可以动态扩展的数组结构。C语言并没有原生支持动态数组,不过我们可以基于堆内存动态分配的原理,在C语言中实现动态数组。 本文将介绍如何在C语言中完美实现动态数组,并提供代码示例。 分步实现动态数组 1. 分配动态内存 动态数组必须基于堆内存分配实现。我们可以使用标准库中的 malloc 函数动态分…

    C 2023年5月23日
    00
  • C语言一个函数如何实现好几个return返回值

    在C语言中,一个函数可以实现多个return返回值,主要是通过条件分支语句来实现的。通常在编写函数时,我们需要在不同的条件下返回不同的值。下面是我总结的实现方法和示例。 实现方法 实现一个函数有多个返回值可以采用以下三种方法: 全部使用if/else的方式进行判断,每个分支在结尾return不同的值; 使用switch语句,每个case分支在结尾return…

    C 2023年5月23日
    00
  • 全民小镇2014万圣节活动介绍 全民小镇万圣节特殊海域和兑换券一览

    全民小镇2014万圣节活动介绍 活动时间 2014年10月25日-11月2日 活动内容 全民小镇万圣节活动分为两部分:特殊海域和兑换券。 特殊海域 特殊海域是活动期间新增的一些地图。在这些地图中,您将会遇到一些特殊的怪物和道具,同时还有不同于平常的地图场景,非常适合体验万圣节气氛。 兑换券 兑换券是您在活动中可以获得的奖励之一。在特定的NPC处,您可以用兑换…

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