前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言实现一个简单通讯录

C语言实现一个简单通讯录

作者头像
英雄爱吃土豆片
发布2021-01-21 06:31:54
4750
发布2021-01-21 06:31:54
举报

通讯录和学生信息管理系统的基本功能部分实现一模一样。

来看看不一样的部分。

查找

通讯录需要实现根据联系人不同信息查找的功能,可以为每一种查找情况都封装一个查找函数,或者根据不同情况返回不同的比较结果进行查找。

为了使函数更加简短,我们将该功能分为三个函数。

代码语言:javascript
复制
//根据 mode 的不同获取不同比较方式的比较结果 
//mode: 1 通过姓名,2 通过职务,3 通过职称,4 通过电话,5 通过邮件 
int GetCmpRes(Person per, char* goal, int mode) {
	int cmp_res = -2;
	switch (mode) {
		case 1:
			cmp_res = strcmp(per.name, goal);
			break;
		case 2:
			cmp_res = strcmp(per.job, goal);
			break;
		case 3:
			cmp_res = strcmp(per.title, goal);
			break;
		case 4:
			cmp_res = strcmp(per.telephone, goal);
			break;
		case 5:
			cmp_res = strcmp(per.email, goal);
			break;
		default:
			break;
	}
	
	return cmp_res;
}
代码语言:javascript
复制
//查找并返回对应联系人所在下标,若联系人不存在,返回 -1
//可通过修改 mode 参数切换不同的查找方式 
int FindByMode(Person per_arr[], int length, char* goal, int mode) {
	int i, is_find = 0;
	for (i = 0; i < length && is_find == 0; i++) {
		int cmp_res = GetCmpRes(per_arr[i], goal, mode);
		if (cmp_res == 0) {
			is_find = 1;
		}
	}

	if (is_find == 0) {
		i = -1;
	} else {
		i -= 1;
	}
	
	return i;
} 
代码语言:javascript
复制
//查找联系人信息,可通过修改 mode 参数改变查找的方式 
void FindPerson(Person per_arr[], int length) {
	char* text[6] = {"", "姓名", "工作", "职务", "职称", "邮箱"}; 
	
	int mode;
	printf("你想通过什么方式查找?\n");
	printf("1.姓名 2.工作 3.职务 4.职称 5.邮箱\n@请输入操作号码>");
	scanf("%d", &mode); 
	if (mode < 1 || mode > 5) {mode = 1;}
		
	char goal[30];
	printf("请输入要查找的联系人的%s:", text[mode]);
	scanf("%s", &goal);
	
	int in = FindByMode(per_arr, length, goal, mode);
	if (in == -1) {
		printf("未找到改联系人!\n"); 
	} else {
		printf("通讯姓名\t工作职务\t工作职称\t电话号码\t电子邮件\n");
		printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", 
		       per_arr[in].name, per_arr[in].job, 
			   per_arr[in].title, per_arr[in].telephone,
			   per_arr[in].email);
	}
}

函数调用关系如下图:

运行效果

开发工具 Dev-C++。

源码下载地址

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档