用c语言实现 一个通讯录(实现 增加、删除、查找、修改、显示、清空功能)

源程序头文件contact.h

#ifndef _CONTACT_H__

#define _CONTACT_H__
#define NAME_MAX 20
#define SEX_MAX 5
#define TELE_MAX 15
#define ADDR_MAX 50
#define PEO_MAX 1000

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct people
{
	char name[NAME_MAX];
	char sex[SEX_MAX];
	int age;
	char tele[TELE_MAX];
	char addr[ADDR_MAX];
}*pPeople;

typedef struct contact
{
	struct people dhb[PEO_MAX];
    int count;
}*pCon;

void add_peo(pCon pcon);
void del_peo(pCon pcon);
void search_peo(pCon pcon);
void modify_peo(pCon pcon);
void show_peo(pCon pcon);
void clear_peo(pCon pcon);

#endif
</pre>源程序函数段实现<p></p><p></p><p></p><pre name="code" class="cpp">#include "contact.h"

int find(pCon pcon,char * name)
{
	int i=0;
	while(i<pcon->count)
	{
		if(strcmp(name,pcon->dhb[i].name)==0)//查找到匹配的姓名就输出i
			return i;
		i++;
	}	
		return -1;
	
}

void add_peo(pCon pcon)//增加存储人函数
{
	//判断
	if(pcon->count==PEO_MAX)
	{
		printf("存储空间已满\n");
		return ;
	}
	printf("name:>");
	scanf("%s",(pcon->dhb[pcon->count]).name);
	printf("sex:>");
	scanf("%s",(pcon->dhb[pcon->count]).sex);
	printf("age:>");
	scanf("%d",&((pcon->dhb[pcon->count]).age));
	printf("tele:>");
	scanf("%s",(pcon->dhb[pcon->count]).tele);
	printf("addr:>");
	scanf("%s",(pcon->dhb[pcon->count]).addr);
	pcon->count++;
}
void del_peo(pCon pcon)//删除函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要删除的姓名:>");
	scanf("%s",tmpName);
	ret=find(pcon,tmpName);
	if(-1 != ret)
	{
		int j=ret;
		for(;j<pcon->count-1;j++)
		{
			pcon->dhb[j]=pcon->dhb[j+1];//用后面的数据覆盖所要删除的数据
		}
		pcon->count--;//存储人数减少一位
	}
	else
	{
		printf("找不到所要删除的信息\n");
	}
}
void search_peo(pCon pcon)//查找函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要查找的姓名:>");
	scanf("%s",tmpName);
	ret = find(pcon,tmpName);
	if(ret != -1)
	{
		printf("%s\t%s\t%d\t%s\t%s\t\n",
			pcon->dhb[ret].name,
			pcon->dhb[ret].sex,
			pcon->dhb[ret].age,
			pcon->dhb[ret].tele,
			pcon->dhb[ret].addr);
		
	}
	else
	{
		printf("不存在所要查找的信息\n");
	}
}
void modify_peo(pCon pcon)//修改数据函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要修改的姓名:>");
	scanf("%s",tmpName);
	ret = find(pcon,tmpName);
	if(-1 != ret)//找到修改姓名之后重新赋值
	{
		printf("name:>");
			scanf("%s",(pcon->dhb[ret]).name);
			printf("sex:>");
			scanf("%s",(pcon->dhb[ret]).sex);
			printf("age:>");
			scanf("%d",&((pcon->dhb[ret]).age));
			printf("tele:>");
			scanf("%s",(pcon->dhb[ret]).tele);
			printf("addr:>");
			scanf("%s",(pcon->dhb[ret]).addr);
	}
}
void show_peo(pCon pcon)//显示函数
{
	int i;
	for(i=0;i<pcon->count;i++) //显示并打印说有联系人信息
	{
		printf("%s\t%s\t%d\t%s\t%s\t\n",
			pcon->dhb[i].name,
			pcon->dhb[i].sex,
			pcon->dhb[i].age,
			pcon->dhb[i].tele,
			pcon->dhb[i].addr);
	}
}
void clear_peo(pCon pcon)//清除所有联系人信息
{
	pcon->count = 0;
}
</pre><p></p><p>源程序主函数调用段</p><p></p><p></p><pre name="code" class="cpp">#include "contact.h"

