C语言实现电话簿

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

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

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

头文件Contact.h

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
enum
{
	EXIT,
	ADD,
	DEL,
	SEARCH,
	MODIFY,
	SHOW,
	EMPTY,
	SORT
};
#define MAX_NAME 20
#define MAX_SEX 5
#define MAX 1000
#define MAX_NUM 11
#define GRE 20
typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char num[MAX_NUM];
	char gre[GRE];
}PeoInfo;
typedef struct Contact
{
	PeoInfo data[MAX];
	int count;
}Contact, *pContact;
void InitContact(pContact pc);//通讯录初始化
void AddContact(pContact pc);//	添加联系人信息
void DelContact(pContact pc);//删除指定联系人信息 
int SearchContact(char name[],pContact pc);//查找指定联系人信息
void ModifyContact(pContact pc);//	修改指定联系人信息
void ShowContact(pContact pc);//	显示所有联系人信息 
void EmptyContact(pContact pc);//清空所有联系人 
void SortContact(pContact pc);//以名字排序所有联系人

各个函数的实现Contact.c

#define _CRT_SECURE_NO_WARNINGS 1
#include"Contact.h"
void InitContact(pContact pc)
{
	pc->count = 0;
	memset(pc->data, 0, sizeof(pc->data));//置0
}
void AddContact(pContact pc)
{
	if (pc->count == MAX)
	{
		printf("通讯录已满\n");
		return;
	}
	printf("请输入名字:>");
	scanf("%s", pc->data[pc->count].name);
	printf("请输入年龄:>");
	scanf("%d", &(pc->data[pc->count].age));
	printf("请输入性别:>");
	scanf("%s", pc->data[pc->count].sex);
	printf("请输入电话:>");
	scanf("%s",pc->data[pc->count].num);
	printf("请输入住址:>");
	scanf("%s",pc->data[pc->count].gre);
	pc->count++;
}
void DelContact(pContact pc)
{
	char name[MAX_NAME] = {0};
	int i = 0;
	int j = 0;
	if (pc->count == 0)
	{
		printf("通讯录是空的\n");
		return;
	}
	//删除
	printf("输入要删除的人名字");
	scanf("%s",name);
	i = SearchContact(name,pc);
	if (i == -1)
	{
		printf("没有找到这个人");
	}
	for (j = i; j < pc->count-1; j++)
	{
		pc->data[j] = pc->data[j + 1];
	}
	pc->count--;
}
int SearchContact(char name[],pContact pc)
{
	int i = 0;
	for (i = 0; i < pc->count; i++)
	{
		if(strcmp((pc->data[i].name),name)==0);
		{
			printf("%d\n",i);
			return i;
		}
	}
	return -1;
}
void ModifyContact(pContact pc)
{
	int i = 0;
	char name[MAX_NAME] = { 0 };
	if (pc->count == 0)
	{
		printf("通讯录为空");
		return;
	}
	printf("请输入要修改的人名字");
	scanf("%s",name);
	i = SearchContact(name, pc);
	if (i == -1)
	{
		printf("没有找到这个人\n");
	}
	else
	{
		printf("输入名字:>");
		scanf("%s", pc->data[i].name);
		printf("输入年龄:>");
		scanf("%d", &(pc->data[i].age));
		printf("输入性别:>");
		scanf("%s", pc->data[i].sex);
		printf("输入手机号:>");
		scanf("%s", pc->data[i].num);
		printf("输入地址:>");
		scanf("%s", pc->data[i].gre);
	}
}
void ShowContact(pContact pc)
{
	int i = 0;
	if (pc->count == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	for (i = 0; i<pc->count; i++)
	{
		printf("%s %d %s %s %s\n", pc->data[i].name, pc->data[i].age, pc->data[i].sex,pc->data[i].num,pc->data[i].gre);
	}
	printf("-----------------------------\n");
}
void EmptyContact(pContact pc)
{
	pc->count = 0;
	memset(pc->data, 0, sizeof(pc->data));//置0
	printf("已经清除成功\n");
}
void SortContact(pContact pc)
{
	int i = 0;
	int j = 0;
	PeoInfo tmp;
	if (pc->count == 0)
	{
		printf("通讯录为空\n");
		return;
	}
	for (i = 0; i < pc->count-1; i++)//对名字进行冒泡排序
	{
		for (j = 0; j < pc->count - i - 1; j++)
		{
			if ((strcmp((pc->data[j].name), pc->data[j+1].name)) > 0)
			{
				tmp = pc->data[j];
				pc->data[j] = pc->data[j + 1];
				pc->data[j + 1] = tmp;
			}
		}
	}
}

主函数main.c

#define _CRT_SECURE_NO_WARNINGS 1
#pragma once
#include<stdio.h>
#include"Contact.h"
void menu()
{
	printf("**************************\n");
	printf("******1.add     2.del*****\n");
	printf("******3.sea     4.mod*****\n");
	printf("******5.show    6.emp*****\n");
	printf("******7.sort   0.exit*****\n");
	printf("**************************\n");
}
int main()
{
	int input = 0;
	Contact my_con;
	char name[MAX_NAME] = { 0 };
	InitContact(&my_con);
	do
	{
		menu();
		printf("请选择你的操作:>");
		scanf("%d", &input);
		switch (input)
		{
			case ADD:
				AddContact(&my_con);
				break;
			case DEL:
				DelContact(&my_con);
				break;
			case SEARCH:
			{
				printf("输入要查找的名字\n");
				scanf("%s",name);
				SearchContact(name, &my_con);
				break;
			}
			case MODIFY:
				ModifyContact(&my_con);
				break;
			case SHOW:
				ShowContact(&my_con);
				break;
			case EMPTY:
				EmptyContact(&my_con);
				break;
			case SORT:
				SortContact(&my_con);
		}
	} while (input);
	system("pause");
	return 0;
}



猜你喜欢

转载自blog.csdn.net/CHR_1s/article/details/80302869