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

重新建设网站的申请报告哈尔滨建站系统点击查看

重新建设网站的申请报告,哈尔滨建站系统点击查看,网络营销策略理论有哪些,如何搜索网页关键词文章目录 5. 通讯录的实现 5. 通讯录的实现 实现一个通讯录#xff1a; 通讯录中保存人的信息#xff1a; 名字年龄性别电话住址 通讯录中可以存放100个人的信息增加联系人删除指定联系人修改指定联系人查找指定联系人显示所有联系人的信息排序功能 首先#xff0c;我们需要… 文章目录 5. 通讯录的实现 5. 通讯录的实现 实现一个通讯录 通讯录中保存人的信息 名字年龄性别电话住址 通讯录中可以存放100个人的信息增加联系人删除指定联系人修改指定联系人查找指定联系人显示所有联系人的信息排序功能 首先我们需要三个文件 test.c - 测试通讯录contact.h - 函数和类型的声明contact.c - 函数的实现 设计保存人的信息的这个结构体 //contact.h//类型的声明typedef struct PeoInfo {char name[20];int age;char sex[5];char tele[12];char addr[30]; }PeoInfo;接着我们实现一下大体逻辑 //test.cvoid menu() {printf(********************************\n);printf(***** 1. add 2. del *****\n);printf(***** 3. search 4. modify *****\n);printf(***** 5. show 6. sort *****\n);printf(***** 0. exit *****\n);printf(********************************\n); }void test() {int input 0;do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:break;case 0:break;default:break;}} while (input); }int main() {test();return 0; }我们要实现通讯录的各项功能首先要有通讯录一个 PeoInfo 类型的数组但是我们再思考一下如果我们要添加联系人那么我们是不是需要一个变量来统计通讯录中一共有多少个人所以还需要一个整型变量。 //contact.h//通讯录typedef struct Contact {PeoInfo data[100];int sz; }Contact;//test.c#include contact.hvoid test() {//首先得有通讯录Contact con; }对通讯录进行初始化 //contact.h#include string.h #include assert.h//函数声明//初始化通讯录 void InitContact(Contact* pc);//contact.c#include contact.hvoid InitContact(Contact* pc) { assert(pc);memset(pc-data, 0, sizeof(pc-data));pc-sz 0; }//test.cvoid test() {InitContact(con); }注 传参时传的是地址有以下两点原因 要改变实参的值就要传地址过去根据之前对结构体的学习结构体一般传地址因为传整个结构体要开辟的内存空间太大了 增加联系人 //contact.h//增加联系人 void AddContact(Contact* pc);//contact.cvoid AddContact(Contact* pc) { if (100 pc-sz){printf(通讯录已满无法添加\n);return;} }我们发现前面创建data数组时用到了100这里也用到了100之后如果要修改值两处都要改那么我们应该如何简化它呢 //contact.h#define MAX 100 #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDR 30enum OPTION {EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT };//类型的声明typedef struct PeoInfo {char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR]; }PeoInfo;//通讯录typedef struct Contact {PeoInfo data[MAX];int sz; }Contact;//contact.cvoid AddContact(Contact* pc) { assert(pc);if (MAX pc-sz){printf(通讯录已满无法添加\n);return;}printf(请输入名字:);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄:);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别:);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话:);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址:);scanf(%s, pc-data[pc-sz].addr);pc-sz;printf(成功增加联系人\n); }//test.cvoid test() {int input 0;//首先得有通讯录Contact con;InitContact(con);do{menu();printf(请选择:);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:break;case SEARCH:break;case MODIFY:break;case SHOW:break;case SORT:break;case EXIT:break;default:break;}} while (input); }显示联系人 //contact.h//显示所有联系人的信息 void ShowContact(const Contact* pc);//contact.cvoid ShowContact(const Contact* pc) {assert(pc);int i 0;//打印列标题printf(%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);//打印数据for (i 0; i pc-sz; i){printf(%-20s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}}删除指定联系人 //contact.h//删除指定联系人 void DelContact(Contact* pc);//contact.cvoid DelContact(Contact* pc) {assert(pc);if (0 pc-sz){printf(通讯录为空无法删除\n);return;}char name[MAX_NAME] { 0 };//删除printf(请输入要删除的人的名字:);scanf(%s, name);//找到要删除的人int i 0;int del 0;int flag 0;for (i 0; i pc-sz; i){if (0 strcmp(pc-data[i].name, name)){del i;flag 1;break;}}if (0 flag){printf(要删除的人不存在\n);return;}//删除坐标为del的联系人for (i del; i pc-sz - 1; i){pc-data[i] pc-data[i 1];}pc-sz--;printf(成功删除联系人\n); }但是这个代码有一些缺陷我们可以发现我们要实现的查找联系人和修改联系人这两个功能同样也需要先进行查找因此我们可以对查找联系人的这一代码块进行分装让它单独作为一个函数。 //contact.cstatic int FindByName(const Contact* pc, char name[]) {int i 0;for (i 0; i pc-sz; i){if (0 strcmp(pc-data[i].name, name)){return i;//找到了}}return -1;//找不到 }void DelContact(Contact* pc) {assert(pc);if (0 pc-sz){printf(通讯录为空无法删除\n);return;}char name[MAX_NAME] { 0 };//删除printf(请输入要删除的人的名字:);scanf(%s, name);//找到要删除的人int del FindByName(pc, name);if (-1 del){printf(要删除的人不存在\n);return;}int i 0;//删除坐标为del的联系人for (i del; i pc-sz - 1; i){pc-data[i] pc-data[i 1];}pc-sz--;printf(成功删除联系人\n); }查找指定联系人 //contact.h//查找指定联系人 void SearchContact(const Contact* pc);//contact.cvoid SearchContact(const Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入要查找人的名字:);scanf(%s, name);int pos FindByName(pc, name);if (-1 pos){printf(要查找的人不存在\n);}else{//打印列标题printf(%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);//打印数据printf(%-20s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[pos].name,pc-data[pos].age,pc-data[pos].sex,pc-data[pos].tele,pc-data[pos].addr);} }修改指定联系人 //contact.h//修改指定联系人 void ModifyContact(Contact* pc);//contact.cvoid ModifyContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入要修改人的名字:);scanf(%s, name);int pos FindByName(pc, name);if (-1 pos){printf(要修改的人不存在\n);}else{printf(请输入名字:);scanf(%s, pc-data[pos].name);printf(请输入年龄:);scanf(%d, (pc-data[pos].age));printf(请输入性别:);scanf(%s, pc-data[pos].sex);printf(请输入电话:);scanf(%s, pc-data[pos].tele);printf(请输入地址:);scanf(%s, pc-data[pos].addr);printf(修改成功\n);} }排序功能 我们可以按照名字排序也可以按照年龄排序。 //contact.henum SELECT {NAME 1,AGE };//排序功能 void SortContact(Contact* pc);//contact.cvoid select() {printf(********************************\n);printf(***** 1. name 2. age *****\n);printf(********************************\n); }int cmp_by_name(const void* p1, const void* p2) {return strcmp(((PeoInfo*)p1)-name, ((PeoInfo*)p2)-name); }int cmp_by_age(const void* p1, const void* p2) {return ((PeoInfo*)p1)-age - ((PeoInfo*)p2)-age; }void SortContact(Contact* pc) {assert(pc);if (0 pc-sz){printf(通讯录为空无法排序\n);return;}int input 0;do{select();printf(请选择按何种方式进行排序:);scanf(%d, input);switch (input){case NAME:qsort(pc-data, pc-sz, sizeof(pc-data[0]), cmp_by_name);printf(排序成功\n);break;case AGE:qsort(pc-data, pc-sz, sizeof(pc-data[0]), cmp_by_age);printf(排序成功\n);break;default:printf(选择错误重新选择\n);break;}} while (input ! 1 input ! 2); }完整代码 //contact.h#include string.h #include assert.h #include stdio.h #include stdlib.h#define MAX 100 #define MAX_NAME 20 #define MAX_SEX 5 #define MAX_TELE 12 #define MAX_ADDR 30enum OPTION {EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT };enum SELECT {NAME 1,AGE };//类型的声明typedef struct PeoInfo {char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR]; }PeoInfo;//通讯录typedef struct Contact {PeoInfo data[MAX];int sz; }Contact;//函数声明//初始化通讯录 void InitContact(Contact* pc);//增加联系人 void AddContact(Contact* pc);//显示所有联系人的信息 void ShowContact(const Contact* pc);//删除指定联系人 void DelContact(Contact* pc);//查找指定联系人 void SearchContact(const Contact* pc);//修改指定联系人 void ModifyContact(Contact* pc);//排序功能 void SortContact(Contact* pc);//contact.c#include contact.hvoid InitContact(Contact* pc) {assert(pc);memset(pc-data, 0, sizeof(pc-data));pc-sz 0; }void AddContact(Contact* pc) {assert(pc);if (MAX pc-sz){printf(通讯录已满无法添加\n);return;}printf(请输入名字:);scanf(%s, pc-data[pc-sz].name);printf(请输入年龄:);scanf(%d, (pc-data[pc-sz].age));printf(请输入性别:);scanf(%s, pc-data[pc-sz].sex);printf(请输入电话:);scanf(%s, pc-data[pc-sz].tele);printf(请输入地址:);scanf(%s, pc-data[pc-sz].addr);pc-sz;printf(成功增加联系人\n); }void ShowContact(const Contact* pc) {assert(pc);int i 0;//打印列标题printf(%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);//打印数据for (i 0; i pc-sz; i){printf(%-20s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[i].name,pc-data[i].age,pc-data[i].sex,pc-data[i].tele,pc-data[i].addr);}}static int FindByName(const Contact* pc, char name[]) {int i 0;for (i 0; i pc-sz; i){if (0 strcmp(pc-data[i].name, name)){return i;//找到了}}return -1;//找不到 }void DelContact(Contact* pc) {assert(pc);if (0 pc-sz){printf(通讯录为空无法删除\n);return;}char name[MAX_NAME] { 0 };//删除printf(请输入要删除的人的名字:);scanf(%s, name);//找到要删除的人int del FindByName(pc, name);if (-1 del){printf(要删除的人不存在\n);return;}int i 0;//删除坐标为del的联系人for (i del; i pc-sz - 1; i){pc-data[i] pc-data[i 1];}pc-sz--;printf(成功删除联系人\n); }void SearchContact(const Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入要查找人的名字:);scanf(%s, name);int pos FindByName(pc, name);if (-1 pos){printf(要查找的人不存在\n);}else{//打印列标题printf(%-20s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);//打印数据printf(%-20s\t%-4d\t%-5s\t%-12s\t%-30s\n,pc-data[pos].name,pc-data[pos].age,pc-data[pos].sex,pc-data[pos].tele,pc-data[pos].addr);} }void ModifyContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入要修改人的名字:);scanf(%s, name);int pos FindByName(pc, name);if (-1 pos){printf(要修改的人不存在\n);}else{printf(请输入名字:);scanf(%s, pc-data[pos].name);printf(请输入年龄:);scanf(%d, (pc-data[pos].age));printf(请输入性别:);scanf(%s, pc-data[pos].sex);printf(请输入电话:);scanf(%s, pc-data[pos].tele);printf(请输入地址:);scanf(%s, pc-data[pos].addr);printf(修改成功\n);} }void select() {printf(********************************\n);printf(***** 1. name 2. age *****\n);printf(********************************\n); }int cmp_by_name(const void* p1, const void* p2) {return strcmp(((PeoInfo*)p1)-name, ((PeoInfo*)p2)-name); }int cmp_by_age(const void* p1, const void* p2) {return ((PeoInfo*)p1)-age - ((PeoInfo*)p2)-age; }void SortContact(Contact* pc) {assert(pc);if (0 pc-sz){printf(通讯录为空无法排序\n);return;}int input 0;do{select();printf(请选择按何种方式进行排序:);scanf(%d, input);switch (input){case NAME:qsort(pc-data, pc-sz, sizeof(pc-data[0]), cmp_by_name);printf(排序成功\n);break;case AGE:qsort(pc-data, pc-sz, sizeof(pc-data[0]), cmp_by_age);printf(排序成功\n);break;default:printf(选择错误重新选择\n);break;}} while (input ! 1 input ! 2); }//test.c#include contact.hvoid menu() {printf(********************************\n);printf(***** 1. add 2. del *****\n);printf(***** 3. search 4. modify *****\n);printf(***** 5. show 6. sort *****\n);printf(***** 0. exit *****\n);printf(********************************\n); }void test() {int input 0;//首先得有通讯录Contact con;InitContact(con);do{menu();printf(请选择:);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:DelContact(con);break;case SEARCH:SearchContact(con);break;case MODIFY:ModifyContact(con);break;case SHOW:ShowContact(con);break;case SORT://排序//按照名字排序//按照年龄排序SortContact(con);break;case EXIT:printf(退出通讯录\n);break;default:printf(选择错误重新选择\n);break;}} while (input); }int main() {test();return 0; }
http://www.zqtcl.cn/news/667130/

相关文章:

  • 成都大型网站设计公司电脑上重新下载一个wordpress
  • 番禺网站建设知乎自己做网站卖矿山设备
  • 手表网站起名登录页面html模板
  • 泰国如何做网站推广大英网站建设工作
  • 山东省职业能力建设处网站dz论坛怎么做视频网站吗
  • 郑州专业做网站的公司今天郑州最新通告
  • wap网站引导页特效wordpress 文章 数据库
  • 做建筑效果图最好的网站做网站是如果盈利的
  • 企业网站seo托管怎么做seo公司培训
  • 自己做网站不想买空间 自己电脑可以做服务器吗?下载建设网站软件
  • 有服务器自己怎么做网站百度广告电话号码是多少
  • 一个网站 两个数据库沈阳市住房和城乡建设厅网站
  • 重庆建站网站流程及费用制作网页界面工具
  • 设计师家园官网wordpress 4.9 优化
  • 主机屋空间安装织梦后台程序后怎么弄成淘宝客网站襄阳网站制作
  • 怎么建设分销模式手机网站宜昌做网站的公司
  • 网上商城网站设计网页设计作业欣赏
  • 育才网站建设网站访问慢原因
  • 网站建设方案 备案品牌网站推广软件
  • 桓台县建设局网站前端开发入门培训
  • 前端怎么在猪八戒网站接单做烟台网站开发技术
  • 济南烨铭网站建设做英文网站2014
  • 哪个餐饮店微网站做的有特色3d动画制作收费标准
  • h5旅游网站开发wordpress的站点地址如何配置
  • 网站正在维护中 模板招远网站建设
  • 福田欧曼银河报价seo文章是什么
  • 古云网站建设模具培训网站建设
  • 帮助企业做网站的销售卫浴洁具公司网站模板
  • 解释seo网站推广网站域名和空间费用
  • 深圳市珠宝网站建设手机网站框架