C语言实现简易通讯录完整流程

C语言实现简易通讯录完整流程

1. 需求分析

在编写“C语言实现简易通讯录”的过程中,我们需要实现以下功能:
1. 添加联系人
2. 删除联系人
3. 修改联系人
4. 查找联系人
5. 显示联系人

2. 思路设计

2.1 数据结构设计

为了实现通讯录功能,我们可以定义如下结构体存储联系人信息:

#define NAME_MAX_LENGTH 20
#define PHONE_MAX_LENGTH 20

struct contact{
    char name[NAME_MAX_LENGTH];
    char phone[PHONE_MAX_LENGTH];
};

2.2 功能实现设计

  1. 添加联系人:输入联系人姓名和电话,将联系人信息添加到通讯录;
  2. 删除联系人:输入联系人姓名,查找并删除该联系人信息;
  3. 修改联系人:输入联系人姓名,查找并修改该联系人电话;
  4. 查找联系人:输入联系人姓名,查找并显示该联系人信息;
  5. 显示联系人:显示所有联系人信息。

3. 代码实现

3.1 添加联系人

我们可以通过定义结构体数组来存储多个联系人信息,示例代码如下:

#define MAX_CONTACTS 100

struct contact contacts[MAX_CONTACTS];
int contacts_count = 0;

void add_contact(){
    if(contacts_count == MAX_CONTACTS){
        printf("通讯录已满,无法添加更多联系人。\n");
        return;
    }
    printf("请输入联系人姓名:");
    scanf("%s", contacts[contacts_count].name);
    printf("请输入联系人电话:");
    scanf("%s", contacts[contacts_count].phone);
    printf("联系人 %s 已成功添加到通讯录中。\n", contacts[contacts_count].name);
    contacts_count++;
}

3.2 删除联系人

我们可以通过遍历结构体数组查找并删除联系人信息,示例代码如下:

void delete_contact(){
    char name[NAME_MAX_LENGTH];
    printf("请输入要删除的联系人姓名:");
    scanf("%s", name);
    int index = -1;
    for(int i = 0; i < contacts_count; i++){
        if(strcmp(contacts[i].name, name) == 0){
            index = i;
            break;
        }
    }
    if(index == -1){
        printf("通讯录中无此联系人。\n");
        return;
    }
    for(int i = index; i < contacts_count-1; i++){
        contacts[i] = contacts[i+1];
    }
    printf("联系人 %s 已成功从通讯录中删除。\n", name);
    contacts_count--;
}

3.3 修改联系人

我们可以通过遍历结构体数组查找并修改联系人信息,示例代码如下:

void modify_contact(){
    char name[NAME_MAX_LENGTH];
    printf("请输入要修改的联系人姓名:");
    scanf("%s", name);
    int index = -1;
    for(int i = 0; i < contacts_count; i++){
        if(strcmp(contacts[i].name, name) == 0){
            index = i;
            break;
        }
    }
    if(index == -1){
        printf("通讯录中无此联系人。\n");
        return;
    }
    printf("请输入新的联系人电话:");
    scanf("%s", contacts[index].phone);
    printf("联系人 %s 的电话已成功修改为 %s。\n", name, contacts[index].phone);
}

3.4 查找联系人

我们可以通过遍历结构体数组查找联系人信息并显示,示例代码如下:

void search_contact(){
    char name[NAME_MAX_LENGTH];
    printf("请输入要查找的联系人姓名:");
    scanf("%s", name);
    int index = -1;
    for(int i = 0; i < contacts_count; i++){
        if(strcmp(contacts[i].name, name) == 0){
            index = i;
            break;
        }
    }
    if(index == -1){
        printf("通讯录中无此联系人。\n");
        return;
    }
    printf("联系人姓名:%s\n联系人电话:%s\n", contacts[index].name, contacts[index].phone);
}

3.5 显示联系人

我们可以通过遍历结构体数组显示所有联系人信息,示例代码如下:

void show_contacts(){
    printf("当前通讯录中共有 %d 个联系人。\n", contacts_count);
    for(int i = 0; i < contacts_count; i++){
        printf("联系人%d姓名:%s\n联系人%d电话:%s\n", i+1, contacts[i].name, i+1, contacts[i].phone);
    }
}

4. 示例说明

下面给出两条示例来说明如何使用实现的通讯录功能。

示例1:基本操作

先添加一个联系人,名为“张三”,电话为“12345678901”:

请输入操作编号:1
请输入联系人姓名:张三
请输入联系人电话:12345678901
联系人 张三 已成功添加到通讯录中。

查看添加的联系人:

请输入操作编号:5
当前通讯录中共有 1 个联系人。
联系人1姓名:张三
联系人1电话:12345678901

修改联系人的电话号码为“11111111111”:

请输入操作编号:3
请输入要修改的联系人姓名:张三
请输入新的联系人电话:11111111111
联系人 张三 的电话已成功修改为 11111111111。

