C語言實現一個簡單通訊錄
阿新 • • 發佈:2021-01-20
通訊錄和學生資訊管理系統的基本功能部分實現一模一樣。
來看看不一樣的部分。
查詢
通訊錄需要實現根據聯絡人不同資訊查詢的功能,可以為每一種查詢情況都封裝一個查詢函式,或者根據不同情況返回不同的比較結果進行查詢。
為了使函式更加簡短,我們將該功能分為三個函式。
//根據 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++。
原始碼下載地址。