- •Министерство образования и науки рф
- •1Общие требования
- •2Последовательность выполнения работы
- •3Порядок контроля и приёмки
- •4Пример выполнения работы
- •Создание mdi оболочки приложения. Определение структур данных в соответствии с заданием
- •4.1.1Создание mdi оболочки приложения
- •4.1.2Определение структур данных
- •4.2Добавление строк в таблицы, а также добавление фотографий
- •4.2.1Создание диалога для добавления строк в таблицы
- •4.2.2Объявление переменных, для хранения таблиц. Их инициализация и удаление
- •4.2.3Добавление строки в таблицу
- •4.2.4Загрузка изображения
- •4.2.5Отображение графического окна
- •Отображение строк таблиц
- •4.2.6Создание графического окна для отображения строк таблиц
- •4.2.7Вывод строк таблицы на экран
- •4.2.8Отображение графического окна
- •4.3Сохранение структур данных таблиц в файлы
- •4.4Чтение данных таблиц из файлов и заполнение соответствующих структур в памяти
- •4.5Реализация операций манипулирования над данными для каждой таблицы: изменение, удаление и сохранение значений в таблицах
- •4.5.1Реализация функции изменения строк таблицы на базе имеющегося диалога для добавления строк
- •4.5.2Вызов диалога добавления / изменения строк
- •4.5.3Удаление строк таблицы
- •4.6Создание фильтра строк по заданным условиям для каждой таблицы
- •4.7Реализация запросов на выбор данных из одной или нескольких таблиц
- •5Практические задания для самостоятельной работы
- •5.1Вариант 1
- •5.2Вариант 2
- •5.3Вариант 3
- •5.4Вариант 4
- •5.5Вариант 5
- •5.6Вариант 6
- •5.7Вариант 7
- •5.8Вариант 8
- •5.9Вариант 9
- •5.10Вариант 10
- •5.11Вариант 11
- •5.12Вариант 12
- •5.13Вариант 13
- •5.14Вариант 14
- •5.15Вариант 15
- •5.16Вариант 16
- •5.17Вариант 17
- •5.18Вариант 18
- •5.19Вариант 19
- •Список рекомендуемой литературы
4.4Чтение данных таблиц из файлов и заполнение соответствующих структур в памяти
В соответствии с пунктом 2 «Общих требований» при старте приложения необходимо производить считывание данных таблиц из файлов и заполнять соответствующие структуры в памяти. Операцию чтения структур оформим в виде отдельной функции с именем, например, LoadDatabase. Вызов этой функции будет осуществляться из главного модуля.
Объявление функции LoadDatabase
// файл main.h, класс TMainForm
private:
...
// Читает содержимое базы данных из файлов на жёстком диске
void LoadDatabase();
Реализация функции LoadDatabase
// файл main.cpp, класс TMainForm
void TMainForm::LoadDatabase()
{
// Объявление указателя на поток для работы с файлом
TFileStream *fs;
// Чтение таблицы Студентов
try
{
// Открытие файла для чтения таблицы "Студентов"
fs = new TFileStream(ExeDirectory + "\\Students.tbl", fmOpenRead);
// Объявление указателя на строку в соответствие с типом текущей таблицы
TStudent *student;
// Чтение из файла, пока текущая позиция курсора в файле не станет равна общей длине файла
while (fs->Position != fs->Size)
{
// Объявление структуры для записи в файл
stStudent student2;
// Чтение из файла строки таблицы
fs->Read(&student2, sizeof(stStudent));
// Выделение памяти для одной строки таблицы
student = new TStudent();
// Заполнение значений полей объекта TStudent значениями из считанной строки
student->No = student2.No;
student->Fio = student2.Fio;
student->GroupNo = student2.GroupNo;
student->Birthday = TDateTime(student2.Birthday);
student->Address = student2.Address;
if (student2.PhotoLen > 0)
{
// Объявление указателя на поток байт в памяти для чтения с диска массива байт фотоизображения
TMemoryStream *ms = new TMemoryStream();
ms->CopyFrom(fs, student2.PhotoLen);
ms->Seek(0, soFromBeginning);
// Запись фотоизображения в объект TStudent
student->Photo->LoadFromStream(ms);
// Освобождение памяти, занимаемой указателем на поток байт
delete ms;
}
// Добавление строки в общий список строк таблицы
Students->Add(student);
}
// Освобождение памяти, занимаемой указателем на поток для работы с файлом
delete fs;
}
catch (EFOpenError &e)
{
}
...
}
Блок try – catch позволяет перехватывать исключение, генерируемое приложением в случае ошибки открытия файла (например, при отсутствии файла).
4.5Реализация операций манипулирования над данными для каждой таблицы: изменение, удаление и сохранение значений в таблицах
Операции манипулирования над данными в таблицах удобнее реализовать в виде вызова отдельных функций из окна отображения строк таблицы, рассмотренного в разделе .
Действия, описанные в шагах 4.5.1 – 4.5.3, необходимо повторить для каждой отдельно создаваемой таблицы.