前言:
- 由于之前实现的通讯录在存储方面只能支持静态的1000人的存储量,但是如果联系人较少,则会造成较大的内存浪费。
- 而当联系人一旦超过1000时,就不能再继续存储信息了。因此我将通讯录改成动态扩容版本,就不会减少内存的浪费,同时也可以无限增加通讯录的内部信息。
- 之前的通讯录在程序退出后内部的数据就会消失,再次打开程序后只能重新输入数据,为此我们增加了一个保存功能来保存信息。
此版本将实现的功能:
- 新增联系人
- 查找联系人
- 删除联系人
- 修改联系人
- 查看所有联系人
清空所有联系人(新增)
- 按姓名排序联系人
- 保存联系人信息(新增)
注:之前版本写过的代码就不多做赘述了
如果有代码上的疑惑可以移步去 手把手教你用C语言实现通讯录(简易版 查看
本次仅对新增的内容进行解释和说明
通讯录(C语言升级版)
目录
一、通讯录菜单
新增:
清空所有联系人选项(7)
保存联系人信息选项(8)
代码如下:
void menu()
{
printf("*********************************\n");
printf("** 1. 添加联系人 **\n");
printf("** 2. 删除联系人 **\n");
printf("** 3. 查找联系人 **\n");
printf("** 4. 修改联系人 **\n");
printf("** 5. 显示所有联系人 **\n");
printf("** 6. 按姓名排序联系人 **\n");
printf("** 7. 清空所有联系人 **\n");
printf("** 8. 保存联系人信息 **\n");
printf("** 0. exit **\n");
printf("*********************************\n");
}
执行结果:
二、通讯录主函数
新增:
case 分支中 清空通讯录选项 & 清空实现函数
case 分支中 保存通讯录选项 & 保存实现函数
case 分支中 退出时自动保存实现函数
代码如下:
int main()
{
int input = 0;
//创建通讯录
struct 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:
MoidfyContact(&con);
break;
case SHOW:
ShowContact(&con);
break;
case DESTROY:
DestroyContact(&con);
break;
case SORT:
SortContact(&con);
break;
case SAVE:
SaveContact(&con);
break;
case EXIT:
SaveContact(&con);
printf("退出通讯录\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}
三、枚举主函数内部选项
新增:
enum枚举 选择中新增 DESTROY & SAVE 的选项,通过枚举的方法对应 main 函数中的 case 分支。
代码如下:
//枚举:选择功能
en