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

做推广什么网站好英文视频网站如何做外链

做推广什么网站好,英文视频网站如何做外链,变身小说 wordpress,搜索引擎关键词推广目录 前言 一、基于动态顺序表实现通讯录 二、代码具体实现 2.1 初始化通讯录 2.2 添加通讯录数据 2.3 展示通讯录 2.4 按名字来查找通讯录信息 2.5 删除通讯录的数据 2.6 查找通讯录的数据 2.7 修改通讯录的数据 2.8 销毁通讯录 上传通讯录数据 写入通讯录数据 三、完整代码 总… 目录 前言 一、基于动态顺序表实现通讯录 二、代码具体实现 2.1 初始化通讯录 2.2 添加通讯录数据 2.3 展示通讯录 2.4 按名字来查找通讯录信息 2.5 删除通讯录的数据 2.6 查找通讯录的数据 2.7 修改通讯录的数据 2.8 销毁通讯录 上传通讯录数据 写入通讯录数据 三、完整代码 总结 前言 之前我们讲了数据结构中的顺序表数据结构——顺序表 今天我们基于顺序表来实现通讯录实现添加删除查找修改展示的功能。通过结构体来存储通讯录的数据通过菜单进行交互最后进行上传到文件中保存这就是我们通讯录的功能实现。 一、基于动态顺序表实现通讯录 C语⾔基础要求结构体、动态内存管理、顺序表、文件操作 1、功能要求 1至少能够存储100个人的通讯信息 2能够保存用户信息名字、性别、年龄、电话、地址等 3增加联系⼈信息 4删除指定联系⼈ 5查找制定联系⼈ 6修改指定联系⼈ 7显示联系⼈信息 以上就是通讯录的功能要求现在我们就来实现代码。 二、代码具体实现 实现我们是基于顺序表代码实现的所以我们需要顺序表的头文件 //Seqlist.h#pragma once #define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h #includeassert.h #includestdlib.h #includestring.h #includecontact.htypedef PeoInfo SLDataType;//定义新的数据类型typedef struct Seqlist {SLDataType* arr;int size; //有效数据个数int capacity; //数组容量 } SL;//初始化和销毁 void SLInit(SL* ps); void SLDestroy(SL* ps); void SLPrint(SL* ps);//扩容 void SLCheckCapacity(SL* ps); //头部插入 void SLPushFront(SL* ps, SLDataType x); //尾部插入 void SLPushBack(SL* ps, SLDataType x); //头部删除 void SLPopFront(SL* ps); //尾部删除 void SLPopBack(SL* ps); //插入任意位置 void SLInsert(SL* ps, int pos, SLDataType x); //删除任意位置 void SLErase(SL* ps, int pos); //查找元素 int SLFind(SL* ps, SLDataType x); 跟顺序表一样只不过顺序表内容不是整型内容而是我们定义的结构体内容(联系人信息) //contact.h#define NAME_MAX 100 #define SEX_MAX 4 #define TEL_MAX 12 #define ADDR_MAX 100typedef struct PersonInfo {char name[NAME_MAX];//姓名char sex[SEX_MAX];//性别int age;//年龄char tel[TEL_MAX];//电话char addr[ADDR_MAX];//住址 }PeoInfo;//结构体类型 现在我们就要进行通讯录的功能实现了 主要接口 //contact.h//前置类型声明 struct Seqlist;//调用必须先声明typedef struct Seqlist contact;//给顺序表重命名为contact//初始化通讯录 void InitContact(contact* con); //添加通讯录数据 void AddContact(contact* con); //删除通讯录数据 void DelContact(contact* con); //展⽰通讯录数据 void ShowContact(contact* con); //查找通讯录数据 void FindContact(contact* con); //修改通讯录数据 void ModifyContact(contact* con); //销毁通讯录数据 void DestroyContact(contact* con);//读取本地通讯录 void LoadContact(contact* con);//上传通讯录数据到文件 void SaveContact(contact* con); 2.1 初始化通讯录 //初始化通讯录 void InitContact(contact* con) {SLInit(con); } 调用顺序表的初始化函数SLInit函数即可完成对通讯录的初始化。 2.2 添加通讯录数据 void AddContact(contact* con) {PeoInfo info; //定义一个结构体类型为 通讯录数据printf(请输入姓名:\n);scanf(%s, info.name);printf(请输入性别:\n);scanf(%s, info.sex);printf(请输年龄:\n);scanf(%d, info.age);printf(请输入电话:\n);scanf(%s, info.tel);printf(请输入住址:\n);scanf(%s, info.addr);printf(添加成功\n);SLPushBack(con, info);//调用顺序表尾插 } 我们要添加联系人就要添加一个我们定义的PeoInfo结构体(联系人信息)的结构体变量然后往里面添加姓名性别年龄电话住址信息最后插入通讯录。 2.3 展示通讯录 我们添加后查看通讯录里面的有哪些联系人信息。 void ShowContact(contact* con) {printf(%-10s %-4s %-4s %15s %-20s\n, 姓名, 性别, 年龄, 电话, 住址);for (int i 0; i con-size; i) {//打印个数小于有效数据个数printf(%-10s %-4s %-4d %15s %-20s\n,con-arr[i].name, con-arr[i].sex,con-arr[i].age,con-arr[i].tel,con-arr[i].addr);} } 2.4 按名字来查找通讯录信息 我们进行删除修改查找操作之前我们要找到操作的对象我们以名字来查找。 int FindByName(contact* con, char name[]) {for (int i 0; i con-size; i) {if (strcmp(con-arr[i].name, name) 0) {return i;//找到返回下标}}return -1;//没找到返回-1 } 2.5 删除通讯录的数据 void DelContact(contact* con) {char name[NAME_MAX];//定义数组为删除人的名字printf(请输入删除人的姓名:\n);scanf(%s, name);int pos FindByName(con, name);//进行查找if (pos 0) {printf(没有找到删除的人名删除失败\n);}else {SLErase(con, pos);printf(删除成功!\n);}} 我们调用顺序表删除任意位置的元素SLErase函数进行删除通讯录里面的数据。 2.6 查找通讯录的数据 //查找通讯录的数据 void FindContact(contact* con) {char name[NAME_MAX];//定义数组为查找人的姓名printf(请输入查找人的姓名:\n);scanf(%s, name);int pos FindByName(con, name);//查找是否存在if (pos 0) {printf(没有找到查找失败\n);}else {printf(找到了:\n);//找到了打印信息printf(%-10s %-4s %-4d %15s %-20s\n,con-arr[pos].name,con-arr[pos].sex,con-arr[pos].age,con-arr[pos].tel,con-arr[pos].addr);} } 2.7 修改通讯录的数据 void ModifyContact(contact* con) {char name[NAME_MAX];//定义数组为修改人的姓名printf(请输入姓名:\n);scanf(%s, name);int pos FindByName(con, name);//查找if (pos 0) {printf(没有找到,修改失败\n);}else {printf(请输入修改人的姓名:\n);scanf(%s, con-arr[pos].name);printf(请输入修改人的性别:\n);scanf(%s, con-arr[pos].sex);printf(请输修改人的年龄:\n);scanf(%d, con-arr[pos].age);printf(请输入修改人的电话:\n);scanf(%s, con-arr[pos].tel);printf(请输入修改人的住址:\n);scanf(%s, con-arr[pos].addr);printf(修改成功\n);} } 2.8 销毁通讯录 //销毁通讯录数据 void DestroyContact(contact* con) {SLDestroy(con); } 我们调用顺序表的销毁函数SLDestroy进行销毁通讯录的数据 但是我们要保留通讯录的数据那么我们就可以在销毁前写入文件中 上传通讯录数据 void SaveContact(contact* con) {FILE* pf fopen(contact.txt, wb);//文件指针if (pf NULL) {perror(fopen error!\n);return;}//将通讯录数据写⼊⽂件for (int i 0; i con-size; i){fwrite(con-arr i, sizeof(PeoInfo), 1, pf);//通过fwrite写入文件}printf(通讯录数据保存成功\n); } 在下次使用时初始化中 写入通讯录数据 void LoadContact(contact* con) {FILE* pf fopen(contact.txt, rb);if (pf NULL) {perror(fopen error!\n);return;}//循环读取⽂件数据PeoInfo info;//定义info为通讯录数据while (fread(info, sizeof(PeoInfo), 1, pf))//读info类型数据不为空{SLPushBack(con, info);//尾插info数据}printf(历史数据导入通讯录成功\n); } 三、完整代码 通讯录功能头文件 //contact.h #pragma once#define NAME_MAX 100 #define SEX_MAX 4 #define TEL_MAX 12 #define ADDR_MAX 100typedef struct PersonInfo {char name[NAME_MAX];char sex[SEX_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX]; }PeoInfo;//前置类型 struct Seqlist;typedef struct Seqlist contact;//初始化通讯录 void InitContact(contact* con); //添加通讯录数据 void AddContact(contact* con); //删除通讯录数据 void DelContact(contact* con); //展⽰通讯录数据 void ShowContact(contact* con); //查找通讯录数据 void FindContact(contact* con); //修改通讯录数据 void ModifyContact(contact* con); //销毁通讯录数据 void DestroyContact(contact* con);//读取本地通讯录 void LoadContact(contact* con);//上传通讯录数据到文件 void SaveContact(contact* con); 通讯录功能具体实现 //contact.c #includeSeqlist.h #includecontact.h//初始化通讯录 void InitContact(contact* con) {SLInit(con);LoadContact(con); } //添加通讯录数据 void AddContact(contact* con) {PeoInfo info;printf(请输入姓名:\n);scanf(%s, info.name);printf(请输入性别:\n);scanf(%s, info.sex);printf(请输年龄:\n);scanf(%d, info.age);printf(请输入电话:\n);scanf(%s, info.tel);printf(请输入住址:\n);scanf(%s, info.addr);printf(添加成功\n);SLPushBack(con, info); } //展⽰通讯录 void ShowContact(contact* con) {printf(%-10s %-4s %-4s %15s %-20s\n, 姓名, 性别, 年龄, 电话, 住址);for (int i 0; i con-size; i) {printf(%-10s %-4s %-4d %15s %-20s\n,con-arr[i].name, con-arr[i].sex,con-arr[i].age,con-arr[i].tel,con-arr[i].addr);} } //按名字来查找 int FindByName(contact* con, char name[]) {for (int i 0; i con-size; i) {if (strcmp(con-arr[i].name, name) 0) {return i;}}return -1; } //删除通讯录的数据 void DelContact(contact* con) {char name[NAME_MAX];printf(请输入删除人的姓名:\n);scanf(%s, name);int pos FindByName(con, name);if (pos 0) {printf(没有找到删除的人名删除失败\n);}else {SLErase(con, pos);printf(删除成功!\n);}} //查找通讯录的数据 void FindContact(contact* con) {char name[NAME_MAX];printf(请输入查找人的姓名:\n);scanf(%s, name);int pos FindByName(con, name);if (pos 0) {printf(没有找到查找失败\n);}else {printf(找到了:\n);printf(%-10s %-4s %-4d %15s %-20s\n,con-arr[pos].name,con-arr[pos].sex,con-arr[pos].age,con-arr[pos].tel,con-arr[pos].addr);} } //修改通讯录数据 void ModifyContact(contact* con) {char name[NAME_MAX];printf(请输入姓名:\n);scanf(%s, name);int pos FindByName(con, name);if (pos 0) {printf(没有找到,修改失败\n);}else {printf(请输入修改人的姓名:\n);scanf(%s, con-arr[pos].name);printf(请输入修改人的性别:\n);scanf(%s, con-arr[pos].sex);printf(请输修改人的年龄:\n);scanf(%d, con-arr[pos].age);printf(请输入修改人的电话:\n);scanf(%s, con-arr[pos].tel);printf(请输入修改人的住址:\n);scanf(%s, con-arr[pos].addr);printf(修改成功\n);} }//销毁通讯录数据 void DestroyContact(contact* con) {SaveContact(con);SLDestroy(con); }//读取本地通讯录 void LoadContact(contact* con) {FILE* pf fopen(contact.txt, rb);if (pf NULL) {perror(fopen error!\n);return;}//循环读取⽂件数据PeoInfo info;while (fread(info, sizeof(PeoInfo), 1, pf)){SLPushBack(con, info);}printf(历史数据导入通讯录成功\n); }//上传通讯录数据到文件 void SaveContact(contact* con) {FILE* pf fopen(contact.txt, wb);if (pf NULL) {perror(fopen error!\n);return;}//将通讯录数据写⼊⽂件for (int i 0; i con-size; i){fwrite(con-arr i, sizeof(PeoInfo), 1, pf);}printf(通讯录数据保存成功\n); } 通讯录主函数 contactest.ccontactest.c #define _CRT_SECURE_NO_WARNINGS 1 #includecontact.h #includeSeqlist.hvoid num() {printf(*************************************\n);printf(**** 1. 添加联系人 2. 删除联系人****\n);printf(**** 3. 查找联系人 4. 修改联系人****\n);printf(**** 5. 展示通讯录 0. 退出 ****\n);printf(*************************************\n); }int main() {int inputt 0;contact con;InitContact(con);do {num();printf(请输入操作:\n);scanf(%d, inputt);switch (inputt){case 1:AddContact(con);break;case 2:DelContact(con);break;case 3: FindContact(con);break;case 4:ModifyContact(con);break;case 5:ShowContact(con);break;case 0:printf(通讯录退出中--\n);break;}} while (inputt);DestroyContact(con);return 0; } 还要顺序表的代码这里就不在赘述。 总结 上述文章讲了基于顺序表为主要框架来实现通讯录的功能希望对你有所帮助。
http://www.zqtcl.cn/news/717057/

