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

2024-06-11 01:12

本文主要是介绍【C语言】C语言—通讯录管理系统(源码)【独一无二】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


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


目录

  • 【C语言】C语言—通讯录管理系统(源码)【独一无二】
  • 一、设计要求
  • 二、实现思路
        • 1. 数据结构设计
        • 2. 添加联系人
        • 3. 显示联系人信息
        • 4. 查询联系人
        • 5. 删除联系人
        • 6. 修改联系人
        • 7. 排序联系人
        • 8. 显示所有联系人
        • 9. 主函数
  • 三、运行结果
    • 添加通讯录信息
    • 查询通讯录信息
    • 修改通讯录信息
    • 排序通讯录信息
    • 显示通讯录信息
    • 删除通讯录


一、设计要求

选题三 通讯录管理程序(百行代码)
设计一个通讯录管理程序。该程序具有以下功能: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()

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

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

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

三、运行结果

添加通讯录信息

在这里插入图片描述

查询通讯录信息

在这里插入图片描述

修改通讯录信息

在这里插入图片描述

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

排序通讯录信息

在这里插入图片描述

显示通讯录信息

在这里插入图片描述

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

删除通讯录

在这里插入图片描述

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

这篇关于【C语言】C语言—通讯录管理系统(源码)【独一无二】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049795

相关文章

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超