【C语言】C语言—通讯录管理系统(源码)【独一无二】

简介: 【C语言】C语言—通讯录管理系统(源码)【独一无二】

一、设计要求

选题三 通讯录管理程序(百行代码)

设计一个通讯录管理程序。该程序具有以下功能:1. 添加通讯录信息:输入通讯录信息并予以保存,通讯录信息包

括姓名、通信地址、邮政编码、电话号码;若电话号码已经存在,则不允许添加该信息。

2.查询通讯录信息:根据输入的姓名查询通讯录信息;若输入的姓名为空,则查询出所有的通讯录信息;若查询出多条信息,将这些信息按电话号码由小到大排序后再显示。

3.删除通讯录信息:根据输入的电话号码删除相应的通讯录信息

4.修改通讯录信息:用输入的通讯录信息替换电话号码与之相同的已有通讯录信息。

二、实现思路

本代码实现了一个简单的通讯录管理系统,主要功能包括添加联系人、查询联系人、删除联系人、修改联系人、排序联系人和显示所有联系人。以下是代码的详细实现思路分析:

1. 数据结构设计

数据结构

  • 使用结构体 Contact 来表示联系人,包含姓名、地址、邮政编码和电话号码四个字段。
  • 使用一个 Contact 数组 contacts 存储所有联系人,最大容量为 MAX_ENTRIES
  • 使用一个全局变量 contactCount 记录当前联系人数量。
2. 添加联系人

函数void addContact()

  • 检查通讯录是否已满,如果已满则提示用户并返回。
  • 读取用户输入的联系人信息,创建一个新联系人。
  • 检查新联系人的电话号码是否已存在,如果存在则提示用户并返回。
  • 将新联系人添加到通讯录,并更新 contactCount
  • 提示用户联系人已成功添加。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

3. 显示联系人信息

函数void displayContact(Contact contact)

  • 打印指定联系人的详细信息(姓名、地址、邮政编码、电话号码)。
4. 查询联系人

函数void queryContact()

  • 提供两种查询方式:按姓名查询和按电话号码查询。
  • 根据用户选择,调用 queryByName()queryByPhoneNumber() 进行具体查询。

按姓名查询

函数void queryByName()

  • 读取用户输入的姓名(允许用户按Enter键显示所有联系人)。
  • 遍历通讯录,找到匹配的联系人,存储在结果数组中。
  • 如果找到匹配的联系人,按电话号码排序并显示,否则提示未找到联系人。

按电话号码查询

函数void queryByPhoneNumber()

  • 读取用户输入的电话号码。
  • 遍历通讯录,找到匹配的联系人并显示,如果未找到则提示用户。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈


5. 删除联系人

函数void deleteContact()

  • 读取用户输入的要删除的联系人电话号码。
  • 遍历通讯录,找到匹配的联系人并将其删除(通过覆盖数组元素实现),更新 contactCount
  • 提示用户联系人已删除,如果未找到则提示用户。
6. 修改联系人

函数void modifyContact()

  • 读取用户输入的要修改的联系人电话号码。
  • 遍历通讯录,找到匹配的联系人并读取新的联系人信息,更新联系人数据。
  • 提示用户联系人信息已更新,如果未找到则提示用户。
7. 排序联系人

函数void sortContacts()

  • 提供多种排序方式:冒泡排序、快速排序、堆排序、选择排序和归并排序。
  • 根据用户选择,调用相应的排序函数对联系人数组进行排序。
  • 提示用户联系人已排序并显示排序后的联系人信息。

排序算法实现

  • 冒泡排序:void bubbleSort(Contact arr[], int n)
  • 快速排序:void quickSort(Contact arr[], int low, int high)
  • 堆排序:void heapSort(Contact arr[], int n)
  • 选择排序:void selectionSort(Contact arr[], int n)
  • 归并排序:void mergeSort(Contact arr[], int l, int r)

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

8. 显示所有联系人

函数void displayAllContacts()

  • 检查通讯录是否为空,如果为空则提示用户。
  • 遍历通讯录并显示每个联系人的详细信息。
9. 主函数

