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

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

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

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

基于Spring Boot 的小区人脸识别与出入记录管理系统功能

《基于SpringBoot的小区人脸识别与出入记录管理系统功能》文章介绍基于SpringBoot框架与百度AI人脸识别API的小区出入管理系统,实现自动识别、记录及查询功能,涵盖技术选型、数据模型... 目录系统功能概述技术栈选择核心依赖配置数据模型设计出入记录实体类出入记录查询表单出入记录 VO 类(用于

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五