您的位置:首页 > 其它

2.实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联

2018-03-25 18:20 896 查看
实现一个通讯录  通讯录可以用来存储1000个人的信息,每个人的信息包括:  姓名、性别、年龄、电话、住址   提供方法: 1.添加联系人信息 2.删除指定联系人信息  3.查找指定联系人4.修改联系人信息5.显示所有联系人信息 6. 清空所有联系人 
7. 以名字排序所有联系人Address.h
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#pragma once

#define NameMax 20
#define SexMax 3
#define TelMax 11
#define AddressMax 20
#define PeopleMax 1000

typedef char Persontype;

typedef struct PERSON
{
Persontype Name[NameMax];//  姓名
Persontype Sex[SexMax];  // 性别
int Age;          // 年龄
Persontype Tel[TelMax]; //联系方式
Persontype Address[AddressMax]; //地址

}Person;

typedef struct BOOK
{
Person Data[PeopleMax];//Address_Book结构体最大存储容量
int count;    //当前已存储人数
}Book;

void Initbook(Book* people); //初始化

void show_person(Book* people);//打印

void Add_person(Book *people);// 增加成员

void Del_person(Book* people);//删除成员

int Find_person(Book* people);//查找成员

void Change_person(Book* people);//修改成员

void BubbleSort_person(Book* people);//冒泡排序

Address.c

#include<stdio.h>
#include"Address.h"

//初始化
void Initbook(Book* people)
{
people->count = 0;
}

//打印
void show_person(Book* people)
{
if(people == NULL)
{
printf("空通讯录!\n");
return;
}
if(people->count == 0)
{
printf("空通讯录!\n");
}
int i = 0;
for(;i <=people->count-1;++i)
{
printf("Name:%s\n",people->Data[i].Name);
printf("Sex:%s\n",people->Data[i].Sex);
printf("Age:%d\n",people->Data[i].Age);
printf("Tel:%s\n",people->Data[i].Tel);
printf("Add:%s\n",people->Data[i].Address);
}
printf("\n");
}

//增加成员
void Add_person(Book *people)
{
assert(people);
int i = 0;
if (people->count > PeopleMax)
{
printf("通讯录已满!\n");
return;
}
printf("请输入姓名:\n");
scanf("%s", (people->Data[people->count]).Name);
printf("请输入性别:\n");
scanf("%s", (people->Data[people->count]).Sex);
printf("请输入年龄:\n");
scanf("%d", &(people->Data[people->count]).Age);
printf("请输入联系方式:\n");
scanf("%s", (people->Data[people->count]).Tel);
//for(;i<people->count;++i)
//{
//    if(strcmp(people->Data[i].Tel, people->Data[people->count].Tel) == 0)
//    {
//        printf("输入有误或联系人已存在!\n");
//    }
//    return;
//}
printf("请输入住址:\n");
scanf("%s", (people->Data[people->count]).Address);
printf("增加成功!\n");
people->count++;
printf("count = %d\n",people->count);

}
//删除成员
void Del_person(Book* people)
{
if(people == NULL)
{
printf("空通讯录!\n");
return;
}
int ret = Find_person(people);
if(ret != -1)
{
int i = ret;
for(;i<people->count-1;++i)
{
people->Data[i] = people->Data[i+1];
}
people->count--;
printf("count = %d\n",people->count);
}
else
{
printf("没有该成员!\n");
}
}

//查找成员
int Find_person(Book* people)
{
assert(people);
char name[20];
scanf("%s",name);
int i = 0;
for(;i<people->count;++i)
{
if(strcmp(people->Data[i].Name,name) == 0)
{
printf("Name:%s\tSex:%s\tAge:%d\tTel:%s\tAdd\n",people->Data[i].Name,people->Data[i].Sex,people->Data[i].Age,people->Data[i].Tel,people->Data[i].Address);
return i;
printf("下标为 %d\n",i);
}
}
printf("没有找到该联系人!\n");
return -1;
}

//修改成员
void Change_person(Book* people)
{
assert(people);
int ret = Find_person(people);
if(ret != -1)
{
printf("Name->:\n");
scanf("%s",people->Data[ret].Name);
printf("Sex->:\n");
scanf("%s",people->Data[ret].Sex);
printf("Age->:\n");
scanf("%d",&(people->Data[ret]).Age);
printf("Tel->:\n");
scanf("%s",people->Data[ret].Tel);
printf("Add->:\n");
scanf("%s",people->Data[ret].Address);
}
else
{
printf("没有该成员!\n");
return;
}
}

void BubbleSort_person(Book* people)
{
if(people == NULL)
{
printf("空通讯录!\n");
return;
}
int i = 0;
for(;i<people->count-1;++i)
{
int j = 0;
for(;j<people->count-1-i;++j)
{
if(strcmp(people->Data[j].Name,people->Data[j+1].Name) > 0)
{
char tmp[NameMax];
strcpy(tmp,people->Data[j].Name);
strcpy(people->Data[j].Name,people->Data[j+1].Name);
strcpy(people->Data[j+1].Name,tmp);
}
}
}
show_person(people);
}

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("*********8  退出*********************\n");
}

int main()
{
Book people;
Initbook(&people);
while(1)
{
menu();
int n = 0;
scanf("%d",&n);
switch(n)
{
case 1:
Add_person(&people);
break;
case 2:
Del_person(&people);
break;
case 3:
Find_person(&people);
break;
case 4:
Change_person(&people);
break;
case 5:
show_person(&people);
break;
case 6:
Initbook(&people);
break;
case 7:
BubbleSort_person(&people);
break;
case 8:
exit(0);
default:
{
printf("input error!\n");
break;
}
}
}
return 0;
}
Makefile
Address:Address.o
gcc -o $@ $^

.c.o:
gcc -c $<

.PHONY:clean
clean:
rm *.o Address
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