基于C语言实现个人通讯录管理系统

基于C语言实现个人通讯录管理系统攻略

1. 开发环境和工具

  • 操作系统:Windows或Linux
  • IDE:Visual Studio Code、Code::Blocks、Dev-C++等
  • 编程语言:C语言

2. 需求分析

通讯录管理系统用于存储个人通讯信息,包括姓名、电话、地址等。通讯录管理系统可以实现添加、删除、修改、查找、显示等功能。

3. 设计思路

  • 定义一个结构体,实现姓名、电话、地址等信息的存储。
  • 定义函数实现通讯录的添加、删除、修改、查找和显示功能。
  • 使用文件实现通讯录信息的存储和读取。
  • 使用菜单实现用户交互。

4. 实现步骤

4.1 定义结构体

typedef struct Contact {
    char name[20];
    char phone[12];
    char address[30];
} Contact;

4.2 实现添加功能

void Add(Contact *contacts, int *count) {
    printf("请输入姓名:");
    scanf(" %s", contacts[count->name]);
    printf("请输入电话:");
    scanf(" %s", contacts[count->phone]);
    printf("请输入地址:");
    scanf(" %s", contacts[count->address]);
    (*count)++;
}

4.3 实现删除功能

void Delete(Contact *contacts, int *count) {
    char name[20];
    printf("请输入删除联系人的姓名:");
    scanf(" %s", name);
    for (int i = 0; i < *count; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            for (int j = i; j < *count - 1; j++) {
                strcpy(contacts[j].name, contacts[j + 1].name);
                strcpy(contacts[j].phone, contacts[j + 1].phone);
                strcpy(contacts[j].address, contacts[j + 1].address);
            }
            (*count)--;
            printf("删除成功!\n");
            return;
        }
    }
    printf("没有找到该联系人!\n");
}

4.4 实现修改功能

void Modify(Contact *contacts, int *count) {
    char name[20];
    printf("请输入要修改联系人的姓名:");
    scanf(" %s", name);
    for (int i = 0; i < *count; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            printf("请输入姓名:");
            scanf(" %s", contacts[i].name);
            printf("请输入电话:");
            scanf(" %s", contacts[i].phone);
            printf("请输入地址:");
            scanf(" %s", contacts[i].address);
            printf("修改成功!\n");
            return;
        }
    }
    printf("没有找到该联系人!\n");
}

4.5 实现查找功能

void Find(const Contact *contacts, int count) {
    char name[20];
    printf("请输入要查找联系人的姓名:");
    scanf(" %s", name);
    for (int i = 0; i < count; i++) {
        if (strcmp(name, contacts[i].name) == 0) {
            printf("姓名:%s,电话:%s,地址:%s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
            return;
        }
    }
    printf("没有找到该联系人!\n");
}

4.6 实现显示功能

void Show(const Contact *contacts, int count) {
    for (int i = 0; i < count; i++) {
        printf("姓名:%s,电话:%s,地址:%s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
    }
}

4.7 实现文件读写功能

void Save(const Contact *contacts, int count) {
    FILE *fp = fopen("contacts.txt", "w");
    for (int i = 0; i < count; i++) {
        fprintf(fp, "%s %s %s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
    }
    fclose(fp);
}

void Load(Contact *contacts, int *count) {
    FILE *fp = fopen("contacts.txt", "r");
    if (fp == NULL) {
        printf("没有文件!\n");
        return;
    }
    while (fscanf(fp, "%s %s %s", contacts[*count].name, contacts[*count].phone, contacts[*count].address) != EOF) {
        (*count)++;
    }
    fclose(fp);
}

4.8 实现菜单

int Menu() {
    int choice;
    printf("\n1. 添加联系人\n");
    printf("2. 删除联系人\n");
    printf("3. 修改联系人\n");
    printf("4. 查找联系人\n");
    printf("5. 显示联系人\n");
    printf("6. 退出\n");
    printf("请选择操作:");
    scanf("%d", &choice);
    return choice;
}

5. 示例说明

5.1 添加联系人

请输入姓名:Tom
请输入电话:12345678901
请输入地址:Beijing

5.2 删除联系人

请输入删除联系人的姓名:Tom
删除成功!

5.3 修改联系人

请输入要修改联系人的姓名:Tom
请输入姓名:Jerry
请输入电话:13579246801
请输入地址:Shanghai
修改成功!

5.4 查找联系人

请输入要查找联系人的姓名:Jerry
姓名:Jerry,电话:13579246801,地址:Shanghai

5.5 显示联系人

姓名:Jerry,电话:13579246801,地址:Shanghai

6. 总结

通过上述步骤的操作,我们就可以基于C语言实现个人通讯录管理系统。在整个过程中最核心的就是文件读写操作、结构体的定义以及菜单交互的设计。除此之外,针对需求的不同,我们可以在基础版本的基础上继续添加新功能。

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

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

相关文章

  • Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法

    针对“Android编程实现根据经纬度查询地址并对获取的json数据进行解析的方法”,我们可以采用以下步骤: 在AndroidManifest.xml中添加必要的权限声明: <uses-permission android:name="android.permission.INTERNET" /> <uses-permi…

    C 2023年5月23日
    00
  • C 语言基础教程(我的C之旅开始了)[四]

    标题:C语言基础教程——第四章 本文讲解C语言基础教程第四章的内容,主要涵盖了指针和函数相关的知识点。 1.指针 1.1指针的定义和基本操作 指针是一个变量,其值为另一个变量的地址。可以使用“&”符号获取变量的地址,使用“*”符号获取指针指向的变量的值。 int a = 10; int *p = &a; printf("%d\n&q…

    C 2023年5月23日
    00
  • MySQL中json字段的操作方法

    当MySQL版本大于等于5.7.8时,支持json类型的字段。json是具有可读性和结构的数据格式,MySQL提供了方便的函数和操作符来处理json数据。下面将详细讲解MySQL中json字段的操作方法。 创建json类型的字段 在MySQL中创建json类型的字段,可以使用以下语法: CREATE TABLE table_name ( id INT PRI…

    C 2023年5月23日
    00
  • 字符串拷贝函数memcpy和strncpy以及snprintf 的性能比较

    首先,我们需要了解三种函数的基本用法和区别: memcpy:用来实现两个内存区域的复制,常用于拷贝字符串。 strncpy:用来将指定长度的源字符串拷贝到目标字符串中,如果长度超出,则后续填充’\0’。 snprintf:类似于sprintf,将格式化的字符串写入指定的缓冲区,可以限制写入的最大字符数以避免缓冲区溢出。 下面我们来比较一下这三个函数的性能。 …

    C 2023年5月22日
    00
  • C#使用LitJson解析JSON的示例代码

    首先我们需要了解什么是JSON和LitJson,JSON是一种轻量级的数据交换格式,而LitJson则是一款C#的JSON序列化和反序列化库。 接下来,我们将用LitJson来解析JSON数据。以下是示例代码: 引用LitJson 在项目中引入LitJson.dll并添加LitJson命名空间 using LitJson; 创建一个类来接收JSON数据 在此…

    C 2023年5月23日
    00
  • C语言函数调用的三种实现方法实例

    C语言函数调用的三种实现方法实例 在C语言中,函数调用可以通过三种不同的方式进行实现,分别为值传递、指针传递和引用传递。下面我们分别对这三种方法进行详细的讲解。 值传递 值传递是指将实参的值复制到形参中,函数中对形参的修改不会影响到实参。下面是一个示例代码: #include <stdio.h> int add(int a, int b) { i…

    C 2023年5月23日
    00
  • csinsm32.exe是安全的进程吗 csinsm32进程有哪些用处

    关于“csinsm32.exe是安全的进程吗 csinsm32进程有哪些用处”的完整攻略,可以分为以下几个方面进行讲解: 1. 什么是csinsm32.exe进程 csinsm32.exe进程是属于某些电脑工具软件的一部分,比如知名的Chrome的插件格式工具CrxMouse。这个进程通常只在具备特定的软件环境下才会被启动,一般只有在你运行与其相关的软件时才…

    C 2023年5月23日
    00
  • C语言的10大基础算法

    C语言的10大基础算法 简介 C语言是一门非常古老并且非常流行的编程语言。C语言强大的功能和丰富的软件库致使它成为了许多程序员和企业的首选开发语言。不仅如此,C语言中还有一些非常重要而基础的算法,这些算法也是程序员必须掌握的一部分。这篇文章将介绍C语言中的10个最基础的算法。 算法介绍 1. 排序算法 排序算法是所有程序员必须掌握的一部分,因为数据处理与排序…

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