1. 程式人生 > 其它 >C語言實現一個簡單通訊錄

C語言實現一個簡單通訊錄

技術標籤:C/C++學習者c語言

通訊錄和學生資訊管理系統的基本功能部分實現一模一樣。
來看看不一樣的部分。

查詢

通訊錄需要實現根據聯絡人不同資訊查詢的功能,可以為每一種查詢情況都封裝一個查詢函式,或者根據不同情況返回不同的比較結果進行查詢。

為了使函式更加簡短,我們將該功能分為三個函式。

//根據 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; }
//查詢並返回對應聯絡人所在下標,若聯絡人不存在,返回 -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; }
//查詢聯絡人資訊,可通過修改 mode 引數改變查詢的方式 
void FindPerson(Person per_arr[], int length) {
	char* text[6] = {"", "姓名", "工作", "職務", "職稱", "郵箱"}; 
	
	int mode;
	printf("你想通過什麼方式查詢?\n");
	printf("1.姓名 2.工作 3.職務 4.職稱 5.郵箱\[email protected]請輸入操作號碼>");
	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++。
原始碼下載地址