c语言通讯录结构体编程,C语言使用结构体实现简单通讯录

该博客介绍了如何使用C语言创建一个通讯录管理程序,包括添加、删除、查找、修改和显示联系人信息的功能。程序通过结构体存储每个联系人的详细信息,如姓名、性别、年龄、电话和地址,并提供了相应的操作函数来实现各项功能。
摘要由CSDN通过智能技术生成

C语言用结构体实现一个通讯录,通讯录可以用来存储1000个人的信息,每个人的信息包括:

姓名、性别、年龄、电话、住址

提供方法:

1. 添加联系人信息

2. 删除指定联系人信息

3. 查找指定联系人信息

4. 修改指定联系人信息

5. 显示所有联系人信息

6. 清空所有联系人

代码实现:

头文件:

#ifndef __HEAD_H__ 防止头文件被多次调用

#define __HEAD_H__

#include

#include

#include

#define PEOPLE_MAX 1000

#define NAME_LENTH 20

#define SEX_LENTH 5

#define AGE_LENTH 10

#define TEL_LENTH 15

#define ADDR_LENTH 50 //宏定义各个数据所需的大小,后续引用直接可以使用名称,或需修改时只用修改这里就可以了

struct People

{

char name[NAME_LENTH];

char sex[SEX_LENTH];

int age;

char tel[TEL_LENTH ];

char addr[ADDR_LENTH];

}; //定义人的信息结构体(包含各种信息)

struct Contact

{

struct People person[PEOPLE_MAX];

int user_count;

}; //定义通讯录结构体(包含人的信息的结构体和用户个数)

typedef struct Contact * pContact;

int add_contact(pContact pcon); //pContact是一个结构体指针类型,pcon是一个指向struct Contact的一个指针

int dele_contact(pContact pcon); //例如:typedef int * int 即 int *p ==> int p

int find_contact(pContact pcon);

int modify_contact(pContact pcon);

int show_contact(pContact pcon);

int clear_contact(pContact pcon);

void menu(); //函数的声明

#endif

各种函数实现:

#include"head.h"

int add_contact(pContact pcon)

{

if(pcon->user_count >= PEOPLE_MAX)

{

printf("contact is full!n");

return -1;

}

else

{

printf("input name,please!n");

scanf("%s",pcon->person[pcon->user_count].name);

printf("input sex,please!n");

scanf("%s",pcon->person[pcon->user_count].sex);

printf("input age,please!n");

scanf("%d",&pcon->person[pcon->user_count].age); //这里用%d输出int

printf("input tel,please!n");

scanf("%s",pcon->person[pcon->user_count].tel);

printf("input addr,please!n");

scanf("%s",pcon->person[pcon->user_count].addr);

(pcon->user_count)++;

}

return 0;

} //添加信息的实现

int dele_contact(pContact pcon)

{

int ret = find_contact(pcon); //调用查找函数并保存其值

if(ret != -1)

{

int i = 0;

i = ret; //这里要用另一个变量来保存输入的姓名

for(i = 0;i < pcon->user_count-1;i++)

{

pcon->person[i] = pcon->person[i+1]; //用后一个覆盖前边的,如果要删除的是最后一个不进行此步骤

}

pcon->user_count --; //直接减去最后一个即count--

}

return 0;

}

int find_contact(pContact pcon)

{

int i = 0;

char ret[NAME_LENTH]; //用另一个数组来保存name

printf("input name,please!n");

scanf("%s",ret);

while(i <= pcon->user_count)

{

if(strcmp(ret,pcon->person[i].name)== 0) //比较输入的姓名和通讯录中已有的姓名

{

printf("nametsextagetteltaddrtn");

printf("%st",pcon->person[i].name);

printf("%st",pcon->person[i].sex);

printf("%dt",pcon->person[i].age);

printf("%st",pcon->person[i].tel);

printf("%stn",pcon->person[i].addr);

return i;

}

i++;

}

printf("sorry,the name you find is not exist!n");

return -1;

}

int modify_contact(pContact pcon) //修改函数,首先找到如要修改的姓名,然后重新输入

{

int ret = find_contact(pcon);

if(ret != -1)

{

printf("input name,please!n");

scanf("%s",pcon->person[ret].name);

printf("input sex,please!n");

scanf("%s",pcon->person[ret].sex);

printf("input age,please!n");

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

printf("input tel,please!n");

scanf("%s",pcon->person[ret].tel);

printf("input addr,please!n");

scanf("%s",pcon->person[ret].addr);

}

else

{

printf("sorry,the name you find is not exist!n");

}

return 0;

}

int show_contact(pContact pcon)

{

int i = 0;

printf("nametsextagettelttaddrtn"); //制表符来制作表头

for(i = 0;i < pcon->user_count;i++)

{

printf("%st",pcon->person[i].name);

printf("%st",pcon->person[i].sex);

printf("%dt",pcon->person[i].age);

printf("%st",pcon->person[i].tel);

printf("%stn",pcon->person[i].addr);

}

printf("n");

return 0;

}

int clear_contact(pContact pcon)

{

pcon->user_count = 0 ;

return 0;

} //清除所有人,直接让成员个数变为0即可

void menu()

{

printf("-------contact---------n");

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

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

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

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

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

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

printf(" 0.谢谢使用 n");

printf("-------contact---------n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值