Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка.doc
Скачиваний:
2
Добавлен:
15.12.2018
Размер:
160.26 Кб
Скачать

2.1. Словесное описание алгоритмов

Для реализации поставленной программы был разработан ряд функций, которые и реализуют весь процесс работы системы.

Рассмотрим наиболее важные из них подробно:

1.Функция создания файла базы данных (см. П.1.5). Прототип функции:

void function_data_new();

Посредством данной функции происходит создание базы данных игр и внесение начальных (первых) данных в каталог. Файл создается функцией fopen. Количество записей хранится в глобальной переменной типа int. Там же предусмотрены проверки на правильность вводимых данных. В данной функции описывается массив структур, который будет использоваться для хранения записей. После завершения работы этой функции управление передается функции “главного меню программы”.

2. Функция загрузки базы данных (см. П.1.4). Прототип функции:

void function_data_load();

Посредством данной функции происходит загрузка базы данных из файла. Пользователю предоставляется выбрать из списка баз или, введя название файла базы загрузить некую другую базу. Файл открывается функцией fopen. Количество записей хранится в глобальной переменной типа int. В данной функции описывается массив структур, который будет использоваться для хранения записей. После завершения работы этой функции управление передается функции “главного меню программы”.

3. Функция выбора действия для работы в программируемой системе (главное меню). Прототип функции:

void main_data_all(Game_Date *ptr);

В данной функции посредствам оператора switch, находящийся в бесконечном цикле, осуществляется выбор действия и в зависимости от выбранного значения происходит передача управления определенной функции. Выход из бесконечного цикла осуществляется функцией exit().

4. Функция добавление записи в файл (см. П.1.1). Прототип функции:

void add_to_data(Game_Date *ptr_add_to_data)

Добавление записей осуществлено циклом for. Критерий выхода из цикла выбора пользователем определенного действия. Ввод данных осуществляется функцией gets_s. После каждого добавления счетчик количества записей увеличивается.

5. Функция удаления записи (см. П.1.3). Прототип функции:

void delete_record(Game_Date *ptr_delete);

Данная функция удаляет запись при принятом ей номере записи. Происходит удаление, т.е. происходит перестановка записей и нужная запись затирается. Перестановка осуществлена оператором for. После удаления глобальная переменная (счетчик записей) уменьшается на единицу.

6. Функция изменение записи (см. П.1.2). Прототип функции:

void change_record(Game_Date *ptr_dinamik_massiv)

В функции описана переменная типа int, куда принимается номер изменяемой записи. Происходит вывод данной записи и предоставление выбора критериев изменения. Выбор осуществляестя при помощи оператора switch.

7. Функция вывода данных базы. Прототип функции:

void listing(Game_Date *ptr);

При помощи оператора switch осуществляется выбор варианта вывода. Вывод в виде списка осуществляется в цикле, где последовательно при помощи cout происходит вывод. Вывод в виде таблицы так же осуществляется в цикле. В функции описаны переменные типа int, в которые заносятся длины выводимых значение и посредством данных значений, для каждой категории, в цикле for происходит рисование таблицы.

8. Функция сохранение результатов поиска в файл(см. П.1.6). Прототип функции:

void save_temp_massiv(Game_Date *ptr_temp_find,int j)

В начале описывается файловая переменная необходимая для работы с файлом. С промощи функции fopen происходит создание файла. В цикле for происходит запись данных в файл при помощи оператора fprintf(). По окончанию записи файл закрывается функцией fclose().

9. Функции поиска с использованием логических связок. Прототипы функций:

void find_i(Game_Date *ptr_dinamik_massiv,char *str_name_find_i_1,char *str_name_find_i_2,int metka_find_type_2);

void find_ili(Game_Date *ptr_dinamik_massiv,char *str_name_find_ili_1,char *str_name_find_ili_2,int metka_find_type_3);

void find_ne(Game_Date *ptr_dinamik_massiv,char *str_name_find_ne,int metka_find_type_4);

В начале выполнения функции описана переменная типа locale,

static locale loci( "russian" );

необходимая для коректного понижения регистра русских символов. В операторе switch происходит выбор критериев поиска в зависимости от выбранного действия. Далее происходит понижение регистра символо для корректного поиска. Поиск осуществляется в цикле, где при помощи оператора if происходит сравнение и вывод данных поиска. Все найденные результаты записываются в массив структур типа struct Games_Data. Данные в массиве сортируются методом сортировки пузырьковая.

10. Функция сортировки каталога. Прототип функции:

void sort_games_data(Game_Date *ptr_dinamik_massiv);

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