C语言使用结构体实现简单通讯录

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

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

提供方法:

1. 添加联系人信息

2. 删除指定联系人信息

3. 查找指定联系人信息

4. 修改指定联系人信息

5. 显示所有联系人信息

6. 清空所有联系人

代码实现:

头文件:

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

#define __HEAD_H__

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#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("name\tsex\tage\ttel\taddr\t\n");

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

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

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

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

printf("%s\t\n",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("name\tsex\tage\ttel\t\taddr\t\n"); //制表符来制作表头

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

{

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

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

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

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

printf("%s\t\n",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");

}

主函数:

#include"head.h"

int main()

{

int n=1;

struct Contact people; //调用通讯录结构体

people.user_count = 0; //初始化user_count

while(n)

{

menu();

printf("please input\n");

scanf("%d",&n);

switch(n)

{

case 1:

{

add_contact(&people);

break;

}

case 2:

{

dele_contact(&people);

break;

}

case 3:

{

find_contact(&people);

break;

}

case 4:

{

modify_contact(&people);

break;

}

case 5:

{

show_contact(&people);

break;

}

case 6:

{

clear_contact(&people);

break;

}

default:

{

return 0;

break;

} //switch case语句分支选择不同函数实现不同作用

}

}

return 0;

}

结果实现:

以上是 C语言使用结构体实现简单通讯录 的全部内容, 来源链接: utcz.com/z/353120.html

回到顶部