当前位置: 首页 > article >正文

数据结构--基于顺序表实现通讯录项目

欢迎阅读本篇学习笔记。作为计算机专业的学习记录本文将系统梳理通讯录项目的相关知识点从基础概念到代码实现逐步展开便于后续复习巩固这里我们会用到上篇的知识如果其中有不懂的大家可以翻看一下我的上篇博客。欢迎大家在评论区交流探讨感谢大家的阅读与支持show time话不多说我们直接进入正题在这里我们先明确通讯录一个完整的联系人的信息包含她/他的姓名性别年龄地址还有最重要的电话号码。把这些核心信息梳理好为后续项目进行做好准备。通讯录里面存储的是一个个联系人的数据我们也可以把通讯录看成是是一个顺序表先前我们讲到顺序表里面存储的数据可以是任意类型的像整型char类型等等他们都是比较单一的这些都是内置类型。当然了为了实现我们的通讯录我们让顺序表里面去存储结构体类型里面的一个单元就是一个联系人的数据。接下来我们来定义联系人的数据结构其中包含她/他的姓名性别年龄地址电话。并且为了后续方便使用我们给他进行一个名称的更改--peoInfo。这样我们一个顺序表就定义好了之前我们顺序表里面存储的是int类型我们通讯录则是需要结构体类型我们再对它进行修改。现在我们来看一下需要对通讯录进行怎样的一系列的操作内容如下通讯录初始化我们先来看通讯录的初始化。首先我们对顺序表进行一个名字的转化使其变成通讯录这样我们接下来的看似是对通讯录的操作本质上还是对顺序表进行的增删查改。为了防止头文件的互相包含我们需要进行一下前置声明。由于之前我们已经实现过了顺序表的初始化了。这里我们在实现通讯录的初始化的时候直接调用所需要的函数即可这里为了大家观看同时也把顺序表的初始化代码拿了过来。初始化完成后我们对它进行一个简单的测试。对其进行调试后我们可以看到通讯录已经初始化成功。通讯录的销毁有了通讯录的初始化自然少不了其销毁。销毁和初始化一样我们已经实现过了再次调用顺序表的销毁即可。接下来我们让level上升一丢丢进行通讯录的数据插入。首先我们需要获取用户的输入的内容姓名性别年龄电话地址。当用户输入完成后我们调用顺序表的插入方法我们使用尾插头插在指定位置插入都是没有问题这里我使用的是顺序表的尾插。通讯录的插入可以看到在使用scanf函数的时候有的地方使用到了取地址符有的地方没有。这里我们简单了解一下scanf的语法形式它的第二个参数要求传递的是变量的地址而数组名即是数组首元素的地址所以不需要。我们再来看一下刚才的结构体。可以看到除了age是int类型的其他都是数组所以我们只需对其变量取地址即可。通讯录的删除接下来我们进行的是通讯录数据的删除。我们删除联系人通常是根据他/她的姓名来查找并进行删除的所以在删除之前我们先写一个函数FindByname。这里用户输入的名字在与通讯录存储的名字在进行比较时我们使用到strcmp函数因为这里的name与用户输入的name都是字符串字符串与字符串比较我们就使用strcmp当它们匹配时strcmp返回0不相同时返回非零。代码如下有了名字的查找我们就可以进行下一步----通讯录联系人的删除。思路也是比较简单的有了刚才的函数加持最后调用一下顺序表的数据删除即可。通讯录的展示我们希望能让通讯录里面的数据可以直观的展示上我们的屏幕上让它按照我们之前姓名性别格式那样每个所对应的数据显现出来这里我们先写一个表头再让它依次打印出来。代码如下我们随机测试一下。这里的打印格式大家可以自行去调整让它更美观一点。通讯录的修改当然了一个通讯录我们可以往里面存联系人对其删除有时候联系人也会发生变化这时候就需要我们对其进行修改。首先这个联系人是必须是要存在的所以我们再次使用到函数FindByname判断我们所要修改的联系人是否存在如果联系人存在我们再对其进行相应的修改。通讯录的查找最后我们来到了通讯录操作的最后一步--通讯录的查找。这里的查找相较于刚才那个删除的查找多了联系人数据的打印道理是一样的这里我们就直接上代码了。OK以上就是我们对于通讯录的所有操作了。以为到这就结束了嘛其实不然我们这里要实现的是一个项目项目不可能单单只有测试最终我们是要体现在一个界面上的。接下来我们就来实现一下。最终项目实现一个完整通讯录里面包含了很多方法我们希望它可以像下图展示的一样根据用户不同的选择去实现不一样的操作。为了使用户看到上图的界面我们先来编写一个相应的菜单。有了菜单我们就可以选择进行通讯录的相关操作了当然我们这个菜单不可能只是昙花一现只展示那么一次所以我们使用到do-while循环。最后再使用switch语句使其能根据用户不同的选择进行相应的操作。代码如下:这篇内容就先整理到这里这次把顺序表应用的相关知识整理了一下为了方便自己日后复习回顾也希望能给正在学习的小伙伴一些参考。如果文中有理解不到位或是书写有误的地方欢迎大家在评论区指出一起交流共同进步。谢谢大家

