//.实现一个通讯录;
//通讯录可以用来存储1000个人的信息,每个人的信息包括:
//姓名、性别、年龄、电话、住址
//
//提供方法:
//1. 添加联系人信息
//2. 删除指定联系人信息
//3. 查找指定联系人信息
//4. 修改指定联系人信息
//5. 显示所有联系人信息
//6. 清空所有联系人
//7. 以名字排序所有联系人
下面是代码:(在后缀为.c文件前提下)
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#define namesize 20
#define tellsize 11
#define addrsize 50
#define maxx 1000
struct text1000{
char name[namesize];
char sex[4];
int age;
char tell[tellsize];
char addr[addrsize];
};
typedef struct text1000 text;
typedef struct Counttext{
struct text1000 data[maxx];
int sx;
}Counttext1, *count;
void Init(count phone)
{
phone->sx = 0;
memset(phone->data, 0, sizeof(phone->data));
}
int Findtext(count phone)
{
int i = 0;
char namea[20] = " ";
printf("请输入你所需要联系人的姓名:\t");
scanf_s("%s", namea,namesize);
for (i = 0; i < phone->sx; i++)
{
if (strcmp(phone->data[i].name, namea) == 0)
break;
}
if (i == phone->sx)
{
return -1;
}
return i;
}
//提供方法:
//1. 添加联系人信息
void Add(count phone)
{
if (phone->sx == maxx)
{
printf("通讯录已满,无法添加!\n");
return;
}
printf("请输入姓名:\t");
scanf_s("%s", phone->data[phone->sx].name,namesize);
printf("请输入性别:\t");
scanf_s("%s", phone->data[phone->sx].sex,4);
printf("请输入年龄:\t");
scanf_s("%d", &(phone->data[phone->sx]).age);
printf("请输入联系方式:\t");
scanf_s("%s", phone->data[phone->sx].tell,tellsize);
printf("请输入住址:\t");
scanf_s("%s", phone->data[phone->sx].addr,addrsize);
printf("\t");
phone->sx++;
}
//2. 删除指定联系人信息
void pushtext(count phone)
{
int i = 0;
if (phone->sx == 0)
{
printf("通讯录无成员! \n");
return;
}
i = Findtext(phone);
if (i != -1)
{
for (i; i < phone->sx; i++)
{
phone->data[i] = phone->data[i + 1];
}
}
else
return;
phone->sx--;
}
//3. 查找指定联系人信息
void serchtext(count phone)
{
int i = 0;
i = Findtext(phone);
if (i != -1)
{
printf("%s", phone->data[i].name);
printf("%s", phone->data[i].sex);
printf("%d", phone->data[i].age);
printf("%s", phone->data[i].tell);
printf("%s", phone->data[i].addr);
}
else
printf("未能找见指定联系人!\n");
}
//4. 修改指定联系人信息
void changetext(count phone)
{
int i = 0;
i = Findtext(phone);
if (i != -1)
{
printf("请输入姓名:\t");
scanf_s("%s", phone->data[i].name, namesize);
printf("请输入性别:\t");
scanf_s("%s", phone->data[i].sex, 4);
printf("请输入年龄:\t");
scanf_s("%d", &(phone->data[i]).age);
printf("请输入联系方式:\t");
scanf_s("%s", phone->data[i].tell, tellsize);
printf("请输入住址:\t");
scanf_s("%s", phone->data[i].addr, addrsize);
}
}
//5. 显示所有联系人信息
void playtext(count phone)
{
int i = 0;
for (i = 0; i < phone->sx; i++)
{
printf("%s ", phone->data[i].name);
printf("%s ", phone->data[i].sex);
printf("%d ", phone->data[i].age);
printf("%s ", phone->data[i].tell);
printf("%s \n ", phone->data[i].addr);
}
}
//6. 清空所有联系人
void deletetext(count phone)
{
phone->sx = 0;
}
//7. 以名字排序所有联系人
void paixutext(count phone)
{
int i = 0;
int j = 0;
for (i = 0; i < phone->sx; i++)
{
for (j = 0; j < i; j++)
if (strcmp(phone->data[i].name, phone->data[j].name) < 0)
{
struct text1000 p = phone->data[i];
phone->data[i] = phone->data[j];
phone->data[j] = p;
}
}
}
void menu()
{
printf("***************菜单***********\n");
printf("***********9. 初始化 ***********\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");
}
int main()
{
int a = 9;
struct Counttext phone;
while(a!=8){
switch (a)
{
case 9:{Init(&phone); break; }
case 1:{Add(&phone); break; }
case 2:{serchtext(&phone); break; }
case 3:{pushtext(&phone); break; }
case 4:{changetext(&phone); break; }
case 5:{paixutext(&phone); break; }
case 6:{deletetext(&phone); break; }
case 7:{playtext(&phone); break; }
case 8:{exit(1); break; }
}
menu();
printf("请选择需要的选项:");
scanf_s("%d", &a);
}
system("pause");
return 0;
}