个人主页:_麦麦_
今日名言:只有走在路上,才能摆脱局限,摆脱执着,让所有的选择,探寻,猜测,想象都生机勃勃。——余秋雨《文化苦旅》
目录
一、前言
二、正文
1.大体框架
2.界面显示
3. 创建通讯录
4.初始化通讯录
5.增加联系人
6.显示联系人
7. 删除联系人
8.查找联系人
9.修改联系人
10. 排序联系人
三、结语
在上一章的结构体的学习中,相信小伙伴们或多或少都有所收获,但是有的小伙伴可能会问,结构体到底能用来做什么呢?今天,我们就借助结构体和之前所学的知识来实现通讯录。
相信在座的小伙伴们一定有人做过类似的小游戏或项目,编程的大忌就是将所有的代码都放在同一个文件里,写的时候有多好爽快,后期对代码进行修改和维护的时候就有痛苦。这期通讯录的实现我们大致分为三个模块,一个用于测试通讯录,即对各种函数的调用【text.c】;另一个用于通讯录的实现,其中放置着通讯录功能的具体实现【contact.c】;最后一个就是函数的声明了[contact.h].
就像之前的扫雷与三子棋游戏一样,这个通讯录的第一步一定是要让使用者看到通讯录的页面,继而在使用者选择之后进行下一步的操作。因而我们仍旧采取do while 循环,先将页面显示,再根据使用者的输入进行相应的操作。具体实现代码如下:
//通讯录界面显示
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");
}
int main()
{
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:
printf("退出通讯录\n");
break;
default:
printf("输入错误,请重新输入\n");
}
}
while (input);
return 0;
}
在以上代码的逻辑下,使用者刚开始就能够看到我们设置好的界面,并进行功能的输入,如果输入为0就退出通讯录,通讯录为功能相应的数字就进行相应的功能【还未填写完整】,若为其他数字,则重新输入。
为了实现我们菜单中的各个功能,首先我们要有这些功能的受体——通讯录,只有创建好通讯录 ,才能进行功能的操作。在生活中,我们手机上的通讯录都存有联系人的相关信息,例如姓名,年龄,性别,手机号码等等 ,其次在后面的功能中我们还需要知道这个通讯录中联系人的数量是多少。显然,我们需要一个自定义结构变量来定义通讯录,在这个结构体中有两个变量,一个是存放联系人信息的变量,另一个是存放联系人数量的变量。而存放联系人的信息显然需要一个数组,数组的大小即对应着能存放多少联系人,而数组中的元素就是联系人的信息,这也无法用一个单一类型变量来定义,所以我们还需要额外定义一个结构体变量来代表联系人的各种信息。具体代码如下:
//结构体——联系人的信息
struct peo
{
char name[20]; //姓名
char sex[10]; //性别
int age; //年龄
char addr[40]; //地址
char tel[20]; //电话
};
//结构体——通讯录
typedef struct contact
{
struct peo Peo[contact_num]; //通讯录中联系人的信息
int sz;