c语言通讯录打电话,C语言实现简易通讯录 | 术与道的分享

#include

#include

#include

#include

#include

#pragma warning (disable:4996)

enum Contact //枚举变量

{

Quit, //默认为0,下面依次递增+1

Add, //1

Delect, //2

Select, //3

Alter, //4

Show, //5

Empty, //6

Sort //7

};

//打印菜单

void menu()

{

printf("#########################################################\n");

printf("############## C语言实现简易通讯录 #############\n");

printf("############## 1.添加联系人 #############\n");

printf("############## 2.删除联系人 #############\n");

printf("############## 3.查找联系人 #############\n");

printf("############## 4.修改联系人 #############\n");

printf("############## 5.显示所有联系人 #############\n");

printf("############## 6.清空联系人 #############\n");

printf("############## 7.按联系人名字排序 #############\n");

printf("############## 0.退出 #############");

}

//定义一个结构体

typedef struct Peo

{

char name[10];

char sex[5];

char Old[10];

char Phone_num[20];

char adrress[30];

}people;

people Peo[1000]; //定义一个可以存储1000用户的结构图数组

//添加联系人

int Add_Peo(people Peo[], int n)

{

int i = 0;

char select = 0;

char Rem[20];

while (select != 'N') //判断是否继续添加联系人

{

printf("姓名:");

scanf("%s", &Peo[n + i].name);

printf("性别:");

scanf("%s", &Peo[n + i].sex);

printf("年龄:");

scanf("%s", &Peo[n + i].Old);

printf("电话:");

scanf("%s", &Peo[n + i].Phone_num);

printf("地址:");

scanf("%s", &Peo[n + i].adrress);

gets(Rem); //读取字符串

printf("\n是否继续添加?(Y/N):");

scanf("%c", &select);

i++;

}

return (n + i);

}

//删除联系人

int Del_Peo(people Peo[], int n)

{

int i = 0;

int j = 0;

char Name[15];

printf("请输入你要删除联系人的姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{ //判断输入的与结构体数组中存在的是否匹配,此处为不匹配,且未到达联系人上限

i++;

}

if (i == n) //结构体的出口,说明到达联系人上限

{

printf("没有此联系人!\n\n");

return n;

}

for (j = i; j < n - 1; j++) //找到匹配的联系人,删除后,将删除处之后的数据前移一位

{

strcpy(Peo[j].name, Peo[j + 1].name);

strcpy(Peo[j].sex, Peo[j + 1].sex);

strcpy(Peo[j].Old, Peo[j + 1].Old);

strcpy(Peo[j].Phone_num, Peo[j + 1].Phone_num);

strcpy(Peo[j].adrress, Peo[j + 1].adrress);

}

printf("删除成功!\n");

return (n - 1);

}

//查找联系人

void Sel_Peo(people Peo[], int n)

{

char Name[15];

int i = 0;

printf("请输入要查看联系人的姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{

i++;

}

if (i == n)

{

printf("查找的联系人不存在!\n\n");

}

else

{

printf("姓名:%s\n", Peo[i].name);

printf("性别:%s\n", Peo[i].sex);

printf("年龄:%s\n", Peo[i].Old);

printf("电话:%s\n", Peo[i].Phone_num);

printf("地址:%s\n", Peo[i].adrress);

}

printf("\n");

}

//修改联系人信息

void Alter_Peo(people Peo[], int n)

{

int i = 0;

char Name[15];

printf("请输入你要修改的联系人姓名:");

scanf("%s", Name);

while ((strcmp(Peo[i].name, Name) != 0) && (i < n))

{

i++;

}

if (i == n)

{

printf("未查到此联系人!\n\n");

}

else

{

printf("姓名:");

scanf("%s", &Peo[i].name);

printf("性别:");

scanf("%s", &Peo[i].sex);

printf("年龄:");

scanf("%s", &Peo[i].Old);

printf("电话:");

scanf("%s", &Peo[i].Phone_num);

printf("地址:");

scanf("%s", &Peo[i].adrress);

}

}

//显示所有联系人信息

void Show_Peo(people Peo[], int n)

{

int i = 0;

printf(" 姓名 性别 年龄 电话 地址\n");

for (i = 0; i < n; i++)

{

printf("%7s%6s%8s%14s%15s\n", Peo[i].name, Peo[i].sex, Peo[i].Old, Peo[i].Phone_num, Peo[i].adrress);

}

printf("\n");

}

//清空联系人信息

void Empty_Peo(people Peo[], int n)

{

int i = 0;

for (i = 0; i < n; i++)

{

*Peo[i].name = '\0';

*Peo[i].sex = '\0';

*Peo[i].Old = '\0';

*Peo[i].Phone_num = '\0';

*Peo[i].adrress = '\0';

}

printf("\n");

}

//按联系人名字排序

void Sort_Peo(people Peo[], int n)

{

int i = 0;

int j = 0;

struct Peo tmp;

for (i = 0; i < n - 1; i++)

{

for (j = i; j < n; j++)

{

if ((strcmp(Peo[i].name, Peo[j].name)) > 0)

{

tmp = Peo[i];

Peo[i] = Peo[j];

Peo[j] = tmp;

}

}

}

}

int main()

{

int input = 1;

int ret = 0;

while (input)

{

menu();

printf("\n请选择-->");

scanf("%d", &input);

switch (input)

{

case Add:

ret = Add_Peo(Peo, ret);

break;

case Delect:

ret = Del_Peo(Peo, ret);

break;

case Select:

Sel_Peo(Peo, ret);

break;

case Alter:

Alter_Peo(Peo, ret);

break;

case Show:

Show_Peo(Peo, ret);

break;

case Empty:

Empty_Peo(Peo, ret);

break;

case Sort:

Sort_Peo(Peo, ret);

break;

case Quit:

exit(0);

break;

default:

break;

}

}

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值