通讯录
老规矩笔记和代码欢迎自取~
链接:
文章目录
一、通讯录的组成
利用最近所学的知识,试着实现一个通讯录
手机里面的通讯录信息
最后我决定给通讯录增加以下信息
-
存放100个联系人的信息
信息包括:姓名 + 性别 + 年龄 + 电话 + 公司地址
(PS:节目效果,真不是跟踪狂)
-
增加/删除/修改/查找/打印/排序联系人
(功能是不是很强大?看完这篇你也可以实现!)
二、通讯录文件构成
为什么每一篇小项目都强调一遍文件构成?
- 文件的构成是每一个项目的思路
- 没有思路,直接上手容易手忙脚乱
- 分析好每个文件所包含的内容,有利于我们代码的书写
1. test.c
按照之前的设计小游戏一样,test.c文件是必要的,用来测试各种功能使用是否可以正常使用或者运行
还包括整个通讯录的框架,比如提供给使用者得选择菜单
2. correspondence.c
用来设计实现通讯录功能的文件,文件包含的基本上都是函数
函数包括实现增加/删除/修改/查找/打印/排序联系人
3. correspondence.h
包含 test.c 和 correspondence.c 中需要用到的库函数的头文件,以及全过程需要使用的变量
三、实现的代码步骤分析
1. 打印菜单
使用者上手即操作,我们需要提供给他们操作的菜单,也是我们功能的目录
菜单明细上面也分析了,主要包含:
void menu()//菜单
{
printf("==============通讯录=============\n");
printf(" 1.添加联系人(add) \n");
printf(" 2.查找联系人(seek) \n");
printf(" 3.删除联系人(delete) \n");
printf(" 4.修改联系人(modify) \n");
printf(" 5.排序联系人(sort) \n");
printf(" 6.打印联系人(print) \n");
printf(" 0.退出通讯录(EXIT) \n");
}
利用最近所学的枚举类型,我们试着这次的循环内的switch语句,判断不选择数字,而选择判断功能的内容
所以我们定义一个枚举类型,用单词代表各个功能
此过程在 test.c 文件中
enum menu
{
EXIT,//0
add,//1
seek,//2
delete,//3
modify,//4
sort,//5
print//6
};
把exit放前面正好代表0,每个枚举常量代表的数字都是对应的功能
到此为止,整个循环的大概模型是这样,代码如下
此过程在 test.c 文件中
int main()
{
int input = 0;
do
{
menu();//打印菜单提供使用者选择
printf("请选择您要使用的功能(输入选项括号内内容):");
scanf("%d", &input);//使用者输入选择
switch (input)
{
case add:break;
case seek:break;
case delete:break;
case modify:break;
case sort:break;
case print:break;
case exit:
printf("您选择了退出通讯录\n");
break;
default:
printf("输入错误信息,请重新输入:\n");
break;
}
} while (input != 0);
return 0;
}
运行的结果
分别测试了 正确信息 错误信息 退出功能
2. 联系人信息初始化
刚拿到新手机的大家,通讯录里面