C语言编写简单的通讯录

通讯录:
姓名、性别、电话 最大存储50个联系人

功能:
1、添加联系人
2、按姓名删除联系人
3、按姓名修改联系人信息
4、查找联系人并显示,电话或姓名查找,支持模糊查找
5、显示所有联系人信息

代码如下:

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

static int count = 0;		//有效人数数量
static char name[100][20];	//姓名
static char sex[100];		//性别
static char tel[100][12];	//电话

//按任意按键继续..
void anykey_continue(void)
{
	puts("按任意按键继续...");
	//防止输入缓冲区中有残留的字符,会导致getch直接返回
	//因此清理输入缓冲区
	stdin -> _IO_read_ptr = stdin -> _IO_read_end;
	getch();
}

//打印提示信息
void show_msg(const char* msg,float sec)
{
	printf("%s",msg);
	
	fflush(stdout);//如果msg没有换行得手动刷新

	usleep(sec*1000000);
}

//添加联系人
void add(void)
{
	if(count >= 100)
	{
		puts("系统正在升级,请等候....");
		return;
	} 
	int i = 0;
	while(sex[i]) i++;

	printf("请输入姓名 性别 电话:");
	scanf("%s %c %s",name[i],&sex[i],tel[i]);
	count++;

	show_msg("添加联系人成功!",1.5);
}

//删除联系人
void del(void)
{
	char key[20]={};
	printf("请输入要删除的联系人姓名或电话:");
	scanf("%s",key);
	for(int i=0;i<100;i++)
	{
		if(sex[i])
		{
			if(0==strcmp(name[i],key)||0==strcmp(tel[i],key))
			{
				printf("删除 %s %s %s 联系人成功\n",name[i],'w'==sex[i]?"女":"男",tel[i]);
				sex[i]=0;
				count--;
				tel[i]=0;
			}
		}
	}
	
}

//修改联系人
void modify(void)
{
	char key[20]={};
	printf("请输入需要修改的联系人姓名:");
	scanf("%s",key);
	for(int i=0;i<100;i++)
	{
		if(sex[i])
		{
			if(0==strcmp(name[i],key))
			{
				printf("请重新输入联系人的姓名 性别 电话:");
				scanf("%s %c %s",name[i],&sex[i],tel[i]);
				show_msg("修改联系人成功",1.5);
				return;
			}
		}
	}
	show_msg("未找到联系人!",1.5);
	
}

//查询联系人
void find(void)
{	
	char key[20] = {};
	printf("请输入要查询的关键字:");
	scanf("%s",key);

	for(int i=0;i<100;i++)
	{
		if(sex[i])
		{
			if(strstr(name[i],key) || strstr(tel[i],key))
			{
				printf("%s %s %s\n",
				name[i],'w' == sex[i]?"女":"男",tel[i]);
			}
		}
	}
	anykey_continue();
}

//遍历通讯录
void list(void)
{
	for(int i=0;i<100;i++)
	{
		if(sex[i])
		{
			printf("%s %s %s\n",
			name[i],'w' == sex[i]?"女":"男",tel[i]);	
		}
	}
	anykey_continue();
}

//显示菜单
char menu(void)
{
	system("clear");
	puts("*****欢迎使用通讯录*****");
	puts("1、添加联系人");
	puts("2、删除联系人");
	puts("3、修改联系人");
	puts("4、查询联系人");
	puts("5、遍历联系人");
	puts("6、退出通讯录");
	puts("----------------------------");
	printf("请输入指令:");
	char cmd = getch();
	printf("%c\n",cmd);
	return cmd;
}

int main(int argc,const char* argv[])
{
	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;	
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值