Шрифт:
sizeof(current_cdc_entry));
}
}
break;
case mo_add_tracks:
enter_new_track_entries(¤t_cdc_entry);
break;
case mo_del_cat:
del_cat_entry(¤t_cdc_entry);
break;
case mo_find_cat:
current_cdc_entry = find_cat;
break;
case mo_list_cat_tracks:
list_tracks(¤t_cdc_entry);
break;
case mo_del_tracks:
del_track_entries(¤t_cdc_entry);
break;
case mo_count_entries:
count_all_entries;
break;
case mo_exit:
break;
case mo_invalid:
break;
default:
break;
} /* switch */
} /* while */
6. Когда цикл в функции
main
завершится, закройте базу данных и вернитесь в окружение. Функция announce
выводит приглашающее предложение:
database_close;
exit(EXIT_SUCCESS);
} /* main */
static void announce(void) {
printf("\n\nWelcome to the demonstration CD catalog database \
program\n");
}
7. Здесь вы реализуете функцию
show_menu
. Эта функция проверяет, выбран ли текущий элемент каталога, используя первый символ имени в каталоге. Если элемент каталога выбран, становятся доступными дополнительные пункты меню:
static menu_options show_menu(const cdc_entry *cdc_selected) {
char tmp_str[TMP_STRING_LEN + 1];
menu_options option_chosen = mo_invalid;
while (option_chosen == mo_invalid) {
if (cdc_selected->catalog[0]) {
printf("\n\nCurrent entry: ");
printf("%s, %s, %a, %s\n",
cdc_selected->catalog, cdc_selected->title,
cdc_selected->type, cdc_selected->artist);
printf("\n");
printf("1 - add new CD\n");
printf("2 — search for a CD\n");
printf("3 — count the CDs and tracks in the database\n");
printf("4 — re-enter tracks for current CD\n");
printf("5 - delete this CD, and all its tracks\n");
printf("6 - list tracks for this CD\n");
printf("q — quit\n");
printf("\nOption: ");
fgets(tmp_str, TMP_STRING_LEN, stdin);
switch(tmp_str[0]) {
case '1':
option_chosen = mo_add_cat;
break;
case '2':
option_chosen = mo_find_cat;
break;
case '3':
option_chosen = mo_count_entries;
break;
case '4':
option_chosen = mo_add_tracks;
break;
case '5':
option_chosen = mo_del_cat;
break;
case '6':
option_chosen = mo_list_cat_tracks;
break;
case 'q':
option_chosen = mo_exit;
break;
}
} else {