Читаем Основы программирования в Linux полностью

  if (current_row == current_highlight) attron(A_STANDOUT);

  txt_ptr = options[current_row];

  txt_ptr++;

  mvprintw(start_row + current_row, start_col, "%s", txt_ptr);

  if (current_row == current_highlight) attroff(A_STANDOUT);

  current_row++;

  option_ptr++;

 }

 mvprintw(start_row + current_row + 3, start_col,

  "Move highlight then press Return ");

 refresh;

}

3. Далее рассмотрим функцию clear_all_screen, которая, как ни странно, очищает экран и перезаписывает заголовок. Если компакт-диск выбран, отображаются его данные:

void clear all_screen {

 clear;

 mvprintw(2, 20, "%s", "CD Database Application");

 if (current_cd[0]) {

  mvprintw(ERROR_LINE, 0, "Current CD: %s: %s\n", current_cat, current_cd);

 }

 refresh;

}

<p>Управление базой данных</p>

В этом разделе описаны функции пополнения или обновления базы данных компакт-дисков. Функции add_record, update_cd и remove_cd вызываются из функции main.

Добавление записей

1. Добавьте сведения о новом компакт-диске в базу данных.

void add_record {

 char catalog_number[MAX_STRING];

 char cd_title[MAX_STRING];

 char cd_type[MAX_STRING];

 char cd_artist[MAX_STRING];

 char cd_entry[MAX_STRING];

 int screenrow = MESSAGE_LINE;

 int screencol = 10;

 clear_all_screen;

 mvprintw(screenrow, screencol, "Enter new CD details");

 screenrow += 2;

 mvprintw(screenrow, screencol, "Catalog Number: " );

 get_string(catalog_number);

 screenrow++;

 mvprintw(screenrow, screencol, " CD Title: ");

 get_string(cd_title);

 screenrow++;

 mvprintw(screenrow, screencol, " CD Type: ");

 get_string(cd_type);

 screenrow++;

 mvprintw(screenrow, screencol, " Artist: ");

 get_string(cd_artist);

 screenrow++;

 mvprintw(PROMPT_LINE-2, 5, "About to add this new entry:");

 sprintf(cd_entry, "%s, %s, %s, %s",

  catalog_number, cd_title, cd_type, cd_artist);

 mvprintw(PROMPT_LINE, 5, "%s", cd_entry);

 refresh;

 move(PROMPT_LINE, 0);

 if (get_confirm) {

  insert_title(cd_entry);

  strcpy(current_cd, cd_title);

  strcpy(current_cat, catalog_number);

 }

}

2. Функция get_string приглашает к вводу и считывает строку из текущей позиции экрана. Она также удаляет завершающую новую пустую строку:

void get_string(char* string) {

 int len;

 wgetnstr(stdscr, string, MAX_STRING);

 len = strlen(string);

 if (len > 0 && string[len - 1] == '\n') string[len - 1] = '\0';

}

3. Функция get_confirm запрашивает и считывает пользовательское подтверждение. Она читает введенную пользователем строку и проверяет, первый символ — Y или у. Если она обнаруживает другой символ, то не дает подтверждения.

int get_confirm {

 int confirmed = 0;

 char first_char;

 mvprintw(Q_LINE, 5, "Are you sure? ");

 clrtoeol;

 refresh;

 cbreak;

 first_char = getch;

 if (first_char == 'Y' || first_char == 'y') {

  confirmed = 1;

 }

 nocbreak;

 if (!confirmed) {

  mvprintw(Q_LINE, 1, " Cancelled");

  clrtoeol;

  refresh;

  sleep(1);

 }

 return confirmed;

}

4. Последней рассмотрим функцию insert_title. Она вставляет в базу данных компакт-дисков заголовок, добавляя строку с заголовком в конец файла заголовков:

void insert_title(char* cdtitle) {

 FILE *fp = fopen(title_file, "a");

 if (!fp) {

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT