Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

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;

}

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

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

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) {

mvprintw(ERROR_LINE, 0, "cannot open CD titles database");

 } else {

fprintf(fp, "%s\n", cdtitle);

fclose(fp);

 }

}

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

1. Продолжим рассмотрение других управляющих функций, вызываемых из функции

main
. Следующая из них — функция
update_cd
. Эта функция использует обведенное рамкой вложенное окно с прокруткой и нуждается в нескольких константах, которые объявляются как глобальные, поскольку они позже потребуются функции
list_tracks
.

Поделиться:
Популярные книги

Весь Роберт Маккаммон в одном томе. Компиляция

МакКаммон Роберт Рик
Абсолют
Фантастика:
боевая фантастика
5.00
рейтинг книги
Весь Роберт Маккаммон в одном томе. Компиляция

Все обо всем. Том 1

Ликум Аркадий
Справочная литература:
энциклопедии
6.25
рейтинг книги
Все обо всем. Том 1

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Неизвестный фактор (Романы)

Нортон Андрэ
Фантастика:
фэнтези
5.00
рейтинг книги
Неизвестный фактор (Романы)

Вернувшийся: Первые шаги. Том II

Vector
2. Вернувшийся
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Вернувшийся: Первые шаги. Том II

"Фантастика 2023-180". Компиляция. Книги 1-23

Лисина Александра
Фантастика 2023. Компиляция
Фантастика:
научная фантастика
боевая фантастика
5.00
рейтинг книги
Фантастика 2023-180. Компиляция. Книги 1-23

Собрание сочинений. Том 8

Дойл Артур Конан
Проза:
классическая проза
6.25
рейтинг книги
Собрание сочинений. Том 8

Золотая свирель

Кузнецова Ярослава Анатольевна
Фантастика:
фэнтези
8.04
рейтинг книги
Золотая свирель

Север и Юг. Великая сага. Компиляция. Книги 1-3

Джейкс Джон
Приключения:
исторические приключения
5.00
рейтинг книги
Север и Юг. Великая сага. Компиляция. Книги 1-3

Тайная Доктрина дней Апокалипсиса. Книга 4. Введение в систему

Белый Александр
Религия и эзотерика:
религия
5.00
рейтинг книги
Тайная Доктрина дней Апокалипсиса. Книга 4. Введение в систему

Избранные сочинения в 9 томах. Том 1 Зверобой; Последний из могикан

Купер Джеймс Фенимор
1. Ф.Купер Избранные сочинения в 9 томах
Приключения:
приключения про индейцев
6.80
рейтинг книги
Избранные сочинения в 9 томах. Том 1 Зверобой; Последний из могикан

Изменяющий-Механик. Компиляция. Книги 1-18

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18

Черный Ферзь

Савеличев Михаил Валерьевич
Миры братьев Стругацких. Время учеников
Фантастика:
научная фантастика
4.00
рейтинг книги
Черный Ферзь

Системная технология

Телемтаев Марат Махметович
Научно-образовательная:
политика
5.00
рейтинг книги
Системная технология