1.结构体定义
通讯录能保存MAX个联系人,联系人用结构体定义,通讯录也定义成结构体。通讯录中有一个联系人数组,以及当前通讯录中存储的联系人数量。 联系人的信息有名字,地址,电话号码,性别。
通讯录能实现联系人的增删查改,搜索。
#define MAX_NAME 20
#define MAX_ADRESS 20
#define MAX_NUMS 11
#define MAX_SEX 8
typedef struct People
{
char name[MAX_NAME];
char adress[MAX_ADRESS];
char nums[MAX_NUMS];
char sex[MAX_SEX];
}Peo;
typedef struct Contant
{
Peo data[MAX];
int sz;
}Contant;
先打印菜单,通过用户输入的数字来进行操作
void menu()
{
printf("****************************\n");
printf("*** 1.Add 2.Del *******\n");
printf("*** 3.Search 4.Modified **\n");
printf("*** 5.Show 0.exit ******\n");
printf("****************************\n");
}
2.通讯录初始化
创建一个结构体变量con,对con里的sz初始化为0,data数组也全初始化为1
void InitCon(Contant* pc)
{
assert(pc);
pc->sz = 0;
memset(pc->data, 0, sizeof(pc->data));
}
3.联系人信息的添加
将输入联系人信息的过程封装成一个函数
void ModInfo(Contant* pc,int i)
{
printf("输入姓名:>\n");
scanf("%s", pc->data[i].name);
printf("输入地址:>\n");
scanf("%s", pc->data[i].adress);
printf("输入电话:>\n");
scanf("%s", pc->data[i].tele);
printf("输入性别:>\n");
scanf("%s", pc->data[i].sex);
}
void AddConPeoInfo(Contant* pc)
{
if (pc->sz == MAX)
{
printf("通讯录满了无法添加\n");
return;
}
ModInfo(pc, pc->sz);
pc->sz++;
printf("添加联系人成功\n");
}
4.查找联系人
通过输入联系人的姓名,遍历数组查找,找到返回其在data数组中的下标,找不到返回-1
int FindConPeoInfo(Contant* pc)
{
if (pc->sz == 0)
{
printf("联系人数量为0,不能搜索\n");
return -1;
}
printf("输入联系人姓名\n");
char name[MAX_NAME] = { 0 };
scanf("%s", name);
int i = 0;
for (i = 0; i < pc->sz; i++)
{
if (strcmp(name, pc->data[i].name) == 0)
return i;
}
return -1;
}
5.删除联系人
输入联系人姓名,找到联系人姓名之后将后面的数据向前覆盖,最后把sz-1
void DeleConPeoInfo(Contant* pc)
{
if (pc->sz == 0)
{
printf("无法删除,联系人数量为0\n");
return;
}
int ret = FindConPeoInfo(pc);
if (ret != -1)
{
int j = ret;
for (j = ret; j < pc->sz - 1; j++)
{
pc->data[j] = pc->data[j + 1];
}
pc->sz--;
printf("删除联系人成功\n");
}
else
{
printf("删除联系人不存在\n");
return;
}
}
6.展示信息
void ShowConProInfo(Contant* pc)
{
printf("%-10s\t%-15s\t%-13s\t%-5s\n",
"姓名", "地址", "电话", "性别");
int i = 0;
for (i = 0; i < pc->sz; i++)
{
printf("%-10s\t%-15s\t%-13s\t%-5s\n",
pc->data[i].name, pc->data[i].adress, pc->data[i].tele, pc->data[i].sex);
}
}
7.修改信息
void ModConPeoInfo(Contant* pc)
{
int ret = FindConPeoInfo(pc);
if (ret != -1)
{
ModInfo(pc, ret);
printf("修改信息成功\n");
}
else
{
printf("要修改的联系人不存在\n");
return;
}
}
|