函数int main()

  • 提供一个循环菜单,允许用户选择不同的操作(添加、查询、删除、修改、排序、显示所有联系人、退出)。
  • 根据用户选择调用相应的函数执行操作。

这段代码实现了一个功能齐全的通讯录管理系统,涵盖了联系人管理的基本操作。代码结构清晰,模块化设计使得每个功能单独实现,便于维护和扩展。通过使用不同的排序算法,代码展示了对联系人进行排序的多种实现方法,体现了算法的多样性和应用场景。通过这种设计,用户可以方便地管理通讯录中的联系人,提升了用户体验和系统的实用性。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

三、运行结果

添加通讯录信息

查询通讯录信息

修改通讯录信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

排序通讯录信息

显示通讯录信息

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

删除通讯录

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “通讯录” 获取。👈👈👈

相关文章
|
14天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
90 9
|
14天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别
pymalloc 和系统的 malloc 有什么区别
|
13天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
56 16
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(上)(c语言实现)(附源码)
本文介绍了四种常见的排序算法:冒泡排序、选择排序、插入排序和希尔排序。通过具体的代码实现和测试数据,详细解释了每种算法的工作原理和性能特点。冒泡排序通过不断交换相邻元素来排序,选择排序通过选择最小元素进行交换,插入排序通过逐步插入元素到已排序部分,而希尔排序则是插入排序的改进版,通过预排序使数据更接近有序,从而提高效率。文章最后总结了这四种算法的空间和时间复杂度,以及它们的稳定性。
50 8
|
9天前
|
搜索推荐 算法 C语言
【排序算法】八大排序(下)(c语言实现)(附源码)
本文继续学习并实现了八大排序算法中的后四种:堆排序、快速排序、归并排序和计数排序。详细介绍了每种排序算法的原理、步骤和代码实现,并通过测试数据展示了它们的性能表现。堆排序利用堆的特性进行排序,快速排序通过递归和多种划分方法实现高效排序,归并排序通过分治法将问题分解后再合并,计数排序则通过统计每个元素的出现次数实现非比较排序。最后,文章还对比了这些排序算法在处理一百万个整形数据时的运行时间,帮助读者了解不同算法的优劣。
36 7
|
7天前
|
C语言 Windows
C语言课设项目之2048游戏源码
C语言课设项目之2048游戏源码,可作为课程设计项目参考,代码有详细的注释,另外编译可运行文件也已经打包,windows电脑双击即可运行效果
18 1
|
13天前
|
C语言
【数据结构】二叉树(c语言)(附源码)
本文介绍了如何使用链式结构实现二叉树的基本功能,包括前序、中序、后序和层序遍历,统计节点个数和树的高度,查找节点,判断是否为完全二叉树,以及销毁二叉树。通过手动创建一棵二叉树,详细讲解了每个功能的实现方法和代码示例,帮助读者深入理解递归和数据结构的应用。
62 8
|
10天前
|
程序员 C语言 开发者
pymalloc 和系统的 malloc 有什么区别?
pymalloc 和系统的 malloc 有什么区别?
|
16天前
|
存储 C语言
【数据结构】手把手教你单链表(c语言)(附源码)
本文介绍了单链表的基本概念、结构定义及其实现方法。单链表是一种内存地址不连续但逻辑顺序连续的数据结构,每个节点包含数据域和指针域。文章详细讲解了单链表的常见操作,如头插、尾插、头删、尾删、查找、指定位置插入和删除等,并提供了完整的C语言代码示例。通过学习单链表,可以更好地理解数据结构的底层逻辑,提高编程能力。
43 4
|
17天前
|
存储 C语言
【数据结构】顺序表(c语言实现)(附源码)
本文介绍了线性表和顺序表的基本概念及其实现。线性表是一种有限序列,常见的线性表有顺序表、链表、栈、队列等。顺序表是一种基于连续内存地址存储数据的数据结构,其底层逻辑是数组。文章详细讲解了静态顺序表和动态顺序表的区别,并重点介绍了动态顺序表的实现,包括初始化、销毁、打印、增删查改等操作。最后,文章总结了顺序表的时间复杂度和局限性,并预告了后续关于链表的内容。
46 3