社交网站建设技术,为什么做的网站预览出来什么都没有,衡阳seo网站推广,一个新手怎么做电商目录 一、介绍
二、源代码
test.c:
Contact.c:
Contact.h:
代码运行结果#xff1a;
三、开始实现
1.基本框架#xff1a;
2.添加联系人#xff1a;
3.显示联系人信息#xff1a;
4.删除联系人信息#xff1a;
5.查看指定联系人信息#xff1a;
6.修改联系人…目录 一、介绍
二、源代码
test.c:
Contact.c:
Contact.h:
代码运行结果
三、开始实现
1.基本框架
2.添加联系人
3.显示联系人信息
4.删除联系人信息
5.查看指定联系人信息
6.修改联系人信息
总结 一、介绍 通讯录相信大家都不陌生既然大家已经来参考或学习了说明大家已经基本掌握了C语言的基础语法和一些基本套路了后续有不懂或者建议的地方欢迎大家在评论区讨论。 二、源代码 test.c: #include contact.h
//测试通讯录void menu()
{printf(**********************************\n);printf(****** 1.add 2.del ******\n);printf(****** 3.search 4.modify ******\n);printf(****** 5.show 0.exit ******\n);printf(**********************************\n);printf(**********************************\n);
}void test()
{int input 0;Contact con;InitContact(con);//初始化通讯录结构体do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:AddContact(con);break;case 2:DelContact(con);break;case 3:SearchContact(con);break;case 4:ModifyContact(con);break;case 5:ShowContact(con);break;case 0:printf(退出成功\n);break;default:printf(输入无效请重新选择\n);break;}} while (input);
}int main()
{test();return 0;
} Contact.c: //函数的实现
#include Contact.h//初始化通讯录结构体
void InitContact(Contact* p)
{memset(p-data, 0, sizeof(p-data));p-sz 0;
}//增加联系人信息
void AddContact(Contact* p)
{//判断通讯录是否塞满if (p-sz Max){printf(通讯录已满无法添加\n);return;}printf(请输入要添加的联系人的姓名:);scanf(%s, p-data[p-sz].name);printf(请输入要添加的联系人的性别:);scanf(%s, p-data[p-sz].sex);printf(请输入要添加的联系人的电话号码:);scanf(%s, p-data[p-sz].tala);printf(请输入要添加的联系人的地址:);scanf(%s, p-data[p-sz].addr);p-sz;printf(添加联系人成功\n);
}//展示联系人信息
void ShowContact(const Contact* p)
{//显示标题printf(%-5s\t%-5s\t%-12s\t%-10s\n, 姓名, 性别, 电话号码, 地址);for (int i 0; i p-sz; i){printf(%-5s\t%-5s\t%-12s\t%-10s\n,p-data[i].name,p-data[i].sex,p-data[i].tala,p-data[i].addr);}
}//查找联系人
int Findname(Contact* p, char name1[])
{int i 0;for (i 0; i p-sz; i){if (strcmp(p-data[i].name, name1) 0){return i;}}//没找到return -1;
}//删除指定联系人信息
void DelContact(Contact* p)
{if (p-sz 0){printf(通讯录为空!\n);return;}char name1[Max_name] { 0 };printf(请输入你要删除的联系人姓名:);scanf(%s, name1);int del Findname(p, name1);if (del -1){printf(该通讯录不存在这个人\n);return;}int i 0;for (i del; i p-sz - 1; i){p-data[i] p-data[i 1];}p-sz--;printf(删除联系人成功\n);
}//查找指定联系人
void SearchContact(const Contact* p)
{char name[Max_name] { 0 };printf(请输入你要查看的联系人的姓名:);while (getchar()! \n);scanf(%s, name);int i Findname(p, name);if (i -1){printf(该通讯录不存在该联系人\n);}else{//显示标题printf(%-5s\t%-5s\t%-12s\t%-10s\n, 姓名, 性别, 电话号码, 地址);printf(%-5s\t%-5s\t%-12s\t%-10s\n,p-data[i].name,p-data[i].sex,p-data[i].tala,p-data[i].addr);}
}//修改联系人信息
void ModifyContact(Contact* p)
{char name[Max_name] { 0 };printf(请输入你要修改的联系人的姓名:);while (getchar() ! \n);scanf(%s, name);int i Findname(p, name);if (i -1){printf(该通讯录不存在该联系人\n);}else{printf(请重新输入该联系人的姓名:);scanf(%s, p-data[i].name);printf(请重新输入该联系人的性别:);scanf(%s, p-data[i].sex);printf(请重新输入该联系人的电话号码:);scanf(%s, p-data[i].tala);printf(请重新输入该联系人的地址:);scanf(%s, p-data[i].addr);}printf(修改成功\n);
} Contact.h: #define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#define Max 100
#define Max_name 20
#define Max_sex 5
#define Max_tele 12
#define Max_addr 30//存放函数的类型和声明
#includestring.h
#includestdio.htypedef struct PeoInfo
{char name[Max_name];char sex[Max_sex];char tala[Max_tele];char addr[Max_addr];}PeoInfo;//通讯录结构体
typedef struct Contact
{PeoInfo data[Max];int sz;
}Contact;//函数声明//初始化通讯录结构体
void InitContact(Contact* p);//增加联系人信息
void AddContact(Contact* p);//展示联系人信息
void ShowContact(Contact* p);//删除联系人信息
void DelContact(Contact* p);//查找指定联系人信息
void SearchContact(const Contact* p);//修改联系人信息
void ModifyContact(Contact* p); 代码运行结果 三、开始实现
1.基本框架 本次实现通讯录采用多文件的方法进行实现既然大家学到了通讯录应该几乎都接触过多文件操作所谓多文件操作即 ①函数的声明、define的宏定义、以及结构体的声明等等放在.h文件。contact.h ②函数的定义放在.c文件。(contact.c) ③main函数和一些基本框架可以单独放在另一个.c文件。(test.c)。 既然是通讯录我们就需要一个保存通讯录人员的结构体以及保存人员信息的结构体声明放在contact.h文件中 ①本次人员信息我们放在结构体PerInfo中其中给了姓名、性别、电话、地址大家可以根据自身想法添加其他信息。 ②然后第二个结构体Contact用于保存联系人这里以上限为100个联系人为例所以成员有一个PerInfo结构体数组然后还有一个整型变量sz用于记录现有人数增加一个人sz1;删除一个人,sz-1。 代码如下 #pragma once
#define Max 100
#define Max_name 20
#define Max_sex 5
#define Max_tele 12
#define Max_addr 30typedef struct PeoInfo
{char name[Max_name];char sex[Max_sex];char tala[Max_tele];char addr[Max_addr];}PeoInfo;//通讯录结构体
typedef struct Contact
{PeoInfo data[Max];int sz;
}Contact;然后本次框架依然用do while循环套switch case语句以便于选择不同的功能这里我们放在test.c文件中 #include contact.h
//测试通讯录void menu()
{printf(**********************************\n);printf(****** 1.add 2.del ******\n);printf(****** 3.search 4.modify ******\n);printf(****** 5.show 0.exit ******\n);printf(**********************************\n);printf(**********************************\n);
}void test()
{int input 0;Contact con;InitContact(con);//初始化通讯录结构体do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 0:break;default:break;}} while (input);
}int main()
{test();return 0;
} ①因为相关头文件在contact.h文件中所以不论是在contact.c文件还是在test。c文件中我们都需要包含一下自己的头文件contact.h。 ②然后为了美观写一个菜单函数menu大家可自行设置。 ③首先我们必须要有一个Contact的结构体变量con然后创建InitContact函数对其成员简单的初始化 这里数组有100个空间用循环初始化太麻烦所以我们用到一个库函数memset具体介绍可以参考http://t.csdn.cn/wu8iX ④应该大部分人都使用过do while套switch case因为这样我们可以根据菜单函数来进行选择输入不同数字进入不同功能函数函数结束后又可以循环输入当输入0时do while结束即整个系统结束。 2.添加联系人 基本框架搭完我们就可以实现相关函数了这里小编建议在写这种类似的程序时最好一个函数一个函数的实现这样方便调试和改正。 首先实现添加操作我们创建AddContact函数来实现添加操作函数源代码如下 //增加联系人信息
void AddContact(Contact* p)
{//判断通讯录是否塞满if (p-sz Max){printf(通讯录已满无法添加\n);return;}printf(请输入要添加的联系人的姓名:);scanf(%s, p-data[p-sz].name);printf(请输入要添加的联系人的性别:);scanf(%s, p-data[p-sz].sex);printf(请输入要添加的联系人的电话号码:);scanf(%s, p-data[p-sz].tala);printf(请输入要添加的联系人的地址:);scanf(%s, p-data[p-sz].addr);p-sz;printf(添加联系人成功\n);
} ①既然是添加我们最开始就需要判断通讯录是否填满若没有填满才继续添加所以开始用一个if语句当szMax时即为满。 ②接着只需要依次向对应位置输入数据即可因为sz表示通讯录现有人数刚开始为0而数组的下标也是从0开始所以直接用sz作为数组下标进行输入数据即可添加成功后sz自增1即表示人数1又可用来作为第二次添加时作为数组下标。 ③这里需要注意和理解清楚每个结构体变量和成员以及‘.’操作符和-操作符的对应关系。 3.显示联系人信息 为了方便测试代码是否有误我们在实现添加操作后就可以先实现展示操作这样可以检查添加操作是否有误以及后续每完成一个功能就可以用展示功能来检查。 我们创建函数ShowContact函数来实现展示功能源代码如下
//展示联系人信息
void ShowContact(Contact* p)
{//显示标题printf(%-5s\t%-5s\t%-12s\t%-10s\n, 姓名, 性别, 电话号码, 地址);//显示信息for (int i 0; i p-sz; i){printf(%-5s\t%-5s\t%-12s\t%-10s\n,p-data[i].name,p-data[i].sex,p-data[i].tala,p-data[i].addr);}
}①我们首先先打印标题方便查看。 ②我们只需用一个for循环在用和结构体找到对应的值打印出来即可。 ③这里值得注意的是排版问题一些缩进和排版是影响美观的大家可自行设置也可参考上诉源代码。 4.删除联系人信息 我们创建DelContact函数来实现删除操作源代码如下 //删除指定联系人信息
void DelContact(Contact* p)
{if (p-sz 0){printf(通讯录为空!\n);return;}char name1[Max_name] { 0 };printf(请输入你要删除的联系人姓名:);scanf(%s, name1);int del Findname(p, name1);if (del -1){printf(该通讯录不存在这个人\n);return;}int i 0;for (i del; i p-sz - 1; i){p-data[i] p-data[i 1];}p-sz--;printf(删除联系人成功\n);
} ①既然是删除所以我们最开始应该判断一下通讯录是否为空 ②然后创建一个临时数组char name1[]用于用户输入要删除的联系人的姓名 ③接着我们需要判断通讯录是否存在这个人所以这里又创建Findname函数用于查找指定联系人源代码如下 //查找联系人
int Findname(Contact* p, char name1[])
{int i 0;for (i 0; i p-sz; i){if (strcmp(p-data[i].name, name1)){return i;}}//没找到return -1;
} 这里值得注意的是循环里面的if语句很多人在判断条件里面喜欢用“”,但我们要注意姓名是字符串这里是两个字符串相比较所以不能直接用“”,所以这里用到字符串函数strcmp,具体用法参考http://t.csdn.cn/qD0LQ ④当没找到时提示后直接返回若找到了就进行删除操作 因为我们使用的是数组所以删除操作简单只需要先找到该联系人的位置del然后将该位置后面的内容依次向前进行覆盖最后现有人数sz自减一即可所以这里用到一个for循环。 5.查看指定联系人信息 我们创建SearchContact函数实现此操作源代码如下 //查找指定联系人
void SearchContact(const Contact* p)
{char name[Max_name] { 0 };printf(请输入你要查看的联系人的姓名:);while (getchar()! \n);scanf(%s, name);int i Findname(p, name);if (i -1){printf(该通讯录不存在该联系人\n);}else{//显示标题printf(%-5s\t%-5s\t%-12s\t%-10s\n, 姓名, 性别, 电话号码, 地址);printf(%-5s\t%-5s\t%-12s\t%-10s\n,p-data[i].name,p-data[i].sex,p-data[i].tala,p-data[i].addr);}
} ①首先创建一个临时数组便于用户输入指定联系人姓名然后用一个while循环去掉缓冲区多余内容以便scanf正常读入 ②接着调用Findname函数根据返回值进行操作 若返回-1则该联系人不存在直接返回 若不是-1说明找到了然后我们打印出该联系人各个信息即可。 6.修改联系人信息 我们创建ModifyContact函数来实现该操作源代码如下 //修改联系人信息
void ModifyContact(Contact* p)
{char name[Max_name] { 0 };printf(请输入你要修改的联系人的姓名:);while (getchar() ! \n);scanf(%s, name);int i Findname(p, name);if (i -1){printf(该通讯录不存在该联系人\n);}else{printf(请重新输入该联系人的姓名:);scanf(%s, p-data[i].name);printf(请重新输入该联系人的性别:);scanf(%s, p-data[i].sex);printf(请重新输入该联系人的电话号码:);scanf(%s, p-data[i].tala);printf(请重新输入该联系人的地址:);scanf(%s, p-data[i].addr);}printf(修改成功\n);
} ①前面和查找联系人相同需要用户先输入要修改的联系人的姓名然后判断是否存在 ②若存在的话只需返回该下标然后对该下标的信息重新输入数据即可比较简单。 总结 本次小编只是简单实现一个通讯录方便大家寻找思路和入手方法有很多漏洞以及改进大家可以自行实现本次知识到此为止希望对大家有所帮助