C语言实现通讯录系统课程设计

yizhihongxing

C语言实现通讯录系统课程设计

本次课程设计旨在通过实现一个简单的通讯录系统,帮助初学者巩固C语言基础知识,并初步了解数据结构相关操作和应用。

基本功能

通讯录系统主要包含以下功能:

  1. 添加联系人
  2. 删除联系人
  3. 修改联系人信息
  4. 查找联系人
  5. 显示所有联系人信息
  6. 清空联系人

设计思路

通讯录系统主要使用链表数据结构作为存储方式,并且通过读写文件将链表数据结构永久保存到外部存储器中。具体实现步骤如下:

  1. 定义一个通讯录结构体类型,包含联系人信息,如姓名,性别,电话等。
  2. 定义一个链表节点结构体类型,每个节点存储一个联系人信息。
  3. 定义一个链表类型,包含链表头指针和尾指针,便于插入和删除操作。
  4. 通过读取文件中的数据建立通讯录,初始化链表。
  5. 完成各个操作函数的实现,具体内容见下文。

代码示例

添加联系人

// 定义一个新的联系人
struct contact new_contact;
// 从用户输入中获取联系人信息
contact_input(&new_contact);
// 判断联系人是否已存在
if (find_contact(&new_contact) != NULL) {
    printf("联系人已存在,添加失败。\n");
    return;
}
// 新建链表节点,保存联系人信息
struct contact_node* node = (struct contact_node*) malloc(sizeof(struct contact_node));
node->contact = new_contact;
node->next = NULL;
// 将新建节点插入到链表末尾
if (contacts.tail == NULL) {
    contacts.head = contacts.tail = node;
} else {
    contacts.tail->next = node;
    contacts.tail = node;
}
printf("添加联系人成功。\n");

使用上述代码,可以实现向通讯录中添加一个新的联系人。我们首先定义了一个新的联系人结构体,通过调用contact_input()函数获取用户输入的联系人信息,然后使用find_contact()函数查找是否存在相同联系人,如果不存在则创建一个新的链表节点,最后通过修改链表的头指针和尾指针来插入新节点。最后输出结果。

查找联系人

// 从用户输入中获取需要查找的联系人姓名
char search_name[MAX_NAME_LEN];
printf("请输入需要查找的联系人姓名:");
fgets(search_name, MAX_NAME_LEN, stdin);
strip(search_name);
// 调用查找函数获取联系人信息
struct contact_node* result = find_contact_by_name(search_name);
if (result != NULL) {
    printf("查找到了以下联系人:\n");
    print_contact(&result->contact);
} else {
    printf("未找到联系人。\n");
}

上述代码中,我们通过fgets()函数从标准输入中获取需要查找的联系人姓名,并调用find_contact_by_name()函数查找联系人。如果找到了相应的联系人,则通过print_contact()函数输出联系人信息,如果未找到则输出相应提示。需要注意的是,为了安全起见,我们在输入后通过strip()函数清除输入字符串中的空格和换行符。

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

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

相关文章

  • C语言数组实现学生信息管理系统设计

    针对这个话题,我将为你详细讲解“C语言数组实现学生信息管理系统设计”的完整攻略。具体过程如下: 第一步:确定学生的信息结构 我们首先需要确定学生的信息结构,也就是每个学生信息需要包含哪些字段。常见字段包括姓名、学号、性别、年龄、联系方式等等。针对这些字段,我们可以使用C语言的结构体来进行定义,如下所示: struct Student { char name[…

    C 2023年5月30日
    00
  • Qt计时器使用方法详解

    以下是关于“Qt计时器使用方法详解”的攻略说明: 1. 概述 Qt是一款功能强大的跨平台C++应用程序开发框架,提供了很多实用的功能模块,其中就包括计时器模块,可以在Qt中轻松地实现各种计时器功能,比如实现周期性的定时任务、定时刷新界面等。本文将介绍如何使用Qt计时器,包括如何创建计时器、设置计时器参数、处理计时器事件等。 2. 创建计时器 首先,我们需要通…

    C 2023年5月22日
    00
  • 基于C语言实现简单的扫雷小游戏

    基于C语言实现简单的扫雷小游戏攻略 思路 创建扫雷游戏棋盘 随机初始化地雷位置 统计每个格子周围地雷个数 打开格子、标记地雷 判断游戏是否结束 具体步骤 1. 创建扫雷游戏棋盘 此处使用一个二维数组来模拟一个扫雷棋盘。数组大小需要根据游戏难度来确定,通常为 $10 * 10$、 $16 * 16$ 或 $30 * 30$ 等。 #define ROW 10 …

    C 2023年5月23日
    00
  • QT判断两个日期时间的大小

    判断两个日期时间的大小是一种常见的需求。在QT中,可以使用QDateTime类来实现这个功能。下面是详细的攻略: 方式一:使用QDateTime的比较运算符 QDateTime类提供了小于、小于等于、大于、大于等于、等于、不等于等比较运算符,可以通过它们来比较两个日期时间的大小。 示例1: QDateTime dt1 = QDateTime::fromStr…

    C 2023年5月22日
    00
  • C++友元函数与拷贝构造函数详解

    C++友元函数与拷贝构造函数详解 什么是友元函数? 在 C++ 编程中,有时一个类的方法需要访问该类的私有成员或保护成员,而这些方法不属于该类,此时就需要用到友元函数。 友元函数是被许可访问该类的私有成员或保护成员的函数。当一个函数被声明为友元函数时,它被赋予了访问该类中所有成员变量和函数的特殊权限。 #include <iostream> us…

    C 2023年5月22日
    00
  • 带你粗略了解c++的最大乘积

    带你粗略了解c++的最大乘积 简介 在c++编程中,求最大乘积是一个常见的问题,本攻略将带你通过实例详细讲解在c++中如何求出最大乘积。 解题思路 我们可以通过以下步骤来解决这个问题: 记录数组中绝对值最大和次大的两个数。 记录数组中绝对值最小和次小的两个数。 对比以上4个数字,得出最大乘积。 代码实现 以下是实现该思路的c++代码: #include &l…

    C 2023年5月22日
    00
  • 谈谈iOS开发之JSON格式数据的生成与解析

    iOS开发中的JSON数据 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在iOS开发中常用于前后端交互、接口请求等方面。在iOS开发中,我们可以使用系统提供的NSJSONSerialization类实现对JSON格式数据的生成和解析。 JSON数据的生成 我们可以使用Foundation框架中的NSJSONSe…

    C 2023年5月23日
    00
  • 基于C语言实现点菜系统

    基于C语言实现点菜系统攻略 介绍 点菜系统是一个常见的应用软件,其主要功能是让用户通过计算机选择自己所需的食品以及数量,以便于快捷地进行下单操作。本文将全面介绍如何使用C语言来实现一个简单的点菜系统。 思路 一个点菜系统主要需要实现以下功能: 展示菜单 选择菜品 输入数量 确认订单 结算订单 基于以上的思路,我们可以进行如下的代码实现。 示例 示例1:展示菜…

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