C语言写通讯录

本文用C语言完成通讯录的编写,可以实现联系人的添加,删除,修改,查找(支持模糊查找),全盘显示等功能。

话不多说直接上代码

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

static char name[50][20]={};	//	姓名
static char sex[50]={};			//	性别
static char tel[50][13]={};		//	电话

static int count = 0;			//	记录有效联系人个数

//任意键继续
void anykey(void)
{
	puts("任意键继续...");
	stdin->_IO_read_ptr = stdin->_IO_read_end;
	getch();
}

//打印提示信息
void show_msg(const char* msg,double sec)
{
	printf("%s",msg);

	fflush(stdout);
	usleep(sec*1000000);
}

void add(void)
{
	if(50 <= count)
	{
		printf("系统维护中,请稍候...(建议删除一些不重要的联系人呢QAQ)\n");	
		return;
	}
	int i = 0;
	while(sex[i]) i++;

	printf("请输入姓名,性别,电话\n");
	scanf("%s %c %s",name[i],&sex[i],tel[i]);
	count++;
	show_msg("添加联系人成功\n",1.5);
}
void del(void)
{
	char key[20]={};
	printf("请输入要删除的姓名\n");
	scanf("%s",key);

	for(int i=0;i<50;i++)
	{
		if(sex[i])
		{
			if(0==strcmp(name[i],key))
			{
				printf("删除%s %s %s 成功\n",name[i],
				'w'==sex[i]?"女":"男",tel[i]);
				sex[i]=0;
				count--;
				show_msg("",1.5);
				return;
			}
		}
	}
	printf("没找到联系人%s,请检查查询条件\n",key);
	show_msg("",1.5);
}
void modify(void)
{
	char key[20]={};
	printf("请输入要修改对象的姓名\n");
	scanf("%s",key);
	for(int i=0;i<50;i++)
	{
		
		if(0==strcmp(name[i],key))
		{
			printf("请输入修改后的联系人姓名,性别,电话:\n");
			scanf("%s %c %s",name[i],&sex[i],tel[i]);
			show_msg("修改联系人成功\n",1.5);
			return;
		}
	}
	show_msg("未找到联系人,修改失败\n",1.5);
}
void find(void)
{
	char key[20]={};
	printf("请输入要查询的关键字\n");
	scanf("%s",key);
	for(int i=0;i<50;i++)
	{
		if(sex[i]&&(strstr(name[i],key)||strstr(tel[i],key)))
		{	
			printf("删除%s %s %s 成功\n",name[i],
			'w'==sex[i]?"女":"男",tel[i]);
		}
	}
	show_msg("未找到联系人,修改失败!\n",1.5);
	anykey();
}
void list(void)
{
	for(int i=0;i<50;i++)
	{
		if(sex[i])
		{
			printf("%s %s %s\n",name[i],'w'==sex[i]?"女":"男",tel[i]);
		}
	}
	anykey();
}
char menu(void)
{
	system("clear");
	puts("-----欢迎使用指针通讯录-----");
	puts("1、添加联系人");
	puts("2、删除联系人");
	puts("3、修改联系人");
	puts("4、查找联系人");
	puts("5、遍历联系人");
	puts("6、退出通讯录");
	puts("----------------------------");
	printf("请输入指令:");
	char ch = getch();
	printf("%c\n",ch);		//回显
	return ch;
}

int main(int argc,const char* argv[])	//main函数尽量简洁
{	
	for(;;)
	{

		switch(menu())
		{
			case '1':	add();break;	//添加
			case '2':	del();break;	//删除
			case '3':	modify();break;	//修改
			case '4':	find();break;	//查询
			case '5':	list();break;	//全部列出
			case '6':	return 0;	
		}
	}

}

运行结果

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值