相关文章:

  • 环影视界免费版wordpress主题优化网站图片
  • 网站开发交付验收文档山西做网站流程步骤
  • 郴州网站seo外包摄影设计素材
  • 平面设计大赛网站给金融的做网站 犯法吗
  • 网站制作需求分析网站建设与 宣传关系
  • 企业网站的推广阶段和特点焦作建设银行门户网站
  • 连云港公司企业网站建设线上平台推广方案
  • 网站维护的协议山东省住房和建设网站
  • 个人网站可以做淘宝客网站建设的公司排名
  • 企业手机网站设计案例做网赌网站怎么推广
  • 2018外贸网站排名购物网站网页设计
  • 赣州培训学做网站软装设计理念
  • 银川建设网站公司wordpress 小工具添加图片
  • 做任务领黄钻的网站怎样建免费个人网站
  • 网站怎么做留言提交功能网站制作公司司
  • 大连购物网站开发wordpress怎么用ftp上传插件
  • 做微商怎样加入网站卖东西赚钱做代理的项目在哪个网站
  • 企业电子商务网站平台建设奉贤做网站公司
  • 非凡网站建设 新三板代运营套餐价格表
  • 湖南建立网站营销设计网站建设的创新之处
  • 手机站是什么意思免费建论坛
  • 网站开发学习路线专用车网站建设哪家好
  • 贵阳网站建设端觉wordpress gif 点击播放
  • 苏州产品推广公司厦门关键词seo
  • 建设内网网站流程凡客诚品现在还有吗
  • 西安网站公司免费云手机无限时间版
  • 网站建设与管理案例教程ipad可以做网站吗
  • 济南网站建设模板python网站开发用什么软件
  • 北京品牌网站建设阿里巴巴logo图片
  • 做宣传册从哪个网站找素材中文在线っと好きだっ