相关文章:

数据结构--基于顺序表实现通讯录项目

欢迎阅读本篇学习笔记。 作为计算机专业的学习记录,本文将系统梳理通讯录项目的相关知识点,从基础概念到代码实现逐步展开,便于后续复习巩固,这里我们会用到上篇的知识,(如果其中有不懂的,大家可…...

企业级Windows日志监控架构设计:构建高可用分布式日志系统

企业级Windows日志监控架构设计:构建高可用分布式日志系统 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 在当今复杂的IT环境中,企业级日…...

ECharts 从版本4升级到版本5的实战指南与常见问题解析

1. 为什么要升级到ECharts 5? 如果你还在使用ECharts 4,可能会遇到一些困扰:某些API突然报错、文档里找不到对应的配置项、或者看到控制台频繁弹出"DEPRECATED"警告。这些都是因为ECharts 5带来了大量优化和改动。我在去年负责公司…...

微信小程序文件缓存优化:从基础到高级的完整实践指南

1. 微信小程序文件缓存的核心挑战 第一次开发微信小程序时,我遇到了一个棘手的问题:用户反馈图片加载慢,尤其是重复访问时仍然需要等待。这才意识到文件缓存没做好,不仅影响用户体验,还浪费流量。微信小程序的缓存系统…...

高效百度网盘直链解析架构解析:从协议逆向到企业级部署方案

高效百度网盘直链解析架构解析:从协议逆向到企业级部署方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 百度网盘直链解析技术作为解决云存储资源访问效率瓶颈的…...

deepin25.10安装claude

deepin25.10安装claude 软件备注nodejscladue运行环境git版本控制国产大模型api-key商业策略cc switch管理大模型claduevscode如果不习惯命令行操作可以选择一个图画工具 准备 创建软件安装目录 mkdir ~/optnodejs 下载nodejs wget https://nodejs.org/dist/v24.14.1/node-v…...

LMS自适应滤波器算法:从原理到实践

1. LMS自适应滤波器:让机器学会"自动调音" 想象一下你戴着降噪耳机坐地铁,周围人声嘈杂,但耳机却能神奇地保留音乐声、消除环境噪音。这种"智能降噪"的核心技术之一,就是我们要聊的LMS自适应滤波器。它就像个…...

怎么鉴定用了Tritan材质?2026权威指南:从感官体验到官方溯源

在健康消费成为主流的今天,Tritan材质凭借其“近似玻璃般透亮、塑料般坚韧”的特性,成为水杯、奶瓶等日用品的“明星材料”。然而,随着市场热度攀升,部分商家开始用普通PET、劣质回收料冒充Tritan。究竟怎么鉴定用了Tritan材质&am…...

HunterPie终极指南:如何通过现代叠加层提升《怪物猎人世界》游戏体验

HunterPie终极指南:如何通过现代叠加层提升《怪物猎人世界》游戏体验 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/h…...

歌词滚动姬:3分钟学会制作专业LRC歌词的免费神器

歌词滚动姬:3分钟学会制作专业LRC歌词的免费神器 【免费下载链接】lrc-maker 歌词滚动姬|可能是你所能见到的最好用的歌词制作工具 项目地址: https://gitcode.com/gh_mirrors/lr/lrc-maker 还在为制作歌词同步而烦恼吗?每次都要反复暂…...

京东云鼎环境配置与API安全接入实战:ISV服务商如何搞定数据加密与商家授权

京东云鼎环境配置与API安全接入实战:ISV服务商如何搞定数据加密与商家授权 在电商生态系统中,京东开放平台为ISV(独立软件开发商)服务商提供了强大的技术支撑和商业机会。不同于普通开发者,ISV服务商需要处理多商家数据…...

【Gin】参数处理练习题

学生编号动态获取接口 题目描述 使用 Gin 框架编写 Web 服务,定义 GET 路由 /student/:id,通过 c.Param("id") 获取学生编号,返回字符串:学生编号:xxx,立志成才,报效祖国&#xff0…...

泊松-高斯模型:从理论到实践,构建更真实的图像噪声模拟

1. 泊松-高斯模型的核心原理 当你用手机在夜晚拍照时,是否发现照片总有些奇怪的颗粒感?这就是图像噪声在作祟。泊松-高斯模型就像一位"噪声翻译官",能把相机传感器接收到的光信号转化为我们看到的带噪图像。这个模型之所以重要&am…...

如何用MPC-HC打造完美的家庭影院体验:终极Windows播放器指南

如何用MPC-HC打造完美的家庭影院体验:终极Windows播放器指南 【免费下载链接】mpc-hc MPC-HCs main repository. For support use our Trac: https://trac.mpc-hc.org/ 项目地址: https://gitcode.com/gh_mirrors/mpc/mpc-hc 想要在Windows电脑上享受流畅、高…...

如何利用CompressO实现高效本地视频图片压缩:完整指南与实战技巧

如何利用CompressO实现高效本地视频图片压缩:完整指南与实战技巧 【免费下载链接】compressO Convert any video/image into a tiny size. 100% free & open-source. Available for Mac, Windows & Linux. 项目地址: https://gitcode.com/gh_mirrors/co/c…...

Zotero重复文献智能合并方案:解决学术文献库数据冗余问题的自动化工具

Zotero重复文献智能合并方案:解决学术文献库数据冗余问题的自动化工具 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 在学术研究过…...

杰理之用cis 实现对讲机功能【篇】

增加回音消除算法节点。...

ChatTTS在非遗传承场景应用:老艺人语音风格复现与濒危方言保存实践

ChatTTS在非遗传承场景应用:老艺人语音风格复现与濒危方言保存实践 1. 引言:当技术遇见传承 想象一下,一位年过八旬的皮影戏老艺人,用他独特的嗓音和语调,讲述着流传百年的故事。他的声音里不仅有词句,还…...

5分钟搞定Windows开机画面:HackBGRT终极定制指南

5分钟搞定Windows开机画面:HackBGRT终极定制指南 【免费下载链接】HackBGRT Windows boot logo changer for UEFI systems 项目地址: https://gitcode.com/gh_mirrors/ha/HackBGRT 厌倦了每次开机都看到千篇一律的Windows徽标?想让电脑启动的第一…...

CentOS Stream 9国内Yum源更换全攻略:清华大学源配置详解(附常见问题解决)

CentOS Stream 9国内Yum源高效配置指南:清华大学源实战详解 最近在帮团队部署新的开发环境时,发现CentOS Stream 9的默认Yum源下载速度实在让人抓狂。一个简单的Docker安装就要等上半小时,严重影响工作效率。经过多次实践验证,切换…...

蓝驰创投完成39亿元第四期双币基金募资:已投银河通用与智元

雷递网 乐天 4月13日蓝驰创投今日宣布完成第四期双币基金的募集,基金总规模约5.6亿美元(约39亿元)。至此,蓝驰创投在管资产总规模已接近200亿元人民币。蓝驰创投管理合伙人陈维广表示:“感谢新老投资人的信任。我们始终…...

CentOS8 实战指南:FTP服务三种安全模式配置详解

1. CentOS8下FTP服务基础认知 第一次在CentOS8上折腾FTP服务时,我被各种专业术语搞得晕头转向。后来才发现,FTP(File Transfer Protocol)本质上就是个"文件快递员",负责在网络中搬运文件。而vsftpd&#xff…...

跨平台网络资源捕获工具:一站式解决视频音频下载难题

跨平台网络资源捕获工具:一站式解决视频音频下载难题 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否曾在微…...

高效管理IP资源:DHCP服务器监控的最佳实践

1. 为什么需要监控DHCP服务器? 想象一下你管理着一栋大型公寓楼,每个房间都需要分配唯一的门牌号。如果门牌号分配混乱,快递员找不到住户,住户之间也会互相串门。DHCP服务器就是网络世界的"门牌号分配系统"&#xff0c…...

智慧树刷课插件终极攻略:3步搞定自动学习,效率提升150% [特殊字符]

智慧树刷课插件终极攻略:3步搞定自动学习,效率提升150% 🚀 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视…...

Ostrakon-VL 人工智能扫描终端在运维监控中的应用:日志仪表盘图像识别

Ostrakon-VL 人工智能扫描终端在运维监控中的应用:日志仪表盘图像识别 1. 运维监控的痛点与解决方案 想象一下这样的场景:凌晨3点,运维工程师小王被电话惊醒,某个核心业务系统出现异常。他匆忙打开电脑,面对的是几十…...

用Debug玩转内存和寄存器:图解8086指令MOV/ADD/XCHG的执行过程

用Debug玩转内存和寄存器:图解8086指令MOV/ADD/XCHG的执行过程 第一次接触汇编语言时,很多人都会被那些看似简单的指令背后复杂的执行过程所困扰。MOV、ADD、XCHG这些基础指令在教材上可能只有一两行的描述,但它们在CPU内部究竟引发了哪些变…...

你是一名 Java 开发,用 Groovy 语言写一个逻辑,判断今天是否是月末最后一天

你是一名 Java 开发,用 Groovy 语言写一个逻辑,判断今天是否是月末最后一天 作为 Java 开发,用 Groovy 写这种日期逻辑简直太方便了,因为它能直接无缝调用 Java 的时间类库。 判断今天是不是月末,最稳妥的方法就是拿到…...

【图像加密】基于交替量子漫步的量子彩色图像加密解密附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...

MPU6050中断触发与DMP采样率协同配置实战

1. MPU6050中断与DMP协同工作原理 当你第一次接触MPU6050时,可能会被它的中断和DMP功能搞得一头雾水。这就像学骑自行车,刚开始总是摇摇晃晃,但一旦掌握了平衡技巧,就能轻松驾驭。MPU6050的中断机制就像是自行车的刹车系统&#x…...