【C语言】通讯录

【C语言进阶】C语言实现通讯录(简易版) 通讯录可以用来存储1000个人的信息 每个人的信息包括: 姓名、电话、性别、住址、年龄 功能: 新增联系人 查找联系人 删除联系人 修改联系人 查看所有联系人 清空所有联系人 以名字排序所有联系人 ... 阅读详情

在我们学习了指针、结构体、动态内存管理、文件操作,这里我们可以做一个小项目来巩固所学的知识点——通讯录。

源代码链接:

【C语言】通讯录——源代码_Brant_zero的博客-优快云博客

目录

一、通讯录中变量的创建

二、通讯录功能函数的实现

2.1 通讯录的初始化

2.2 添加联系人信息

2.3 扩容检查并扩容​

2.4 查找联系人

2.5 删除联系人

2.6 修改联系人信息

2.7 联系人排序

2.8 打印通讯录:

2.9 销毁通讯录:

2.10 保存通讯录信息

2.11 加载通讯录信息

三、主函数、菜单的实现


一、通讯录中变量的创建

为了实现这个通讯录,首先我们要创建一个结构体变量用来存放联系人的信息。为了方便后期调整,我们可以使用#define定义这些常量。

这时我们思考,我们创建的这个通讯录不可能只存放一个人的信息,所以我们可以创建一个结构体数组来存放多个人的数据,数组中每一个元素就是一个人的信息,即一个结构体变量。

与此同时,我们还需要知道当前通讯录存放了多少了人的信息,即(sz)——通讯录中已存放的个数。

这时我们可以再创建一个结构体变量将结构体数组和结构体大小(sz)放入其中,来更好的管理数据。

但是我们再想,我们根本不知道通讯录会存放多少人,每次直接开辟一个固定大小的结构体数组会十分尴尬:①数组开辟的太大,没有那么多人需要存放。②数组开辟的太小,程序放不下信息。

这时我们就要使用所学过的知识——动态内存开辟,定义一个max,表示当前数组开辟的大小,如果sz等于了max,表示当前开辟的空间不够了,我们就再开辟10个空间(这个空间可以随意)

接下来我们就可以创建一个通讯录Text_Contact。


二、通讯录功能函数的实现

2.1 通讯录的初始化

2.2 添加联系人信息

在录入信息之前我们要进行判断,判断当前sz是否等于Max,判断是否需要扩容 

2.3 扩容检查并扩容

2.4 查找联系人

2.5 删除联系人

删除联系人的前提是通讯录中有此人的信息,并且能找到该联系人在通讯录数组中的下标,所以我们在实现删除联系人之前要调用SEARCH_PeoInfo函数。

 

2.6 修改联系人信息

实现修改信息的作用也是要先找到此人的下标,所以我们可以再次调用我们的SEARCH_PeoInfo函数。

2.7 联系人排序

这里我们使用两种方式排序:1.年龄排序。2.首字母排序

这里我们可以使用qsort进行排序。

 qsort的使用主要就是compare函数的编写。

我们对通讯录进行排序,其实就是对通讯录数组进行排序,第一个参数我们将通讯录数组传入就可以了,数组名表示首元素的地址嘛。

第二个参数表示排序的数目,我们可以直接使用总结构体中的sz,存放了多少个数据就排序多少 个人。

第三个参数就是单个元素的大小,我们使用sizeof来计算一个元素的大小,即sizeof(p1->arr[0])

第四个参数,比较函数的书写。

按年龄排序

我们直数组中第r1个元素中的年龄与第r2个元素中年龄进行比较就可以了。

因为我们比较的是通讯录中的元素,所以要先进行强制类型转换,转为单个通讯录指针类型(PeoInfo*),然后使用成员访问操作符即可访问到成员的age。

按姓名排序

按姓名排序与上面的方法类似,只不过还要使用一层strcmp函数用来比较字符串的大小。代码如下,还是比较简单的。

2.8 打印通讯录:

2.9 销毁通讯录:

