Для твоей работы я бы написал 2.1 так, чтобы преподаватель вообще не смог сказать, что “описания информационного хранилища нет”.
⸻
2.1 Описание информационного хранилища
Информационное хранилище программного средства реализовано в виде бинарного файла, предназначенного для долговременного хранения сведений о научной работе студентов Университета. Использование бинарного формата позволяет хранить числовые данные во внутреннем представлении, уменьшить объем хранимой информации и исключить необходимость преобразования текстовых строк в числовые значения при загрузке базы данных.
Логическая модель предметной области представлена объектами классов Student, Supervisor, ResearchWork и Record. Для записи данных в файл используется отдельная структура фиксированной длины PackedRecord. Такое решение позволяет отделить объектную модель программы от способа физического хранения информации.
Каждая запись информационного хранилища содержит следующие сведения:
* уникальный идентификатор записи;
* признак логического удаления;
* сведения о студенте;
* сведения о научном руководителе;
* сведения о научной работе;
* контрольную сумму записи.
Для хранения строковых данных используются символьные массивы фиксированной длины. Такой подход обеспечивает одинаковый размер каждой записи и позволяет выполнять прямой доступ к элементам файла по смещению.
При сохранении данных объект Record преобразуется в структуру PackedRecord и записывается в бинарный файл. При чтении выполняется обратное преобразование структуры PackedRecord в объектную модель программы.
С целью контроля целостности информации каждая запись содержит контрольную сумму. При открытии базы данных выполняется проверка контрольной суммы каждой записи. В случае обнаружения повреждения данных загрузка базы прекращается и пользователю выводится сообщение об ошибке.
Удаление записей реализовано методом логического удаления. При выполнении операции запись не удаляется физически из файла, а получает специальный признак deleted. Такой подход позволяет сохранить структуру информационного хранилища и избежать перераспределения данных внутри файла.
В оперативной памяти записи хранятся в контейнере std::vector. Для ускорения информационного поиска дополнительно формируются индексы на основе контейнера std::unordered_map. Индексы автоматически перестраиваются после добавления, изменения или логического удаления записей.
Для защиты информации бинарное хранилище сохраняется на диске только в зашифрованном виде. После завершения работы программы открытый файл базы данных автоматически шифруется алгоритмом AES-256-CBC. Пароль шифрования дополнительно защищается алгоритмом RSA и сохраняется в отдельном файле. В результате после штатного завершения работы на диске отсутствуют открытые версии базы данных и временные файлы.
На рисунке 2.1 представлена структура информационного хранилища.
⸻
И после этого вставляешь рисунок со структурой PackedRecord или скрин структуры из кода. Тогда раздел будет выглядеть полностью завершённым и соответствующим пункту консультации «Описание информационного хранилища (бинарный файл)».