c语言实现简单的通讯录

实现一个通讯录; 
通讯录可以用来存储1000个人的信息,每个人的信息包括: 
姓名、性别、年龄、电话、住址 

提供方法: 
1. 添加联系人信息 
2. 删除指定联系人信息 
3. 查找指定联系人信息 
4. 修改指定联系人信息 
5. 显示所有联系人信息 
6. 清空所有联系人 

7. 以名字排序所有联系人

#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#pragma warning (disable:4996)
#define MAX 1000

typedef struct man    
{
	char name[10];
	char sex[5];
	int age;
	int plone_Num;
	char add[20];
}list;

typedef struct men
{
	struct man list[MAX];
	int count;
}men;

void test();
void menu();
int find(men *p, char*name);
void add(men *p);
void my_delete(men *p);
void search(men *p);
void change(men *p);
void display(men *p);
void empty(men *p);
void sort_name(men *p);

struct men book;

int main()
{
	book.count = 0;
	test();
	system("pause");
	return 0;
}

void test()
{
	int select = 0;
	do
	{
		//system("cls");
		menu();
		printf("please select <0-7>:\n");
		scanf("%d", &select);
		switch (select)
		{
		case 1:
			add(&book);
			break;
		case 2:
			my_delete(&book);
			break;
		case 3:
			search(&book);
			break;
		case 4:
			change(&book);
			break;
		case 5:
			display(&book);
			break;
		case 6:
			empty(&book);
			break;
		case 7:
			sort_name(&book);
			break;
		case 0:
			exit(0);
			break;
		default:
			printf("error,please try again!");
			break;
		}
	} while (1);
	
}


void menu()
{
	printf("******************************************\n");
	printf("***   1、添加                2、删除   ***\n");
	printf("***   3、查找                4、修改   ***\n");
	printf("***   5、显示                6、清空   ***\n");
	printf("***   7、按姓名排序          0、退出   ***\n");
	printf("******************************************\n");
}

int find(men *p, char*name)  
{
	int i = 0;
	for (; i <= (p->count); i++)
	{
		if (strcmp(p->list[i].name, name) == 0)
		{
			return i;
		}
	}
	return -1;
}

void add(men *p)  //添加
{
	if ((p->count) > MAX)
	{
		printf("通讯录已满!!!");
	}
	else
	{
		printf("姓名 性别 年龄 电话 地址\n");
 		scanf("%s %s %d %d %s", (p->list[p->count]).name, p->list[p->count].sex, &p->list[p->count].age, &p->list[p->count].plone_Num, p->list[p->count].add);

	}
	p->count++;
}

void my_delete(men *p)   //删除
{
	char name[10] = { 0 };
	int ret;
	printf("请输入要删除的联系人:");
	scanf("%s", &name);
	ret = find(p, name);
	if (ret == -1)
	{
		printf("该联系人不存在!!!");
	}
	else
	{
		int j = ret;
		for (; j < p->count; j++)
		{
			p->list[j] = p->list[j + 1];
		}
		printf("已删除!!!\n");
	}
	p->count--;
}

void search(men *p)  //查找
{
	char name[10] = { 0 };
	int ret;
	printf("请输入要查询的联系人:");
	scanf("%s", &name);
	ret = find(p, name);
	if (ret == -1)
	{
		printf("该联系人不存在!!!\n");
	}
	else
	{
		printf("姓名:%s\n", p->list[ret].name);
		printf("性别:%s\n", p->list[ret].sex);
		printf("年龄:%d\n", p->list[ret].age);
		printf("电话:%d\n", p->list[ret].plone_Num);
		printf("地址:%s\n", p->list[ret].add);
	}
}

void change(men *p)  //修改
{
	char name[10] = { 0 };
	int ret;
	printf("请输入要修改的联系人:");
	scanf("%s", &name);
	ret = find(p, name);
	if (ret == -1)
	{
		printf("该联系人不存在!!!\n");
	}
	else
	{
		printf("姓名 性别 年龄 电话 地址\n");
		scanf("%s %s %d %d %s", (p->list[ret]).name, p->list[ret].sex, &p->list[ret].age, &p->list[ret].plone_Num, p->list[ret].add);
	}
}

void display(men *p)  //显示
{
	int i = 0;
	for (; i < p->count; i++)
	{
		printf("姓名:%s\t", p->list[i].name);
		printf("性别:%s\t", p->list[i].sex);
		printf("年龄:%d\t", p->list[i].age);
		printf("电话:%d\t", p->list[i].plone_Num);
		printf("地址:%s\n", p->list[i].add);
	}
}

void empty(men *p)  //清空
{
	p->count = 0;
}

void sort_name(men *p)  //按名字排序
{
	int i = 0;
	int j = 0;
	for (; i < p->count - 1; i++)
	{
		for (; j < p->count - 1 - i; j++)
		{
			if (strcmp(p->list[j].name, p->list[j + 1].name) < 0)
			{
				list temp;
				temp = p->list[j];
				p->list[j] = p->list[j + 1];
				p->list[j + 1] = temp;
			}
		}
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_40246808/article/details/80527622