void show_menu()
{
	printf("***************************\n");
	printf("*   1>add       2>del     *\n");
	printf("*   3>search    4>modify  *\n");
	printf("*   5>show      6>clear   *\n");
	printf("***************************\n");
}
int main()
{
	struct contact my_contact;
	int input=1;
	my_contact.count = 0;
	
	while(input)
	{
		show_menu();
		printf("please input:>");
		scanf("%d",&input);
		switch(input)//判断并调用函数
		{
		case 1:
			{
				add_peo(&my_contact);
				system("cls");//调用清屏函数
			    break;
			}
		case 2:
			{
				del_peo(&my_contact);
				system("cls");//调用清屏函数
				break;
			}
		case 3:
			search_peo(&my_contact);
			break;
		case 4:
			{
				modify_peo(&my_contact);
				system("cls");//调用清屏函数
				break;
			}
		case 5:
			show_peo(&my_contact);
			break;
		case 6:
			clear_peo(&my_contact);
			break;
		default:
			break;
		}
	}
	return 0;
}

增加联系人函数

void add_peo(pCon pcon)//增加存储人函数
{
	//判断
	if(pcon->count==PEO_MAX)
	{
		printf("存储空间已满\n");
		return ;
	}
	printf("name:>");
	scanf("%s",(pcon->dhb[pcon->count]).name);
	printf("sex:>");
	scanf("%s",(pcon->dhb[pcon->count]).sex);
	printf("age:>");
	scanf("%d",&((pcon->dhb[pcon->count]).age));
	printf("tele:>");
	scanf("%s",(pcon->dhb[pcon->count]).tele);
	printf("addr:>");
	scanf("%s",(pcon->dhb[pcon->count]).addr);
	pcon->count++;
}

技术分享


删除联系人函数

void del_peo(pCon pcon)//删除函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要删除的姓名:>");
	scanf("%s",tmpName);
	ret=find(pcon,tmpName);
	if(-1 != ret)
	{
		int j=ret;
		for(;j<pcon->count-1;j++)
		{
			pcon->dhb[j]=pcon->dhb[j+1];//用后面的数据覆盖所要删除的数据
		}
		pcon->count--;//存储人数减少一位
	}
	else
	{
		printf("找不到所要删除的信息\n");
	}
}

技术分享技术分享


查找联系人函数段


void search_peo(pCon pcon)//查找函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要查找的姓名:>");
	scanf("%s",tmpName);
	ret = find(pcon,tmpName);
	if(ret != -1)
	{
		printf("%s\t%s\t%d\t%s\t%s\t\n",
			pcon->dhb[ret].name,
			pcon->dhb[ret].sex,
			pcon->dhb[ret].age,
			pcon->dhb[ret].tele,
			pcon->dhb[ret].addr);
		
	}
	else
	{
		printf("不存在所要查找的信息\n");
	}
}

技术分享


修改联系人函数段


void modify_peo(pCon pcon)//修改数据函数
{
	char tmpName[NAME_MAX];
	int ret=0;
	printf("请输入你所要修改的姓名:>");
	scanf("%s",tmpName);
	ret = find(pcon,tmpName);
	if(-1 != ret)//找到修改姓名之后重新赋值
	{
		printf("name:>");
			scanf("%s",(pcon->dhb[ret]).name);
			printf("sex:>");
			scanf("%s",(pcon->dhb[ret]).sex);
			printf("age:>");
			scanf("%d",&((pcon->dhb[ret]).age));
			printf("tele:>");
			scanf("%s",(pcon->dhb[ret]).tele);
			printf("addr:>");
			scanf("%s",(pcon->dhb[ret]).addr);
	}
}

技术分享技术分享



显示联系人函数段


void show_peo(pCon pcon)//显示函数
{
	int i;
	for(i=0;i<pcon->count;i++) //显示并打印说有联系人信息
	{
		printf("%s\t%s\t%d\t%s\t%s\t\n",
			pcon->dhb[i].name,
			pcon->dhb[i].sex,
			pcon->dhb[i].age,
			pcon->dhb[i].tele,
			pcon->dhb[i].addr);
	}
}

技术分享


清空联系人函数段


void clear_peo(pCon pcon)//清除所有联系人信息
{
	pcon->count = 0;
}

技术分享

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。