通讯录功能
- 添加联系人信息
- 删除指定联系人信息
- 查找指定联系人信息
- 修改指定联系人信息
- 显示所有联系人信息
- 清空所有联系人
- 以名字排序所有联系人
- 保存联系人到文件
- 加载联系人
实现
1.首先弄一个简单的界面显示通讯录的所有功能。
void menu()
{
printf(" \n");
printf(" 1.添加 2.删除 3.查找 4.修改 5.显示 \n");
printf(" 6.清空 7.排序 8.保存 9.加载 0.退出 \n");
printf(" \n");
}
2.使用枚举的方法将每一个功能枚举出来
enum
{
quit, //退出
add, //添加
dele, //删除
search, //查找
modify, //修改
show, //显示
empty, //清空
sort, //排序
save, //保存
landing, //加载
};
在主函数中进行调试
对程序主体可以使用do while循环至少让用户使用一次
#include<stdio.h>
#include"contact.h"
void menu()
{
printf(" \n");
printf(" 1.添加 2.删除 3.查找 4.修改 5.显示 \n");
printf(" 6.清空 7.排序 8.保存 9.加载 0.退出 \n");
printf(" \n");
}
enum
{
quit, //退出
add, //查找
dele,
search,
modify,
show,
empty,
sort,
save,
landing,
};
int main()
{
int input = 0;
do{
menu();
printf("请选择功能\n");
scanf("%d", &input);
switch (input)
{
case quit:
break;
case add:
break;
case dele:
break;
case modify:
break;
case search:
break;
case show:
break;
case empty:
break;
case sort:
break;
case save:
break;
case landing:
break;
default:
printf("请重新选择\n");
break;
}
} while (input);
return 0;
}
通讯录的整体就是这样
接下来对通讯录的内容进行考虑
一个通讯录可以保存一个人的姓名,性别,年龄,住址,电话。
可以通过结构体保存这样的信息。
#define USER_MAX 1000
#define NAME_MAX 20
#define ADDRE_MAX 20
#define TELE_MAX 12
typedef struct people
{
char name[NAME_MAX];
char sex[5];
short age;
char tele[TELE_MAX];
char address[ADDRE_MAX];
}people;
一个人的信息可以使用一个结构体保存,而多个人的信息就组成了一个通讯录
,而通讯录还要包含他的成员个数,他的容量。
通讯录可以使用两种方法实现
静态通讯录直接使用数组保存里面所有的信息,但是数组的大小一旦设置好就不能改变
typedef struct contact
{
people PeoInfo[1000];// 可以容纳1000个人
int size; //人数
}contact;
动态通讯录可以使用动态内存开辟,这样的话有几个人开辟几个人的空间,可以大大减少内存的使用。
typedef struct contact
{
people* PeoInfo
int size;
int capacity;
}contact;
这里主要实现动态通讯录。
首先要对通讯录进行初始化
将通讯录中的size设置成0,开辟一定的空间,这里我先将通讯录的容量设置成3,所以先开辟三个人的空间
注意 :使用malloc的开辟空间的话要对返回值进行判断,如果是空指针的话说明电脑没有足够内存,直接退出!
void initcontact(contact*con)
{
assert(con);
con->PeoInfo = (people*)malloc(3*sizeof(people));
if (con->PeoInfo == NULL)
{
perror("initcontact::malloc");
exit(EXIT_FAILURE);
}
con->size = 0