C语言实战小项目——通讯录2.0
文章目录
- 动态通讯录的实现
- 一.通讯录的各项功能及主体框架
- 1.通讯录的要求实现功能
- 2.页面菜单
- 3.通讯录的主体框架实现
- 4.通讯录初始化及个人信息的表示
- 二、功能函数的具体实现
- 1.增加联系人的信息
- 2.删除联系人的信息
- 3.修改联系人的信息
- 4.查找联系人的信息
- 5.展示通讯录联系人信息
- 整体代码展示
- 1.test.c 通讯录主体框架测试文件
- 2.contact.c 通讯录函数文件
- 3.contact.h 宏定义及函数声明文件
- 小结
- 未完待续.......
动态通讯录的实现
——接上篇1.0版本静态通讯录的优化2.0版本
C语言实战小项目——通讯录1.0—— 博客入口
一.通讯录的各项功能及主体框架
??本次优化版本与上一次的1.0版本相比,改变了原有的固定内存存储通讯录联系人的方式。
??原来的存储联系人方式是我们规定一个数组存储1000个结构体进行存储联系人的各种信息,但是有时候我们用不了这么多的空间,没有那么多的联系人,那样我们开辟的内存空间就浪费了,所以这次我们的通讯录做了以下优化:
1.??通讯录我们开辟的动态内存空间默认最大的联系人数量是2个
2.??如果再添加联系人,我们将调整动态内存空间的大小,再次增加两个联系人的数量,这样极大的节约了空间的占有率。
3.??我们开辟的动态内存需要free ,防止内存泄漏的问题,所以在EXIT的功能后添加了DestroyContact函数来对开辟的空间进行释放。
1.通讯录的要求实现功能
0.退出菜单
1.添加联系人信息
2.删除指定名字的联系人信息
3.修改联系人的信息
4.查找好友的信息
5.展示通讯录联系人信息
??我们根据通讯录的各项功能进行编写页面菜单
2.页面菜单
void menu(){//打印通讯录菜单//0.退出菜单//1.添加联系人信息//2.删除指定名字的联系人信息//3.修改联系人的信息//4.查找好友的信息//5.展示通讯录联系人信息//6.对通讯录指定信息进行排序printf("*************************************************\n");printf("********** ——欢迎来到通讯录菜单—— *********\n");printf("********** 0.退出菜单 *********\n");printf("********** 1.添加联系人信息 *********\n");printf("********* 2.删除联系人信息 *********\n");printf("********* 3.修改联系人信息 *********\n");printf("********* 4.查找联系人信息 *********\n");printf("********* 5.展示联系人信息 *********\n");printf("*************************************************\n");}
3.通讯录的主体框架实现
//将菜单的功能一一列举出来,以枚举的类型呈现enum{ EXIT, ADD, DEL, MODIFY, SEARCH, SHOW,};int main(){int input = 0;//创建通讯录struct Contact con; //Con就是通讯录,里面包含1000个人的信息,及sizeInitContact(&con);do{menu();printf("请选择功能:>");scanf("%d", &input);switch (input){case ADD:AddContact(&con);break;case DEL:DelContact(&con);break;case MODIFY :MotifyContact(&con);break;case SEARCH :SearchContact(&con);break;case SHOW:ShowContact(con);break;case EXIT:DestroyContact(&con);break;default:printf("选择错误,请重新输入!!\n");break;}} while(input);return 0;}
??我们用枚举类型将功能一一列举出来,同时每一个枚举成员也代表着对应的数字,我们在switch ...case 语句中也不用 case 1,case 2来记录每一功能对应的数字了,直接以case ADD,case DEL表示,更加直接了当。
4.通讯录初始化及个人信息的表示
#define _CRT_SECURE_NO_WARNINGS 1#define MAX 1000#define MAX_name 20#define MAX_tel 20#define MAX_sex 5#define MAX_addr 30#define DEFAULT_SZ 2struct PeoInfor{char name[MAX_name];int age;char sex[MAX_sex];char tel[MAX_tel];char addr[MAX_addr];};//struct Contact//{// struct PeoInfor date[MAX]; // 存放个人信息// int size; //记录当前已有的元素个数/