将张三的联系人信息从通讯录中删除:

请输入操作编号:2
请输入要删除的联系人姓名:张三
联系人 张三 已成功从通讯录中删除。

再次查看通讯录中的联系人:

请输入操作编号:5
当前通讯录中共有 0 个联系人。

示例2:满员操作

添加满MAX_CONTACTS(100)个联系人:

请输入操作编号:1
请输入联系人姓名:联系人1
请输入联系人电话:123
联系人 联系人1 已成功添加到通讯录中。
请输入操作编号:1
请输入联系人姓名:联系人2
请输入联系人电话:123
联系人 联系人2 已成功添加到通讯录中。
...
请输入操作编号:1
请输入联系人姓名:联系人100
请输入联系人电话:123
联系人 联系人100 已成功添加到通讯录中。

尝试添加第101个联系人:

请输入操作编号:1
请输入联系人姓名:联系人101
请输入联系人电话:123
通讯录已满,无法添加更多联系人。

尝试查看通讯录中的联系人:

请输入操作编号:5
当前通讯录中共有 100 个联系人。
联系人1姓名:联系人1
联系人1电话:123
联系人2姓名:联系人2
联系人2电话:123
...
联系人100姓名:联系人100
联系人100电话:123

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

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

相关文章

  • Vue.js实现的计算器功能完整示例

    下面我会详细讲解Vue.js实现的计算器功能完整示例的攻略。 准备工作 在开始实现计算器之前,需要在HTML文件中引入Vue.js和一个CSS文件。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Vue C…

    C 2023年5月22日
    00
  • c语言编程软件有哪些 Win7下用哪种C语言编译器

    c语言编程软件有很多种,常用的有Visual Studio、Code::Blocks、Dev-C++、Eclipse、Sublime Text等等。在Win7下选用C语言编译器时,可以选择MinGW或者Visual Studio内置的编译器。下面将具体介绍编译器的选择过程和示例说明。 选择编译器 MinGW MinGW是Windows下的一款GNU编译器套件…

    C 2023年5月22日
    00
  • python中常用的各种数据库操作模块和连接实例

    连接数据库是Python中非常重要的操作之一。Python中有很多数据库操作模块,比如官方的sqlite3模块,以及第三方的MySQLdb和pymongo等模块。下面就对这些模块及其使用做一个详细的介绍和示例说明。 sqlite3模块 官方sqlite3模块是Python内置的模块,它可以通过Python与SQLite数据库进行交互。它允许我们执行SQL语句…

    C 2023年5月23日
    00
  • c++ 让程序开机自动启动的方法

    当我们想让编写的c++程序自动启动时,可以采用下面几种方法来实现。 方法一:修改注册表 假设我们要设置的程序名为 test.exe,要将其设置为系统开机启动的程序。可以使用以下步骤: 打开注册表编辑器:在开始菜单中输入 regedit,打开注册表编辑器。 找到启动项:依次展开 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft…

    C 2023年5月23日
    00
  • 实际使用到底怎么样?JDB二合一Type-C麻花线评测

    以下是详细讲解“实际使用到底怎么样?JDB二合一Type-C麻花线评测”的完整攻略: 评测背景 本次评测的对象是JDB二合一Type-C麻花线,该产品是一款支持同时充电和传输数据的Type-C接口数据线。我们将通过使用该产品,结合实际的使用场景,来对其性能进行评测。 测试环境 MacBook Pro 2019(Type-C接口) Samsung Galaxy…

    C 2023年5月23日
    00
  • C++的头文件和实现文件详解

    C++的头文件和实现文件是C++程序开发非常重要的组成部分之一。头文件是用于解释并声明函数和变量的文件,而实现文件则是用于实现函数定义的文件。下面就让我来给大家讲解一下这方面的攻略。 头文件详解 头文件的作用 首先,我们来讲一下头文件的作用。头文件是用于声明和定义变量、函数和类的文件。头文件包含了类型定义,函数声明和变量声明等内容。通常,头文件放在程序的最开…

    C 2023年5月23日
    00
  • mysql中取出json字段的小技巧

    对于“mysql中取出json字段的小技巧”,可以进行如下讲解: 1. 确保MySQL版本支持JSON数据类型 在MySQL 5.7及以上的版本中,才支持JSON数据类型,如果你的MySQL版本过低,需要进行升级。可以通过如下命令查看MySQL版本: SELECT VERSION(); 如果版本太低,可以参考MySQL官方文档进行升级。升级完成后,可以在表中…

    C 2023年5月23日
    00
  • FTP客户端c代码功能实现

      现在市面上有很多免费的FTP软件:如FileZilla ,那如果想自己在代码中实现与ftp服务器的上传下载文件该如何实现那?  本质上ftp协议就是TCP基础上建立的一种协议,具体如下。 FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FT…

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部