【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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam