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

大型 网站的建设 阶段新媒体seo培训

大型 网站的建设 阶段,新媒体seo培训,微网站 百度地图,成都建网站大家好,我们今天通过C语言来实现我们现实生活中常用的通讯录功能。 前言: 大家都知道我们生活中的通讯录得保存联系人,修改联系人和删除联系人等等,我们今天就利用C语言来实现通讯录的增删查改等功能。 实现通讯录: 在…

大家好,我们今天通过C语言来实现我们现实生活中常用的通讯录功能。

在这里插入图片描述

前言:

大家都知道我们生活中的通讯录得保存联系人,修改联系人和删除联系人等等,我们今天就利用C语言来实现通讯录的增删查改等功能。

实现通讯录:

在这里我们需要创建两个.cpp文件来实现和调试,还需要创建一个头文件.h来进行引用和声明。
在这里插入图片描述

1.首先这里新打印我们需要的菜单,因为我们需要实现增删查改等功能,所以我们的菜单中就要需要这些功能。

void 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");
}

2.接下来我们就需要写出我们通讯录的基本框架,跟我们之前写的三子棋和猜数字一样用do while循环来实现。

int main()
{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://排序  -qsort//按照什么排序?break;case EXIT:printf("退出通讯录\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

这里我们通过input的输入值来控制功能的实现,switch分支语句的实现能够将我们输入的数字与我们通讯录的功能相对应起来,那么我们的switch语句中的case语句又怎么与数字相对应呢,这里就需要用到我们的枚举函数了。

enum Option
{EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};

我们默认EXIT的值为0,后面的函数对应值则是依次加1,这里就很简单的实现了我们的数字与case语句相对应。

3.接下来我们就创建联系人和通讯录结构体

#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30#define MAX 100
typedef struct PeoInfo
{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}PeoInfo;

这里我们用typedef来重新命名结构体的名字,有利于我们的程序的编写。这里我们#define来定义了这些变量的最大值,代表我们每个结构体成员所能存放的最大数据。

#define MAX 100
typedef struct Contact
{PeoInfo data[MAX];//存放数据int sz;//记录的时当前通讯录中存放的人的信息个数
}Contact;

如果我们想存储若干个联系人的信息,那我们就要定义一个数组,数组有若干个元素,元素的类型是PeoInfo,我们用define定义的标识符常量来表示数组的最大元素个数。通讯录除了要有所有联系人信息外,也应该可以告诉我们有多少个联系人,所以通讯录里要有2个东西,一个是若干联系人信息,一个是联系人的个数,它们的类型不同,所以用结构体表示通讯录。MAX就代表我们可以存储最多联系人的数量。

4.定义通讯录且初始化,我们在进行函数调用的时候最好进行传址调用,而且我们在初始化的时候将变量con的元素sz的值赋值为0,并且data数组里面的元素也都是0,这里就需要使用我们的memset函数进行初始化了。

void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;memset(pc->data, 0, sizeof(pc->data));
}

5.增加联系人

case ADD:AddContact(&con);break;
void AddContact(Contact* pc)
{assert(pc);if (pc->sz == MAX){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");
}

我们给它传址过去到contact.c文件中进行,如果我们的通讯录满了的话就无法增加了,如果没满的话我们就将信息输入,我们的sz就加1。但是我们要注意我们的函数声明必须要在contact.h文件中。

6.查找联系人

void SearchContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("请输入要查找人的名字:");scanf("%s", name);int ret = FindByName(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}//显示出来printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s%-5d%-5s%-12s%-30s\n",pc->data[ret].name, pc->data[ret].age, pc->data[ret].sex, pc->data[ret].tele, pc->data[ret].addr);
}
static int FindByName(Contact* pc, char name[])
{assert(pc);int i = 0;for (i = 0; i < pc->sz; i++){if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;//找不到
}

我们通过函数调用到FindByName函数中,我们通过循环遍历操作,利用strcmp函数将我们要查找人的姓名和我们通讯录中的相比较,如果找到了就返回i,在 SearchContact函数中将联系人信息打印出来。如果没有找到就返回-1。

7.删除联系人

void DelContact(Contact* pc)
{char name[NAME_MAX];assert(pc);if (pc->sz == 0){printf("通讯录为空,无法删除\n");return;}printf("输入要删除人的名字:");scanf("%s", name);//zhangsan//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要删除的人不存在\n");return;}//删除这个人int i = 0;for (i = ret; i < pc->sz - 1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("删除成功\n");
}

我们删除联系人操作要先查找联系人找到了联系人在将我们要删除的人的名字输入,那么就会先调用查找函数找不到就代表我们要删除的人不存在,找到了我们利用循环将我们下一个联系人的数据将这一个联系人的数据覆盖就可以了。

8.修改联系人

void ModifyContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("请输入要修改人的名字:");scanf("%s", name);int ret = FindByName(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}//修改printf("请输入名字:");scanf("%s", pc->data[ret].name);printf("请输入年龄:");scanf("%d", &(pc->data[ret].age));printf("请输入性别:");scanf("%s", pc->data[ret].sex);printf("请输入电话:");scanf("%s", pc->data[ret].tele);printf("请输入地址:");scanf("%s", pc->data[ret].addr);printf("修改成功\n");
}

我们同样是先进行查找我们要修改的联系人,找到了我们要查找的联系人就对它所在的联系人信息进行修改就可以了。

9.打印所有联系人的信息。这相对而言就比较简单了,我们只需将我们的数组全部遍历一遍再打印出来就可以了。

