首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通讯录实现(

前言: 上篇我们通过结构体构建来创造通讯录联系人内容以及封装100个联系人,并实现了通讯录增删查改等基本功能,这篇我们要进行改造内容就是将固定100个联系人容量改为不定长,有几个联系人就进行扩容...1.进阶通讯录特点: ①基本增删查改功能; ②通讯录空间是不固定,大小是可以调整 ③默认能放3个人信息,如果不够就每次增加2个人信息 2.实现步骤: (1)定义一个结构体来存储联系人基本信息例如...int sz;//用来记录存放联系人个数 int capacity;//记录通讯录当前最大容量 }Contact; (3)初始化通讯录; void InitContact(Contact* pc...(5)基本功能函数 可以通过http://t.csdnimg.cn/gIo96百行代码实现简单通讯录来查看哦;这里将增加联系人函数与删除联系人函数单独拿出来,因为有改进地方 ①增加联系人函数 int...;//记录通讯录当前最大容量 }Contact; //函数声明 void InitContact(Contact* pc);//初始化 void AddContact(Contact* pc);//

9410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    通讯录实现

    思路 思路:通讯录: 1、人信息:姓名+年龄+性别+地址+电话 2、通讯录可以存放100个人信息 3:功能: 1》增加联系人 2》删除指定联系人 3》查找指定联系人信息 4》修改指定联系人信息...("***********************************");//6排序 printf("***********************************"); } 5、创建通讯录...Contact con; 6、初始化通讯录 //初始化通讯录 InitContact(&con); 初始化函数 ​ void InitContact(Contact* pc)//初始化 { pc...} 7、用do-while循环 main函数中代码 int main() { //创建通讯录 Contact con;//也可直接在这里等于0,就是不够灵活 //初始化通讯录 InitContact...break; case 6: SortContact(&con);//排序(用年龄,名字都行) break; case 0: printf("退出通讯录\n");

    8210

    通讯录项目 (3 3)】基于顺序表通讯录实现——通讯录项目实现

    通讯录项目 (3 / 3)】基于顺序表通讯录实现——通讯录项目实现 前言 前两章我们已经知道顺序表功能并完成了功能实现,下面我们将实现通讯录以下功能: 1 项目预备工作 1.1 多文件处理...代码“前置声明”是为了避免后续引用出现问题。我们通过“typedef”进行重命名,方便后续书写代码。 2 功能实现 上面将我们准备工作进行完毕,下面开始实现功能。我们基于顺序表在进行操作。...2.1 初始化通讯录 “初始化”只需要简单引用顺序表初始化即可。...2.4 展示通讯录 展示通讯录功能是对顺序表展示扩展。...下面我们开始完善界面内容,来把通讯录功能进行整合。

    14010

    Java企业微信开发_02_通讯录同步

    一、本节要点 1.获取通讯录密钥 获取方式:        登录企业微信—>管理工具—>通讯录同步助手—>开启“API接口同步”  ; 开启后,即可看到通讯录密钥,也可设置通讯录API权限:读取或者编辑通讯录...获取通讯录密钥目的:         通过企业ID(CorpId)和 通讯录密钥可以获取通讯录相关接口使用凭证(AccessToken)。有了AccessToken,就可以使用通讯录相关接口了。...2.2对象序列化目的   1) 把对象字节序列永久地保存到硬盘上,通常存放在一个文件;   2) 在网络上传送对象字节序列。...以下代码为文本消息json字符串,将text属性类型设为Text,Text类包含content属性。...2.1 工具类之微信参数封装类——WeiXinParamesUtil.java 此类封装了微信相关参数,如企业id、应用凭证、通讯录凭证等。封装起来更易维护,实现一处修改多处改变。

    6.9K20

    通讯录进阶,支持动态内存与数据存储通讯录

    如果你没有看过通讯录初级,请先移步到那。 在前面我们写了一个静态通讯录通讯录大小都是固定,同时每次启动通讯录都需要重新输入数据。这用起来肯定是不人性化。...进阶通讯录与原版不同点就在于,通讯录大小是会随着数据添加而增大,也就是动态内存管理,以及会对通讯录数据进行存储,一旦通讯录被关闭数据就会自动存放在相应文件。...同时在下一次打开通讯录时,会自动将文件数据导入通讯录。...3.通讯录销毁 因为通讯录空间是动态内存开辟,所以再最后是需要还给存储系统,我们需要释放空间。 至于什么时候释放,当用户退出程序时释放空间。...利用fread将文件二进制数据导入通讯录,我们先创立一个临时变量来存放数据,然后在把这个数据转移给通讯录

    11410

    顺序表应用——通讯录创建

    下面先来讲添加联系人函数逻辑实现,这个是基于顺序表插入函数(头插,尾插,指定位置插)来进行描写,不过比那个要复杂很多,此时我们需要创建一个通讯录变量,来对这个变量内容通过scanf语句来进行输入...此时为了让之后文章语句以及代码变得更容易可读,小编将原顺序表设置好内容更名为通讯录了(这里也运用到typedef关键字,可以看出它应用广泛),所以通讯录是存放着结构体类型数组,有效个数,总空间个数...之后我们要进行删除联系人操作,此时我们在进行操作之前,要先确保通讯录是不为空,也就是通讯录是有元素存在,此时我们需要用到assert断言(此断言小编在之前文章提到过),来判断结构体数组是否为空...,所以我们要使用前置声明(因为此时顺序表头文件并没有包含在通讯录头文件,大家千万不要文件进行嵌套(就是两个头文件相互包含对方,这样是万万不可,代码会出错)),下面直接上初始化代码: void...,小编之前已经写了不少菜单页了,之后我们就要开始选择这些内容了,此时我们可以先输入一个数,然后用小编之前写过分支语句文章,我们老朋友switch语句,这个语句是来判断我们输入,此时为了我们能一直保持在通讯录页面

    5510

    通讯录项目 (1 3)】基于顺序表通讯录实现——顺序表介绍

    基于顺序表通讯录实现——顺序表介绍 文章目录 基于顺序表通讯录实现——顺序表介绍 1.1 数据结构 1.1.1什么是数据? 1.1.2什么是结构? 概念 :数据结构是计算机存储、组织数据⽅式。...当我们想要使⽤⼤量使⽤同⼀类型数据时,通过⼿动定义⼤量独⽴变量对于程序来说,可读性⾮常差,我们可以借助数组这样数据结构将⼤量数据组织在⼀起,结构也可以理解为组织数据⽅式。...同理,程序如果不对数据进⾏管理,可能会导致数据丢失、操作数据困难、野指针等情况。通过数据结构,能够有效将数据组织和管理在⼀起。按照我们⽅式任意对数据进⾏增删改查等操作。...假定数组有10个空间,已经使⽤了5个,向数组插⼊数据步骤: 求数组⻓度,求数组有效数据个数,向下标为数据有效个数位置插⼊数据(注意:这⾥是否要判断数组是否满了,满了还能继续插⼊吗)?...线性表是⼀种在实际⼴泛使⽤数据结构,常⻅线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续⼀条直线。

    17310

    C语言通讯录功能实现

    C语言通讯录功能实现 一、项目需求: 我们需要一个通讯录,可以用来存储1000个人信息,每个人信息包括:姓名、性别、年龄、电话、住址。...并且在通讯录要求实现下述功能: 添加联系人信息 删除指定联系人信息 查找指定联系人信息 修改指定联系人信息 显示所有联系人信息 以名字排序所有联系人 二、模块化代码 在代码编辑,为了避免代码过于冗长...一个人通讯录信息结构体已经已经建立好了。现在我们需要一个结构体数组,来存放1000个人信息,同时出于功能需求,我们还要知道通讯录已经存储了多少个人信息,所以我们再建立一个通讯录本结构体。...enum { Exit, Add, Del, Search, Modify, Show, Sort, }; 写在contact.h头文件 那么循环可以更改为上述名字。...,所以不需要在头文件声明也是可以

    11210

    通讯录项目 (2 3)】基于顺序表通讯录实现——顺序表功能实现

    基于顺序表通讯录实现——顺序表功能实现 顺序表功能实现 基于顺序表通讯录实现——顺序表功能实现 1 初始化与销毁 1.1 初始化 1.2 销毁 2 头部插入与删除 2.1 头部插入 2.1.1检查容量...经过上一篇文章我们对顺序表有了一个初步认识,下面我们将通过C语言实现顺序表功能,包括: 增加数据 删除数据 查找数据 修改数据 可以把顺序表看作一种特殊数组,我们下面将要进行操作是基于...i++) { ps->a[i] = ps->a[i + 1]; // a[size-2]=a[size-1] (模拟最后一次操作) } ps->size--; } 头部删除非常简单,将顺序表数据从第二个依次向前覆盖即可...6 结束语 顺序表功能我们已经实现,我们使用是最简单顺序表,所以整个过程看起来没有困难。在下一篇文章我们将进行通讯录实现。...在通讯录里,顺序表类型不在是简单" int ",而是结构体类型。 下面给出通讯录基本功能供大家参考预习。

    13510

    【C】—文件版本通讯录实现

    目录 思路 代码实现 完整代码(可自取) 思路 在前面的文章,已经讲解了动态版本通讯录实现,但是动态通讯录存在一个致命缺陷,就是它不能自动保存数据,而前面一篇文章中学到了数据持久化方法之一:即把数据存放在磁盘文件上...假如我们在退出时候,通过文件操作,把我们所写数据存在磁盘文件里,然后我们再进行下一次使用时候,在初始化阶段就从磁盘读取这些数据,这不就实现了。...从文件读取信息(初始化阶段完成) //读通讯录文件信息 //size_t fread(void* ptr, size_t size, size_t count, FILE* stream) void...) { //失败则打印错误报告 perror("Storage_Contact::fopen"); return; } int i = 0; //将sz个数据都写入到文件 for...struct contact con; //初始化通讯录(读之前通讯录信息) Init_contact(&con); do { menu(); printf("请选择:->");

    56740

    笔记22 | 学习整理开源APP(BaseAnimation)程序源码“通讯录效果(三)

    1.前言 整理学习”Android动画效果集合开源APP(BaseAnimation)程序源码“通讯录效果。...>笔记20 | 学习整理开源APP(BaseAnimation)程序源码“通讯录效果(一) ---- 3.2 通讯录界面ListView数据填充 加载联系人方法容易理解,排序》加载》处理 >笔记...21 | 学习整理开源APP(BaseAnimation)程序源码“通讯录效果(二) ---- 3.3 联系人搜索 搜索部分难点是拿出搜索内容,首先自定义了ClearEditText,给出了一个...textchange监听,然后进行匹配>筛选>排序>加载到联系人列表。...public void afterTextChanged(Editable s) { } }); /** * 根据输入框值来过滤数据并更新

    67340

    javascanner意思_JavaScanner

    对于Scanner进一步理解还是在LeetCode一道算法题上,题目大意是输入一组分式加法构成字符串,要求输出分式相加结果。首先是输入”-2/3+2/3-4/5″,接着求其和。...首先第一步需要解析字符串为所需数据,我使用了split()方式,有位大哥就使用了`scanner.useDelimiter(pattern)`方法,直接将数据解析到了Scaner对象。...# Scanner工作方式 Scanner分隔符模式将输入分割到令牌(token,就是临时存储区域),默认情况下以**空格**分割。然后可以使用各种next方法将得到令牌转换成不同类型值。...`pattern模式`,并返回一个新Scanner对象。...**总结:使用Scanner+正则组合可以简化很多字符串处理,而无需使用大量代码分割字符串和数值转换。

    2.4K40

    javafinalized用法_java引用类型

    一个例子 Object类是所有类父类,如果你去查看java.lang.Object类源码,你会发现里面有个finalize方法,这个方法没有默认实现,需要子类根据实际情况重写这个方法,但是如果不恰当使用...类里也有一个引用队列,这个引用队列是JVM和垃圾回收器打交道唯一途径,当垃圾回收器需要回收该对象时,会把该对象放到引用队列,这样java.lang.ref.Finalizer类就可以从队列取出该对象...$100(Finalizer.java:14) at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160) 这个线程唯一职责就是不断从...java.lang.ref.Finalizer.ReferenceQueue队列取对象,当一个对象进入到队列,finalizer线程就执行对象finalize方法并且把对象从队列删除,因此在下一次...histo:live 8700|head -n 10命令强制触发一次GC,结果和前面的分析一致,Finalizer对象都放到引用队列,并依次调用了对象finalize方法,内存java.lang.ref.Finalizer

    2K10
    领券