Материал: ПЗ_Рушева_972304 (1)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

print_otz(otz_list, otz_count); break;

case 10: system("cls");

add_otz(&t, &otz_list, &otz_count); break;

case 11:

if (!s) fopen_s(&s, sotrs, "rb+");

/*если открылся, подсчёт числа записей в цикле*/ if (s)

{

puts("Файл открыт..."); if (!sotrs_count)

{

fseek(s, 0, SEEK_SET);

while (fread(&sotr, sizeof sotr, 1, t) == 1) ++otz_count;

/*выделение памяти для массива записей*/ sotrs_list = (Sotr*)calloc(otz_count, sizeof(Sotr));

/*курсор в самое начало (для чтения)*/ fseek(s, 0, SEEK_SET);

/*чтение данных из файла в массив*/ fread(sotrs_list, sizeof * sotrs_list, sotrs_count, s);

/*вывод массива записей в консоль*/

}

if (!sotrs_count) /*если записей 0, то ...*/ puts("Файл пуст.");

}

else /*если файл не открылся, значит его нет и он создаётся*/

{

/*открыть для записи*/ fopen_s(&s, sotrs, "wb");

/*и сразу же закрыть*/ puts("Файл создан.");

}

fclose(s); s = NULL; break;

case 12: system("cls");

print_tables(sotrs_list, sotrs_count); break;

case 13:

{

system("cls"); Date d1, d2;

26

getc(stdin);

puts("Введите начальную дату для поиска"); init_date(&d1, 1);

puts("Введите конечную дату для поиска"); init_date(&d2, 1);

if (compare_date(&d1, &d2) == GREATER)

{

puts("Первая дата должна предшествовать или быть равна

второй!");

puts("Поиск невозможен!");

}

else

filter_by_order_date(clients_list, clients_count, &d1, &d2);

}

break; case 14:

puts("Выход в меню 1-го уровня..."); break;

default:

break;

}

if (n == 14)

{

if (f)

{

fclose(f); f = NULL;

}

break;

}

system("pause");

}

}

Функция шифрования представлена на рисунке 4.2. Код описанной функции представлен ниже блок-схемы:

27

Рисунок 4.2 - Функция шифрования

void encrypt(char* log)

{

//замена символов сдвигом

for (size_t i = 0; i < strlen(log); i++)

{

if (i % 2)

log[i] = log[i] + 1; //символы с нечётным индексом +1

else

log[i] = log[i] + 2; //символы с чётным индексом +2

}

}

Функция просмотра данных в табличной форме представлена на рисунке 4.3.

Код описанной функции представлен ниже блок-схемы:

28

Рисунок 4.3 - Просмотр данных в табличной форме

void print_table(Client* clients_list, size_t k)

{

//проверка параметров if (!clients_list || !k)

{

puts("Список клиентов пуст!"); return;

}

//вывод таблицы и данных

for (size_t i = 0; i < 133; i++) printf_s("-"); printf_s("\n|%4s|%20s|%20s|%20s|", "№ ", "Фамилия", "Имя", "Отчество");

29

printf_s("%15s|%15s|%15s|%15s|\n", "Паспорт", "Телефон", "Дата вылета", "Дата заказа");

for (size_t i = 0; i < 133; i++) printf_s("-"); for (size_t i = 0; i < k; i++)

{

printf_s("\n|%3zu%c|%-20s|%-20s|%-20s|", i + 1, '.', clients_list[i].fio.surname, clients_list[i].fio.name, clients_list[i].fio.patronimic);

printf_s("%15s|%15s|", clients_list[i].passport, clients_list[i].tel); printf_s("%5c%02zu%c%02zu%c%04zu|", ' ', clients_list[i].departure.day,

'.', clients_list[i].departure.month, '.', clients_list[i].departure.year); printf_s("%5c%02zu%c%02zu%c%04zu|", ' ', clients_list[i].order.day, '.',

clients_list[i].order.month, '.', clients_list[i].order.year);

//for (size_t i = 0; i < 133; i++) printf_s("-");

}

puts("");

for (size_t i = 0; i < 133; i++) printf_s("-"); puts("");

system("pause");

}

30

Источник: https://studfile.net/preview/16447983/