void ShowContact(const Contact* pc)
{assert(pc);if (pc->sz == 0){printf("通讯录为空,无需打印\n");return;}int i = 0;//名字  年龄  性别  电话    地址//xxx   xxx  xxx  xxx     xxxprintf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");for (i = 0; i < pc->sz; i++){//打印每个人的信息printf("%-20s%-5d%-5s%-12s%-30s\n",pc->data[i].name, pc->data[i].age, pc->data[i].sex, pc->data[i].tele, pc->data[i].addr);}
}

最后我们注意将所有函数的声明都在contact.h文件中进行,在contact.c和test.c文件中引用我们的contact.h文件就可以了,因为我们的contact.h文件是我们自己创建的,所以我们可以用“ ”代替<>。

完整代码实现:
contact.h:

#pragma once
#include <assert.h>
#include <stdio.h>
#include <string.h>#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 12
#define ADDR_MAX 30#define MAX 100//类型的声明
typedef struct PeoInfo
{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];
}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(Contact* pc);//修改指定联系人
void ModifyContact(Contact* pc);

contact.c:

#include "contact.h"void InitContact(Contact* pc)
{assert(pc);pc->sz = 0;memset(pc->data, 0, sizeof(pc->data));
}void AddContact(Contact* pc)
{assert(pc);if (pc->sz == MAX){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);if (pc->sz == 0){printf("通讯录为空,无需打印\n");return;}int i = 0;//名字  年龄  性别  电话    地址//xxx   xxx  xxx  xxx     xxxprintf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");for (i = 0; i < pc->sz; i++){//打印每个人的信息printf("%-20s%-5d%-5s%-12s%-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(Contact* pc, char name[])
{assert(pc);int i = 0;for (i = 0; i < pc->sz; i++){if (strcmp(pc->data[i].name, name) == 0){return i;}}return -1;//找不到
}void DelContact(Contact* pc)
{char name[NAME_MAX];assert(pc);if (pc->sz == 0){printf("通讯录为空,无法删除\n");return;}printf("输入要删除人的名字:");scanf("%s", name);//zhangsan//找到名字为name的人int ret = FindByName(pc, name);if (ret == -1){printf("要删除的人不存在\n");return;}//删除这个人int i = 0;for (i = ret; i < pc->sz - 1; i++){pc->data[i] = pc->data[i + 1];}pc->sz--;printf("删除成功\n");
}void SearchContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("请输入要查找人的名字:");scanf("%s", name);int ret = FindByName(pc, name);if (ret == -1){printf("要查找的人不存在\n");return;}//显示出来printf("%-20s%-5s%-5s%-12s%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("%-20s%-5d%-5s%-12s%-30s\n",pc->data[ret].name, pc->data[ret].age, pc->data[ret].sex, pc->data[ret].tele, pc->data[ret].addr);
}void ModifyContact(Contact* pc)
{char name[NAME_MAX];assert(pc);printf("请输入要修改人的名字:");scanf("%s", name);int ret = FindByName(pc, name);if (ret == -1){printf("要修改的人不存在\n");return;}//修改printf("请输入名字:");scanf("%s", pc->data[ret].name);printf("请输入年龄:");scanf("%d", &(pc->data[ret].age));printf("请输入性别:");scanf("%s", pc->data[ret].sex);printf("请输入电话:");scanf("%s", pc->data[ret].tele);printf("请输入地址:");scanf("%s", pc->data[ret].addr);printf("修改成功\n");
}

test.c:

#include "contact.h"void 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");
}enum Option
{EXIT,//0ADD,DEL,SEARCH,MODIFY,SHOW,SORT
};int main()
{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://排序  -qsort//按照什么排序?break;case EXIT:printf("退出通讯录\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

最后再来看下我们代码的运行结果吧。
在这里插入图片描述

今天的分享就到这里了,感谢大家的支持。

http://www.dtcms.com/wzjs/3090.html

相关文章:

  • 在百度做网站百度云搜索引擎网站
  • 即给做网站又给我们做推广的公司呢链接购买平台
  • 长春做网站 信赖吉网传媒网站设计案例
  • 工商企业信息查询网站代运营公司前十名
  • 做网站怎么搭建环境百度权重什么意思
  • 郑州网站推广信息百度怎么做网站
  • 网站导航菜单代码福州seo推广
  • 网站url是什么意思简述搜索引擎优化
  • 钟祥网站建设查网站流量查询工具
  • 对接空间站旅行网站排名前十名
  • 沧州网站设计公司价格郑州网站优化公司
  • 做司法考试真题的网站最新军事新闻 今日 最新消息
  • 中国建筑集团排名揭阳市seo上词外包
  • wordpress 中文数据百度系优化
  • 聊城专业网站制作公司seo常用优化技巧
  • 网站字体选择百度指数的基本功能
  • 供应邯郸做网站国内搜索引擎排名第一的是
  • 做好中心网站建设工作简单网页设计模板html
  • 最新国际军事新闻头条新闻天津seo推广
  • 展示型网站建设价格免费创建网站平台
  • 做盗版小说网站赚钱嘛西安关键词快速排名
  • 大学生创新创业大赛报名时间湖南网站营销seo多少费用
  • 定西企业网站制作seo数据优化
  • 网站建设时间计划表百度云搜索入口
  • 用ssh做的简单网站seo技术专员招聘
  • 经典vi设计案例分析武汉seo首页优化技巧
  • 东莞哪家网站建设好常用的seo工具
  • 个人网站制作源代码下载哪家培训机构学校好
  • 政府网站建设如何做网站优化 seo和sem
  • 做淘口令网站正规淘宝代运营去哪里找