2.10 保存通讯录信息

2.11 加载通讯录信息


三、主函数、菜单的实现


希望大家能留下一个赞哦,你的三连就是我写博客的动力!!!

谢谢各位,我们下次再见。

【C语言】实战项目——通讯录 学会创建一个通讯录,对过往知识进行加深和巩固。 阅读详情

相关推荐

【C语言】实现一个通讯录(可排序)

1.目的 写一个实用型通讯录,它有如下功能: 显示目录 void ShowMenu() { printf("#######################\n"); printf("#1.Add 2.Del 3.Search #\n"); printf("#4.Mod 5.Show 6.Clear #\n"); printf("#7.Sort 0.Exit #\n"); printf("#######################\n"); printf("please sele

风铃的博客 1万+

【C语言】—— 通讯录

通讯录(结构体+动态内存管理+文件)

M的博客 1万+

C语言制作通讯录程序

设计要求: 可以存放1000个人的信息,每个人的信息包括姓名、年龄、性别、电话、住址 通讯录功能包括: 1.增加联系人 2.删除指定联系人 3.查找指定联系人 4.修改指定联系人 5.显示所有联系人 6.退出通讯录 思路分析: 首先我们需要创建3个文件,分别是源文件(test.c)、通讯录文件(contact.c)、通讯录头文件(contact.h),其中头文件用来包含头文件、声名信息、结构体、创建全局变量以及宏。 我们一步一步完成这个程序: 1.在源程序中写一个菜单函数menu()

久留不见i的博客 8534

c语言实现通讯录(详解)

通讯录的信息有了,接下来我们就需要的告诉用户使用我们通讯录的时候是怎样操作的,我们这里给上一个menu的菜单莱提示用户怎样进行操作,然后就是根据菜单的提升输入内容,然后我们就可以根据用户输入的内容来实现我们对应的功能。接下来我们要确定通过什么方式来找到结构体中对应的这个元素,假如我们就用名字的方法来删除所对应的元素,我们可以定义一个name变量,然后通过遍历这个结构体来找,如果找到了我们就把后面的数依次往前拿,如果遍历完都没有找到这个名字,那么就说明这个联系人不存在我们的通讯录。...

Trustmeican的博客 9116

通讯录排序(C语言)

习题9-5 通讯录排序(C语言) 分析:将输入的数据存入结构体数组中,采用系统排序函数qsort 按照生日排序。 #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct person { char name[11]; char birthday[9]; char p...

LIve1AnD1LeARN的博客 5184

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

【C语言】实现通讯录(详解)

通讯录的各大功能,详细图解

qq_27183803的博客 5594

TMS-EEG数据预处理:eeglab工具包TESA(一)

b. 自动选择:Tools -> Reject data epochs -> Reject by probability,然后进行Plot -> channel,进行删除。TMS-EEG(经颅磁刺激-脑电图)是一种结合了TMS和EEG记录的技术,这种技术允许研究者在非侵入的情况下探测大脑环路,评估大脑的兴奋性和连通性等皮层特性。对移除脉冲伪迹的数据进行插值:Tools ->TESA -> Interpolate removed data;插值后,画图查看:数据会有数值;

weixin_43604817的博客 1494

C语言 —— 通讯录

通讯录是C语言中非常简单且实用的小项目,涉及C语言中很多基础知识,能够独立写出通讯录这个小项目,证明自身对C语言知识有了一定的掌握。今天来探讨通讯录三种版本的实现

cdtu_mid的博客 4747

在虚拟机上搭建FTP服务器

chroot_list_file=/etc/vsftpd/chroot_list # 对chroot_list下用户限制。[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf #打开配置文件。# 指定用户的shell: -s /usr/bin/nologin。# 在配置文件中找到以下几行代码, 去掉注释(去掉 "#"号)# 指定用户主目录:/data/ftp/ftpuser -M。(2)修改配置文件,路径/etc/vsftpd/ 下的文件。

weixin_70753380的博客 3211

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

weixin_43205954的博客 2462

C语言实现通讯录(超详细)

如果没有满,则开始输入信息,先打印提醒信息,在输入,名字放在通讯录里面data数组的下标为pc->sz的位置上,所以是pc->data[pc->sz].name,name是数组名,数组名本身是地址,所以不需要使用&。找到了则将返回的下标作为for函数的i,将i+1这个结构体代替i这个结构体,然后不断的循环。写一个Findbyname的名字查找函数,参数分别是pc这个通讯录和name,在通讯录里面查找sz次,使用strcmp函数比较,如果等于0,就是找到了这个联系人,则返回下标,否则返回-1.

2301_79035870的博客 9736

KNX实战—ETS5_智能开关从零到一的配置全流程

本文详细介绍了使用ETS5软件配置KNX智能开关的完整流程。从创建项目、构建建筑结构,到导入产品数据库、添加并配置开关模块与智能面板,再到设置延时开关、闪烁报警等进阶功能,并深入解析了群组地址的配置与链接方法。最后指导完成项目校验与程序下载,帮助用户实现从零到一的智能灯光基础控制功能配置。

joy55的博客 543

【C语言】通讯录的实现

通讯录——不断优化之路

m0_73737103的博客 2918

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

PCB仿真软件:Altium Designer_(6).PCB布线设计:自动布线与手工布线

通过以上步骤,我们完成了一个简单的PCB设计案例。在这个过程中,我们使用了自动布线和手工布线的综合策略,确保布线质量符合设计要求。创建PCB项目:在Altium Designer中创建一个新的PCB项目。导入原理图:将原理图文件导入到PCB项目中。设置布线规则:通过设置必要的布线规则,如线宽、间距等。启动自动布线:使用自动布线器进行初步布线。手工优化布线:通过手工布线工具优化关键信号的布线路径。保存和导出PCB文件:保存PCB文件并导出Gerber文件,用于生产。

kkchenjj的博客 2522

C语言——通讯录的实现

进来轻松拿捏C语言通讯录的实现,讲解绝对到位,理解绝对透彻!!!

m0_64607843的博客 8678

纯方位观测下的三维定位,IV-PLKF(Inverse Velocity-Weighted Pseudo-Linear Kalman Filter)

在现代定位系统中,纯方位观测因其无需测距设备的优势,在无线通信、无人机导航和室内定位等领域备受关注。本文深入探讨基于算法的三维定位方法,并提供完整的MATLAB仿真例程。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 672

C语言进阶——通讯录模拟实现

C语言进阶——通讯录:本文采取结构体来实现基本的通讯录,有图有码,讲解详细,干货满满,不容错过的好文!

麦麦的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C语言——通讯录

纯C语言实现通讯录

m0_72165281的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

c语言实现通讯录

介绍如何使用c实现简易通讯录.

@初阶牛的博客 1479

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C语言:通讯录

本篇详细讲解了C语言如何实现一个通讯录。

Pxiaoyao的博客 1264

C语言实现通讯录

C语言实现通讯录功能

Lehjy的博客 2305

课设——c语言实现通讯录

相信许多同学在大学期间,学习计算机相关课程的时候,都有一个令人头疼的问题——课程设计。那么本片文章就详细的分享一个用C语言实现简单通讯录的项目,供同学们学习和参考(文章最后会附上源程序)。......

qq_51533489的博客 8066

【C语言进阶】C语言实现通讯录

我们需要用C语言模拟一个通讯录可以用来存储1000个人的信息 每个人的信息包括 姓名、电话、性别、住址、年龄 功能包括: 1.新增联系人 2.查找联系人 3.删除联系人 4.修改联系人 5.查看所有联系人 6.以名字排序所有联系人

m0_72161237的博客 3215
上一篇: 【C语言】10分钟学会文件操作
下一篇: 【C语言】通讯录——源代码
Brant_zero2022
博客等级 码龄5年 582粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Brant_zero2022

素材免费分享不求打赏,只求关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值