C语言通讯录是一个使用C语言编写的简单程序,用于存储和管理联系人信息。该程序允许用户添加、删除、查找和显示通讯录中的联系人。每个联系人通常包括姓名、电话号码和电子邮件地址等基本信息。程序使用结构体来存储联系人信息,并使用数组或链表等数据结构来组织和管理通讯录。通过命令行界面与用户进行交互,用户可以通过输入命令来执行相应的操作。C语言通讯录程序可以用于个人或小型组织的信息管理,提高联系人信息的管理效率。
上篇博客我们一起用C语言实现了一个固定大小的通讯录程序,这篇博客里我们将借助动态内存相关知识把他改造成可以动态增加大小的版本.
要编写一个通讯录项目,首先要明确我们想要达到的效果是什么样,下面我将用vs2022编译器来为大家演示一下通讯录运行时的样子:
基本实现步骤同上、中两篇 【[C语言]通讯录实现(中) - CSDN App】http://t.csdnimg.cn/K5tqO
相比之前的静态版本还是动态版本。这个信息写到文件版本,无疑是更加完善的。如果你不会文件操作的话,可以看看我前面写过的内存的一篇博客来看看⇣
相信每个科班的同学都有过C语言课设的经历,比如教职工工资管理系统、图书信息管理系统、学生信息管理系统、通讯录系统等,其实这些课设任务的底层逻辑都是一致的,无非就是对结构体变量进行增删查改操作,同时配合文件操作将数据保存在文件夹中,本文将以通讯录举例,从静态版到文件版,让大家明白通讯录系统是如何逐步完善的。
🎬 鸽芷咕:个人主页 🔥 个人专栏:《C语言初阶篇》 《C语言进阶篇》
🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ~51CTOP创作者~周榜109﹣总榜883⇿全网访问量35w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝 📣系列专栏-YY_謓泽的博客-CSDN
我们先来看一下cplusplus.com - The C++ Resources Network网站上memset()函数的基本信息:
本次优化版本与上一次的1.0版本相比,改变了原有的固定内存存储通讯录联系人的方式。
在上次的2.0版本中,我们已经拥有了可实现动态内存操作的通讯录版本,但是每次当我们输入数据,展示数据,退出之后,我们再次执行程序,会发现我们之前输入的联系人信息丢失,需要再次输入。所以,在这次的3.0版本中我们加入了保存联系人信息的功能,这将极大的优化我们对通讯录的使用体验。
我们需要一个通讯录,可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。
目录 前言 问题描述 工具 基本框架 静态通讯录 具体实现思路与流程 准备阶段 创建联系人信息与通讯录结构体 主体 菜单界面 通讯录各功能实现 初始化通讯录(清空通讯录联系人) 添加通讯录联系人 删除通讯录联系人 查找通讯录联系人 修改联系人信息 展示通讯录联系人 排序通讯录联系人 整体效果图 附上源码 动态通讯录 通讯录结构 初始化通讯录 通讯录增容 通讯录销毁 数据保存 输出数据 输入数据(加载数据) 附上源码 ---- 前言 ---- 检验学习成果最好的方式是实践 在学习完C语言的基础知识以后
静态通讯录,信息未录入时,通过数组的形式按最大容量1000申请内存,但是不够灵活,会存在浪费内存或内存不够用的问题,对于这个问题,我们引入了动态通讯录。
首先,判断通讯录是不是满了,满了给出提示,没满让用户输入联系人姓名和电话。此处不能直接使用结构体变量 Person p 这种形式,必须使用结构体指针Person* p。
在前面的文章中我们依次学习了结构体、动态内存管理以及文件操作的相关知识,所以我们今天可以分别来编写静态版、动态版和文件版的通讯录,用于对已学知识的应用与巩固,和对我们前面学习效果的检测。
这就是一个通讯录菜单,这里我们可以看到它可以实现一些功能,例如增加删除联系人等等。
首先,设计一个主程序来对于通讯录进行一个整体的设计,它的功能我们用函数来进行包装,这样可以增加代码的可读性。
用C语言模拟出来一个通讯录,首先要分头文件和源文件的,我这里分了一个头文件和两个源文件:
思路:根据用户不同的选择,进入不同的功能,可以选择switch分支结构,将整个架构进行搭建
golang 在云计算场景下可以说是风头无量,而且 golang 的很多设计理念基于 c,大家可能想不到,c 也是可以实现面向对象编程的,我们可以参考 golang 中面向对象来实现一波。
导出的图可能有点糊,或者查看链接:https://share.weiyun.com/uhf1y2mp
在使用C语言编写程序时,使用动态内存是不可避免的,因此了解动态内存管理函数也是必要的。
我们用枚举类型将功能一一列举出来,同时每一个枚举成员也代表着对应的数字,我们在switch ...case 语句中也不用 case 1,case 2来记录每一功能对应的数字了,直接以case ADD,case DEL表示,更加直接了当。
4.在main()函数里面。 我们采用switch to 语句来实现用户的选择,并不断轮询直到用户输入指令0退出通讯录系统。我们还可以用cls实现清屏操作以保持美观。
思路有了,那么我们先来打一个框架 先用printf实现一个菜单 这个菜单可以帮助我们更方便地使用通讯录,可理解为指引功能。接着,功能的选择,我们可以用switch实现 其次,这个通讯录,我们想让它一直进行下去,直到使用者不想用了,所以写一个循环 综上所述,代码实现我们可以写成这般
本文介绍的通讯录管理系统分为两个版本,分别是 ExtJS 版本和 Vue.js 版本。
在2年前就学过安卓开发,那时候安卓开发还是很火,但是感觉现在不怎么热潮了,这学期刚好有门c++课,实现通讯录备份,网络通信使用socket通信,服务器端用c++,客户端用c++,界面用 android编写。
通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:
在前面的文章中,已经讲解了动态版本的通讯录的实现,但是动态通讯录存在一个致命缺陷,就是它不能自动保存数据,而前面一篇文章中学到了数据持久化的方法之一:即把数据存放在磁盘文件上,便可以实现数据持久化。 具体应该如何做呢? 假如我们在退出的时候,通过文件操作,把我们所写的数据存在磁盘文件里,然后我们再进行下一次的使用的时候,在初始化阶段就从磁盘中读取这些数据,这不就实现了。
经过上一篇文章我们对顺序表有了一个初步的认识,下面我们将通过C语言实现顺序表的功能,包括: 增加数据 删除数据 查找数据 修改数据 可以把顺序表看作一种特殊的数组,我们下面将要进行的操作是基于 数组 数组操作 动态内存管理等基本功能实现的
我们前面学习结构体时,写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数 据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯 录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。
整理了一下文件,找到了去年做课程设计的报告,保存一下代码,有一个说法:过了6个月再去看自己写的代码,假设认为写的不好,就说明有了一点进步;这样说明应该还是有那么一点点进步~
Hello🥂謓泽👋多多指教😛 HY点赞👍收藏⭐️留言📝 ⛳通讯录✔目录 ✨前言 ✨模块化编程 🎓通讯录的逻辑实现 ✨实现通讯录の步骤 🖊创建颜色函数color() 🖊菜单界面函数menu() 🎓通讯录的定义 🖊枚举类型 🎓初始化通讯录 🎓增加通讯录的信息 🎓打印通讯录的信息 🎓删除通讯录的信息 🎓查找通讯录的信息 🎓修改指定通讯录人的信息 🎓排查通讯录当中人员的信息 ✨模块化代码实现 🖊test.c 🖊address_book.c 🖊address_book.h ✨最后✨ --
前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加,删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据有得重新录入,如果使用这用的通讯录就很难受
Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能在线编程。Cloud Studio 作为在线 IDE,包含代码高亮、自动补全、Git 集成、终端等 IDE 的基础功能,同时支持实时调试、插件扩展等,可以帮助开发者快速完成各种应用的开发、编译与部署工作。
有同学问:总会听到身边的大佬们谈到架构,感觉很高级,架构到底是一个什么样的东西呢?
序 在简书写了一个月的blog,开始只是简单的将自己之前的笔记进行CCVV模式(command+c/v),渐渐地已经摸索出更多的套路,比如多写些demo,多加些配图,较多的知识点用思维导图做索引,markdown的语法也更加娴熟,每次整理都重新复习了下之前的知识点,也尽量让自己的思路让别人理解,所以觉得写blog还是一个比较好的习惯的,也感谢简书上这么多朋友关注,也是我继续写下去的动力,大家一起努力成为大神! ---- 一、介绍 1.在iOS中,有2个框架可以访问用户的通讯录: AddressBook
解决什么问题 通过解决方案来实现: 1、通过畅通、高速的网络平台,先进的应用系统,打破企业部门之间的信息壁垒,实现整个公司信息和知识的共享; 2、 提高办公效率,加强工作的透明度,加强各部门的工作能力
我们需要根据菜单里面的选项来选择进行我们需要实现的功能,比如我们想添加联系人,我们就输入1就会进行用户假如的操作,我们想退出程序我们输入0就可以退出。可以利用switch选择语句来实现各自的功能。
腾讯乐享,是腾讯推出的一站式企业社区,提供在线课堂、考试、学习地图、直播、文档、问卷调研等多项应用服务。
ABP vNext(后文简称Abp)是 Volo 公司堪称艺术品级的应用开发框架,它基于领域驱动设计(DDD)的思维,创新地采用了模块化的设计。Abp 目前无疑是 ASP.NET Core 开发框架中最先进和最优雅的存在。笔者认为,凭借绝妙的模块化设计和丝滑的开发体验,Abp 有望超越 Spring 家族在历史上的影响力。
我们在前面的文章介绍了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加、删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行通讯录程序的时候,数据又得重新录入,如果使用这样的通讯录就很难受。 我们在想既然是通讯录就应该把信息记录下来,只有我们自己选择删除数据的时候,数据才不复存在。 这就涉及到了数据持久化的问题,我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。 使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
最近,数据结构可上学习了链表线性表,并且用线性表实现了简单的手机通讯录,并用C语言和python语言都实现了,基本理论是一样的,贵在实践。记录一下~
本小节实现一个通讯录管理程序,通过这个案例来融会贯通之前所学习的知识,该程序使用到如下知识点:
#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> using namespace std; int main() { int num = 100; do { //百位上的数字 int num1 = 0; //十位上的数字 int num2 = 0; //个位上的数字 int num3 = 0; num1 = num / 100; int tem = num % 100; switch (tem > 10) { case 1: num2 = tem / 10; num3 = tem % 10; break; default: num2 = 0; num3 = tem; break; } if (pow(num1,3) + pow(num2, 3) + pow(num3, 3) == num) { cout << "num = " << num << endl; } num++; } while (num <= 999); return 0; }
①能够存储100个人的通讯信息 ②能够保存用户信息:名字、性别、年龄、电话、地址等 ③增加、删除、查找、修改联系人 ④显示联系人信息
一.企邮WEBMAIL项目 1.完成手机绑定二次验证,绑定手机提升账户的安全性 2.登陆验证接口改造,增加一系列登陆限制,增强webmail的系统可靠性 3.增加外发限制功能,及时控制用户发信行为,有利于企业管理员管理. 4.增加了代发显示功能,有利于用户更清晰的收信读信. 5.读信缓存改造,极大提升用户读信速度 6.优化新浪存储中转站网盘模块,极大降低了公司的存储成本
领取专属 10元无门槛券
手把手带您无忧上云