c语言通讯录的录入,查找,统计,插入,删除,排序 使用文件,【通讯录系统】:实现一个通讯录(可添加、删除、修改、查找、显示、清空、排序)...

#define _CRT_SECURE_NO_WARNINGS 1

#include

#include

#include

#define NAME_MAX 10

#define SEX_MAX 3

#define AGE_MAX 100

#define TEL_MAX 15

#define ADDR_MAX 20

#define PEOPLE_MAX 1000

typedef struct LINK

{

char name[NAME_MAX];

char sex[SEX_MAX];

int age;

char tel[TEL_MAX];

char addr[ADDR_MAX];

}linkman;

typedef struct PEOPLE

{

int num;

linkman count[1000];

}*people;

int search(people cou, char *name)

{

int i = 0;

for (; i num; i++)

{

if (strcmp(name, (cou->count[i]).name) == 0)

return i;

}

return -1;

}

void add_linkman(people cou)//添加联系人

{

if (cou->num == 1000)

{

printf("该通讯录已满,无法录入信息!\n");

}

printf("please input name>:\n");

scanf("%s", (cou->count[cou->num]).name);

printf("please input the sex>:\n");

scanf("%s", (cou->count[cou->num]).sex);

printf("please input the age>:\n");

scanf("%d", &(cou->count[cou->num]).age);

printf("please input the telephone>:\n");

scanf("%s", (cou->count[cou->num]).tel);

printf("please input the address>:\n");

scanf("%s", (cou->count[cou->num]).addr);

cou->num++;

}

void delete_linkman(people cou)//删除联系人

{

char name[NAME_MAX];

int i = 0;

if (cou->num == 0)

{

printf("该通讯录已空,无法删除信息!\n");

return;

}

printf("请输入要删除人的名字>:");

scanf("%s", &name);

printf("\n");

int ret = search(cou, name);

if (ret == -1)

{

printf("此人不存在,删除失败!\n");

}

else

{

for (i = ret; i num; i++)

{

cou->count[i] = cou->count[i + 1];

}

cou->num--;

}

}

void find_linkman(people cou)//查找联系人

{

char name[NAME_MAX];

int i = 0;

printf("请输入要查找人的名字>:");

scanf("%s", name);

if (cou->num == 0)

{

printf("当前为空表,查找失败!\n");

return;

}

int ret = search(cou, name);

if (ret != -1)

{

printf("%s\t%s\t%d\t%s\t%s\n",

(cou->count[ret]).name,

(cou->count[ret]).sex,

(cou->count[ret]).age,

(cou->count[ret]).tel,

(cou->count[ret]).addr);

}

else

{

printf("此联系人不存在,查找失败!\n");

}

}

void change_linkman(people cou)//修改指定人信息

{

char name[NAME_MAX];

int i = 0;

printf("请输入要修改人的名字>:");

scanf("%s", name);

if (cou->num == 0)

{

printf("当前为空表,查找失败!\n");

return;

}

int ret = search(cou, name);

if (ret != -1)

{

printf("please input name again>:\n");

scanf("%s", (cou->count[ret]).name);

printf("please input the sex>:\n");

scanf("%s", (cou->count[ret]).sex);

printf("please input the age>:\n");

scanf("%d", &(cou->count[ret]).age);

printf("please input the telephone>:\n");

scanf("%s", (cou->count[ret]).tel);

printf("please input the address>:\n");

scanf("%s", (cou->count[ret]).addr);

}

}

void display_linkman(people cou)//显示所有联系人

{

int i = 0;

if (cou->num == 0)

{

printf("当前为空表,显示失败!\n");

return;

}

for (i = 0; i num; i++)

{

printf("%s\t%s\t%d\t%s\t%s",

(cou->count[i]).name,

(cou->count[i]).sex,

(cou->count[i]).age,

(cou->count[i]).tel,

(cou->count[i]).addr);

printf("\n");

}

}

void empty_linkman(people cou)//清空所有联系人

{

cou->num = 0;

}

struct stu

{

char name[15];

};

void name_sort(people cou)//按名字顺序排序所有人

{

int i = 0;

int j = 0;

if (cou->num == 0)

{

printf("当前为空表,排序失败!\n");

return;

}

for (i = 0; i num - 1; i++)

{

for (j = 0; j num - i - 1; j++)

{

if (strcmp(cou->count[j].name, (cou->count[j + 1]).name)>0)

{

linkman tmp = cou->count[j];

cou->count[j] = cou->count[j + 1];

cou->count[j + 1] = tmp;

}

}

}

}

void menu()

{

printf("************************************\n");

printf("**********1.添加联系人信息**********\n");

printf("********2.删除指定联系人信息********\n");

printf("********3.查找指定联系人信息********\n");

printf("********4.修改指定联系人信息********\n");

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

printf("********6.清空所有联系人************\n");

printf("*******7.以名字排序所有联系人*******\n");

printf("***************0 退出***************\n");

printf("************************************\n");

}

int main()

{

int opp = 1;

struct PEOPLE cou;

cou.num = 0;

while (opp)

{

menu();

printf("请选择>:");

scanf("%d", &opp);

switch (opp)

{

case 0:

exit(EXIT_FAILURE);

break;

case 1:

add_linkman(&cou);

break;

case 2:

delete_linkman(&cou);

break;

case 3:

find_linkman(&cou);

break;

case 4:

change_linkman(&cou);

break;

case 5:

display_linkman(&cou);

break;

case 6:

empty_linkman(&cou);

break;

default:

{

printf("输入有误,请重新输入>:\n");

break;

}

}

}

system("pause");

return 0;

}

如下图(部分截图):

9feba85f25350d9aa11d1b41c276502f.png

7cd717de44c90ab89247f4982c28b7f8.png

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值