实现一个通讯录;
通讯录可以用来存储1000个人的信息,每个人的信息包括:
姓名、性别、年龄、电话、住址
提供方法:
1. 添加联系人信息
2. 删除指定联系人信息
3. 查找指定联系人信息
4. 修改指定联系人信息
5. 显示所有联系人信息
6. 清空所有联系人
7. 以名字排序所有联系人
头文件:
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#define MAX 1000
typedef struct PEO
{
char name[64];
char sex[10];
int age[100];
char ph_num[12];
char adder[128];
}peo, *peo_p, **peo_pp;
typedef struct CONTACT
{
peo person [MAX];
int size;
}contact, *contact_p, **contact_pp;
int my_add(contact_p peoinf);
int my_delect(contact_p peoinf);
int my_clear(contact_p peoinf);
int my_search(contact_p peoinf);
int my_modify(contact_p peoinf);
void my_show(contact_p peoinf);
#endif
测试函数:
#include"test.h"
//查找联系人信息
int my_search(contact_p peoinf)
{
assert(peoinf);
char name[64];
printf("请输入要查找联系人的名字:\n");
scanf("%s", &name);
int i = 0;
for (; i < peoinf->size; i++)
{
if (strcmp(peoinf->person[i].name, name) == 0)
{
return i;//找到了
}
}
return -1;
}
//增加联系人的信息;
int my_add(contact_p peoinf)
{
assert(peoinf);
if (peoinf->size == MAX)
{
printf("电话本已满!!!\n");
return -1;
}
printf("姓名:\n");
scanf("%s", peoinf->person[peoinf->size].name);
printf("性别:\n");
scanf("%s", peoinf->person[peoinf->size].sex);
printf("年龄:\n");
scanf("%d", peoinf->person[peoinf->size].age);
printf("电话:\n");
scanf("%s", peoinf->person[peoinf->size].ph_num);
printf("地址:\n");
scanf("%s", peoinf->person[peoinf->size].adder);
peoinf->size++;
return 1;
}
//删除联系人的信息;
int my_delect(contact_p peoinf)
{
int i = 0;
int ret = my_search(peoinf);
if (ret != -1)
{
for (i = ret; i < peoinf->size - 1; i++)
{
peoinf->person[i] = peoinf->person[i + 1];
peoinf->size--;
}
return 1;
}
else
{
printf("电话本是空的!!\n");
return -1;
}
}
//清空联系人的信息;
int my_clear(contact_p peoinf)
{
peoinf->size = 0;
return 1;
}
int find_contcat(contact_p peoinf)//找到联系人
{
int ret = my_search(peoinf);
if (ret != -1)
{
printf("姓名:%s", peoinf->person[peoinf->size].name);
printf("性别:%s", peoinf->person[peoinf->size].sex);
printf("年龄:%d", peoinf->person[peoinf->size].age);
printf("电话:%s", peoinf->person[peoinf->size].ph_num);
printf("地址:%s", peoinf->person[peoinf->size].adder);
printf("\n");
return 1;
}
else
{
printf("联系人不存在!!\n");
return -1;
}
}
//修改联系人信息;
int my_modify(contact_p peoinf)
{
int ret = my_search(peoinf);
if (ret != -1)
{
printf("请重新输入姓名:\n");
scanf("%s", peoinf->person[peoinf->size].name);
printf("请重新输入性别:\n");
scanf("%s", peoinf->person[peoinf->size].sex);
printf("请重新输入年龄:\n");
scanf("%d", peoinf->person[peoinf->size].age);
printf("请重新输入电话:\n");
scanf("%s", peoinf->person[peoinf->size].ph_num);
printf("请重新输入地址:\n");
scanf("%s", peoinf->person[peoinf->size].adder);
return 1;
}
else
{
printf("联系人不存在!!\n");
return -1;
}
}
//显示联系人的信息
void show(contact_p peoinf)
{
int i = 0;
printf("姓名\t性别\t年龄\t电话号码\t地址\n");
for (; i < peoinf->size; i++)
{
printf("%s", peoinf->person[peoinf->size].name);
printf("%s", peoinf->person[peoinf->size].sex);
printf("%d", peoinf->person[peoinf->size].age);
printf("%s", peoinf->person[peoinf->size].ph_num);
printf("%s", peoinf->person[peoinf->size].adder);
}
printf("\n");
}
主函数:
#include"test.h"
int main()
{
int data = 0;
contact people;
people.size = 0;
while (1)
{
printf("********************************\n");
printf("** 1.my_add ***** 2.my_delect **\n");
printf("** 3.my_search ** 4.my_modify **\n");
printf("** 5.show ***** 6. my_clear **\n");
printf("** 7.exit ******************\n");
printf("********************************\n");
printf("please slect:\n");
scanf("%d",&data );
switch (data)
{
case 1:
my_add(&people);
printf("添加联系人成功!!\n");
break;
case 2:
my_delect(&people);
printf("删除联系人成功!!\n");
break;
case 3:
my_search(&people);
printf("查找联系人成功!!\n");
break;
case 4:
my_modify(&people);
printf("修改联系人成功!!\n");
break;
case 5:
show(&people);
printf("显示联系人成功!!\n");
break;
case 6:
my_clear(&people);
printf("清空联系人成功!!\n");
break;
case 7:
printf("退出成功!!\n");
break;
default:
printf("你的输入有误!!\n");
break;
}
}
system("pause");
return 0;
}