const char *title_file = "title.cdb";const char *tracks_file = "tracks.cdb";const char *temp_file = "cdb.tmp";4.Β Π Π½Π°ΠΊΠΎΠ½Π΅Ρ, ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ:
void clear_all_screen(void);void get_return(void);int get_confirm(void);int getchoice(char *greet, char *choices[]);void draw_menu(char *options[], int highlight,Β int start_row, int start_col);void insert_title(char *cdtitle);void get_string(char *string);void add_record(void);void count_cds(void);void find_cd(void);void list_tracks(void);void remove_tracks(void);void remove_cd(void);void update_cd(void);5.Β ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, Π²Π²Π΅Π΄Π΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ (Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠ½ΠΊΡΠΎΠ² ΠΌΠ΅Π½Ρ) Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½Ρ. ΠΠΎΠ³Π΄Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΏΡΠ½ΠΊΡ ΠΌΠ΅Π½Ρ add new CD (Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ CD), ΠΏΡΠΈ Π΅Π³ΠΎ Π²ΡΠ±ΠΎΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ ΡΠΈΠΌΠ²ΠΎΠ»
Π°char *main_menu[] = {Β "add new CD",Β "find CD",Β "count CDs and tracks in the catalog",Β "quit",Β 0,};char *extended_menu[] = {Β "add new CD",Β "find CD",Β "count CDs and tracks in the catalog",Β "list tracks on current CD";Β "remove current CD",Β "update track information",Β "quit",Β 0,};ΠΠ° ΡΡΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π°. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΡΡ Π²ΡΠ΅Ρ 16 ΡΡΠ½ΠΊΡΠΈΠΉ. Π€ΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠ΅ΠΊΡΠΈΠΈ:
β‘ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Ρ;
β‘ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ² Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ;
β‘ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°.
ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½ΠΎ Π½Π° ΡΠΈΡ. 6.9.

Π ΠΈΡ. 6.9
ΠΠ·Π³Π»ΡΠ΄ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ main
Π€ΡΠ½ΠΊΡΠΈΡ
main<i>int main() {</i>Β int choice;Β initscr();Β do {Β Β choice = getchoice("Options:", current_cd[0] ? extended_menu : main_menu);Β switch (choice) {Β Β case 'q':Β Β break;Β case 'a':<i>Β Β add_record();</i>Β Β break;Β Β case 'c':<i>Β Β count_cds();</i>Β Β break;Β Β case 'f':<i>Β Β find_cd();</i>Β Β break;Β Β case 'l':<i>Β Β list_tracks();</i>Β Β break;Β Β case 'r':<i>Β Β remove_cd();</i>Β Β break;Β case 'u':<i>Β Β update_cd();</i>Β Β break;Β }Β } while (choice != 'q');Β endwin();Β exit(EXIT_SUCCESS);}Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Ρ
Π ΡΡΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
1.Β Π€ΡΠ½ΠΊΡΠΈΡ
getchoicemaingetchoicegreetchoicesmain_menuextended_menumain<i>int get_choice(char *greet, char* choises[]) {</i>Β static int selected_row = 0;Β int max_row = 0;Β int start_screenrow = MESSAGE_LINE, start_screencol = 10;Β char **option;Β int selected;Β int key = 0;Β option = choices;Β while (*option) {Β Β max_row++;Β Β option++;Β }Β if (selected_row >= max_row)Β selected_row = 0;<i>Β clear_all_screen();</i>