用数组实现通讯录功能

         通讯录的添加、删除、修改、查找及显示所有联系人功能分别由5个函数现,用switch实现整体功能的选择及推进

        注:stdin->_IO_read_ptr=stdin->_IO_read_end;此句为Linux系统中清理缓冲区语句,在其他系统下无法正常运行,可采用其他方法清理输入缓冲区

        例如:

int len=0;
            while(str[len]) len++;
            if('\n'!=str[len-1])
            {
                scanf("%*[^\n]");
                //从缓冲区中读取任意数据并丢弃,如果不是'\n',继续读取,直到遇到'\n',停止读取(正则表达式)
                scanf("%*c");
                //从缓冲区中读取一个字符,并丢弃
            }

        输入scanf("%*[^\n]"); scanf("%*c");两个语句 

#include<stdio.h>
#include<string.h>
#include<getch.h>
char name[50][20]={};
char gender[50]={};
char tele[50][12]={};
void add(void)
{
	//先判断
	for(int i=0;i<50;i++)
	{
		if(gender[i]!='M'&&gender[i]!='W')
		{
			printf("请输入姓名:");
			scanf("%s",name[i]);
			printf("请输入性别:");
			scanf(" %c",&gender[i]);
			printf("请输入电话号码:");
			stdin->_IO_read_ptr=stdin->_IO_read_end;
			scanf(" %s",tele[i]);
			printf("添加成功!\n");
			return;
		}
	}
	printf("无法添加联系人\n");
}
void delete(void)
{
	char input[20]={}; 
	if(name)
	{
		printf("请输入要删除的联系人的姓名:");
		scanf("%s",input);
		for(int i=0;i<50;i++)
		{
			if(0==strcmp(input,name[i]))//cmp
			{
				gender[i]=1;
				return;//提前结束函数
			}
		}
		printf("查无此人");
	}
}
void revise(void)
{
	char str[20]={};
	printf("请输入要修改的联系人姓名:\n");
	scanf("%s",str);
	for(int i=0;i<50;i++)
	{
		if(0==strcmp(str,name[i])) 
		{
			printf("请输入姓名:");
			scanf("%s",name[i]);
			printf("请输入性别:");
			scanf(" %c",&gender[i]);
			printf("请输入电话号码:");
			stdin->_IO_read_ptr=stdin->_IO_read_end;
			scanf("%s",tele[i]);
			printf("修改成功!\n");
			return;
		}
	}
	printf("查无此人\n");
	
}
void find(void)
{//遍历二位数组
	char x[12]={};	
	printf("请输入要查找人的信息:\n");
	scanf("%s",x);
	for(int i=0;i<50;i++)
	{
		if((int)strstr(name[i],x)||(int)strstr(tele[i],x))	
		printf("%s %c %s\n",name[i],gender[i],tele[i]);
	}
	
}
void show(void)
{
	for(int i=0;i<50;i++)
	{
		if(gender[i]=='M'||gender[i]=='W')
		printf("%s %c %s\n",name[i],gender[i],tele[i]);
	}

}
int main (int argc,const char* argv[])
{
	int num=0;
	do{	
		printf("-----------------------------------------\n");
		printf("1.添加联系人\n");
		printf("2.删除联系人\n");
		printf("3.修改联系人信息\n");
		printf("4.查找联系人\n");
		printf("5.显示所有联系人信息\n");
		printf("-----------------------------------------\n");
		printf("请选择功能:\n");
		switch(getch())
		{
			case 49:
				add();	
				break;
			case 50:
				delete();
				break;
			case 51:
				revise();
				break;
			case 52:
				find();
				break;
			case 53:
				show();
				break;
			case 54:
				return 0;

		}
	stdin->_IO_read_ptr=stdin->_IO_read_end;	
	}while(1);
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言通讯录管理系统可以通过电话号码查询信息的实现原理是首先用户输入要查询的电话号码,然后程序遍历通讯录中的所有联系人信息,逐一比对输入的电话号码与各个联系人的电话号码是否相同。当找到匹配的电话号码时,程序会显示该联系人的详细信息,如姓名、电话号码、地址等,并提供相应的操作选项,如编辑、删除等。如果输入的电话号码在通讯录中不存在,则会提示“未找到该联系人”并返回主菜单。 为了实现这一功能,需要设计一个联系人结构体,包括姓名、电话号码、地址等字段。可以选择使用数组或链表来存储联系人信息,对通讯录的增删改查操作进行封装,以方便对联系人信息进行管理和维护。同时,还要设计一个函数来实现通过电话号码查询信息的功能,该函数将遍历通讯录中的联系人信息,并与用户输入的电话号码进行比对,找到匹配的联系人信息后进行输出。 在实际编写过程中,需要合理使用C语言的字符串处理函数来处理电话号码的比对和输出,保证程序的稳定性和性能。另外,还需要添加异常处理功能,如输入格式错误、通讯录为空等情况的处理,以提高程序的鲁棒性。 总之,通过设计合适的数据结构和算法,以及良好的程序架构和异常处理,就可以实现C语言通讯录管理系统通过电话号码查询信息的功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值