Основы программирования в Linux - Мэтью Нейл
0/0

Основы программирования в Linux - Мэтью Нейл

Уважаемые читатели!
Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет. Так же Вы можете читать полную версию (весь текст) онлайн книги без регистрации и SMS на сайте Knigi-online.info (книги онлайн) или прочесть краткое содержание, описание, предисловие (аннотацию) от автора и ознакомиться с отзывами (комментариями) о произведении.
Описание онлайн-книги Основы программирования в Linux - Мэтью Нейл:
В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов
Читем онлайн Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 103 104 105 106 107 108 109 110 111 ... 324

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 позволяет выбирать пункты меню, пока не выбран вариант выхода из меню (quit). Далее приведен соответствующий код.

<i>int main() {</i>

 int choice;

 initscr();

 do {

  choice = getchoice(&quot;Options:&quot;, 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. Функция getchoice, вызываемая из функции main, — это основная функция данной секции. В функцию getchoice передается приглашение greet и указатель choices на базовое или расширенное меню (в зависимости от того, выбран ли компакт-диск). Вы также увидите, как main_menu или extended_menu передаются как параметры в описанную ранее функцию main.

<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 &gt;= max_row)

  selected_row = 0;

<i> clear_all_screen();</i>

1 ... 103 104 105 106 107 108 109 110 111 ... 324
На этой странице вы можете бесплатно читать книгу Основы программирования в Linux - Мэтью Нейл бесплатно.

Оставить комментарий

Рейтинговые книги