Лабораторная работа №14. MDI - приложение. Работа с данными в архитектуре "Документ/представление" ("Document/view") - Технология разработки программного обеспечения систем управления
Цель Работы - использовать принципы архитектуры "Документ-Представление" для выборки и сохранения данных в файлах, а также взаимодействия элементов меню, панели инструментов и строки состояния в приложении.
- Теоретические сведения
Архитектура "Документ-Представление"
В основе этой архитектуры лежат три глобальных понятия - фрейм, документ и представление. Под документом понимается те данные, с которыми работает приложение. Это может быть все, что угодно, - "простой текст", картинка и т. п. Отображение этих данных на экране осуществляется во фрейме документа. Фрейм содержит специальные окна - представления (Views), в которых отображают данные документа, и осуществляет координацию между документом и различными типами их представления, направляя им команды и получая от них извещения. Представлений документа в приложении может быть несколько. Пользователь взаимодействует с документом посредством его представления.
Фрейм и представление реализованы в виде двух различных оконных классов - класса фрейма и класса представления, при этом окно представления является дочерним по отношению к фрейму, т. е. размещается в его рабочей области. Сам фрейм может быть окном SDI - приложения или дочерним окном MDI-приложения. За взаимодействие пользователя непосредственно с фреймом (изменение размеров, перемещение и т. п.) полностью отвечает сама система Windows. Управление же представлениями ложится на программиста.
Документ представлен в виде объекта, который обеспечивает пространство для хранения данных в памяти и отвечает за такие операции, как запись и чтение документа с файла. Большая часть операций с данными выполняется самим приложением, а не классами библиотеки MFC.
Таким образом, архитектура "документ/представление" охватывает следующие основные классы:
CWinApp - класс для создания единственного объекта - приложения;
CFrameWnd - класс для создания главного окна однодокументного приложения и базовый для классов CMDIFrameWnd и CMDIChildWnd, которые отвечают за работу многодокументного приложения;
СDocTemplate - базовый абстрактный класс для создания шаблонов документов;
CDocument - класс для создания собственно документа;
СView - базовый класс, который совместно со своими производными классами - CCtrlView, CEditView, CListView, CTreeView, CScrollView - отвечает за отображение данных документа и за взаимодействие с пользователем.
При создании MFC AppWizard каркаса приложения архитектуры "Документ/представление" создастся типовой набор классов, производных от вышеназванных классов (если на шаге 1 установить флажок использования архитектуры "Document/View") (рисунок 1)
Рисунок 1. Классы каркаса приложения архитектуры "Документ/представление"
Созданный каркас приложения достаточно полно реализует функции фрейма, однако функции по описанию данных и их представлению требуется реализовать программисту.
Рассмотрим принципы реализации данных в классе документа. Для реализации документа в типичном приложении необходимо проделать следующие действия.
- - Для каждого документа образовать класс на базе CDocument. - Добавить в него переменные для хранения всех данных документа. - Реализовать функции для чтения и модификации этих данных. - Переопределить функцию Cobject::Serialize() в новом классе документа для организации чтения/записи данных документа с диска.
Если используется один класс документа, то он уже создан MFC AppWizard (рисунок 1). Добавление переменных для хранения данных документа рассмотрим для следующего примера. Данными, с которыми работает приложение, будут фамилия, имя, отчество абитуриента и оценки по 3-м дисциплинам - математике, физике и русскому языку. Описать эти данные можно следующей структурой:
Typedef struct
{
CString name1;
CString name2;
CString name3;
Int mark1;
Int mark2;
Int mark3;
}
SRTUCTRECORD;
В классе документа эти данные опишем в виде массива, используя шаблон для класса CArray:
Class CLb7Doc : public CDocument
{
Protected: // create from serialization only
CLb7Doc();
DECLARE_DYNCREATE(CLb7Doc)
// Attributes
Public:
CArray <SRTUCTRECORD, SRTUCTRECORD> m_data;
Для занесения и извлечения данных из массива используются методы класса CArray, поэтому здесь не будем использовать собственные методы, тем более, что член класса m_data является открытым.
Для сохранения и чтения из файла данных в документ, а также для создания документа MFC AppWizard реализованы команды ID_FILE_OPEN и ID_FILE_SAVE, ID_FILE_SAVE_AS и ID_FILE_NEW (рисунок 2).
Рисунок 2.- Команды для работы с документом, созданные MFC AppWizard для каркаса приложения архитектуры "Документ/представление"
Для выполнения этих команд библиотекой MFC вызываются соответствующие методы, реализация которых скрыта от программиста. Только два метода могут быть изменены:
- OnNewDocument() - здесь можно произвести инициализацию данных документа для MDI - приложения или очистку данных для SDI-приложения, т. е. уничтожение старых данных. Например, для нашего случая это может быть следующий код
BOOL CLab7Doc::OnNewDocument()
{
// Всю стандартную обработку по созданию документа возлагаем
// на библиотеку MFC
If (!CDocument::OnNewDocument())
Return FALSE;
//После успешного создания проводим очистку массива сданными
M_data. RemoveAll();
Return TRUE;
}
Метод Serialize() - здесь выполняется, собственно, сохранение данных в файл или чтение из файла данных в структуры документа. Этот метод вызывается при выполнении команд Open, Save или Save As после выбора блоком диалога имени файла.
Метод Serialize называется сериализацией - преобразование в последовательную форму и наоборот, позволяет сохранять и восстанавливать объекты классов, созданных на базе класса CObject. В нашем случае, нужно дополнить этот метод кодом по сохранению и восстановлению данных из файлового бинарного потока (данные записываются в файл без преобразования), который называют архивом. В качестве параметра в этот метод передается указатель на созданный экземпляр класса CArchiv, с которым ассоциирован объект класса CFile. Имя файла подставляется после выполнения кода диалогового окна по выбору имени файла. В классе CArchiv реализованы несколько вариантов перегружаемых операторов >> и << , которые, собственно, загружают объекты (или простые типы) из архива или сохраняют их в архиве. Они имеют следующие однотипные формы:
Fried CArchive&; operator << (CArchive &;ar, CObject *&;pOb)
Fried CArchive&; operator >> (CArchive &;ar, CObject *&;pOb)
Или для простых типов
Fried CArchive&; operator << (Data_Type&; data)
Fried CArchive&; operator >> (Data_Type&; data),
Где через Data_Type обозначены примитивные типы данных BYTE, WORD, int, DWORD, float double.
Метод CArchive::IsStoring возвращает направление потока
Void CLb7Doc::Serialize(CArchive&; ar)
{
If (ar. IsStoring())
{
// TODO: add storing code here
// Работа с потоком выполняется с простыми типами
Ar << m_data. GetSize();
For (int i=0; i < m_data. GetSize(); i++)
{
Ar << m_data. GetAt(i).name1;
Ar << m_data. GetAt(i).name2;
Ar << m_data. GetAt(i).name3;
Ar << m_data. GetAt(i).mark1;
Ar << m_data. GetAt(i).mark2;
Ar << m_data. GetAt(i).mark3;
}
}
Else
{
// TODO: add loading code here
Int size;
SRTUCTRECORD rec;
Ar >> size;
M_data. SetSize(size, 1);
For (int i=0; i < size; i++)
{
Ar >> rec. name1;
Ar >> rec. name2;
Ar >> rec. name3;
Ar >> rec. mark1;
Ar >> rec. mark2;
Ar >> rec. mark3;
M_data. SetAt(i, rec);
}
}}
- Задание К Лабораторной Работе
Создать SDI-приложение для формирования и просмотра данных из файла в соответствии с индивидуальным заданием.
Требования для создаваемого приложения.
Управление заданием имени файла, его открытием или созданием и т. п. выполняется через команды меню или кнопки панели инструментов.
Просмотр загруженных данных из файла, а также формируемых в приложении, данных выполняется в диалоговом окне с использованием элемента управления Listbox. В этом списке отображается либо все данные, либо данные, формируемые в соответствии с функцией, определенной в индивидуальном задании. Порядок вывода управляется с помощью кнопок. Исходно выводится полный список.
Формирование данных в приложении осуществляется в другом диалоговом окне с использованием элементов управления Combobox и Edit.
До задания имени файла элементы меню и соответствующие кнопки управления открытием и сохранением данных в файл должны быть не доступны.
После задания имени файла все команды работы с файлом должны иметь место только для этого файла.
Имя заданного файла должно отображаться в строке статуса.
Похожие статьи
-
Цель Работы - изучить приемы создания и использования шаблонов классов. - Теоретические сведения Достаточно часто встречаются классы, объекты которых...
-
Цель Работы - научиться использовать элемент управления ListBox а также основные методы класса СListBox. Использование возможности контроля правильности...
-
Цель Работы - изучить основные способы работы с пользовательским типом данных "класс", его объектами, методами и способы доступа к ним. - Теоретические...
-
Цель Работы - изучить принципы работы элементов управления Progress и Slider. Получить навыки по самостоятельному созданию модальных диалоговых окон. -...
-
Цель Работы - изучить одну из базовых концепций ООП, наследование классов в С++, заключающуюся в построении цепочек классов, связанных иерархически,...
-
Объект ориентированный класс программирование Цель Работы - изучить методику создания одномерных динамических символьных массивов при помощи...
-
Установка и системные требования приложения Для установки программы необходимо зайти в папку "Файловый менеджер [Setup]", и запустить файл "setup. exe"....
-
Для перехода в административный раздел системы необходимо выбрать пункт меню "Файл" > "Администратор", после чего откроется окно, показанное на...
-
Структура системы В ходе разработки выпускной квалификационной работы использовались базы данных, созданные в среде MySQL Workbench, и создано клиентское...
-
Цель Работы - научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а...
-
Введение - Технология разработки программного обеспечения систем управления
С++ является языком объектно-ориентированного программирования (ООП). Объект - абстрактная сущность, наделенная характеристиками объектов реального мира....
-
Система функционирует как распределенная трехзвенная клиент-сервер-СУБД программная архитектура. В среде серверной операционной системы Microsoft Windows...
-
Выбор средств реализации информационной системы Названные в параграфе 1.4. настоящей работы задачи могут быть решены тремя типами средств автоматизации:...
-
В данном разделе была разработана функциональная схема работы программного комплекса, которая в общем виде описывает состав комплекса, характер и виды...
-
ОС Android - операционная система для мобильных телефонов, планшетных компьютеров и нетбуков, основанная на ядре Linux. Изначально разрабатывалась...
-
Из универсальных языков программирования сегодня наиболее популярны следующие: Бейсик (Basic), Паскаль (Pascal), Си++ (C++), Ява (Java). Для каждого из...
-
В результате проведенной работы были спроектированы и реализованы модули редактора и вебсайта. Были решены поставленные в работе задачи в полном объеме....
-
Общее описание программного обеспечения, реализующего разработанный алгоритм Основной идеей дипломного проекта, является реализация алгоритма...
-
1. Изучение теоретических аспектов использования: MS Word, MS Excel, MS Access, Paint и Photoshop... (ППО) Часть 1 : Руководство по выполнению...
-
Процесс разработки Android-приложения, Системные требования - Создание приложения
Разработка приложения "KotobaQuiz" включает три этапа: 1) создание базы данных с таблицами, содержащими задания и варианты ответов, и таблицами, которые...
-
Решения по пользовательскому интерфейсу в части серверного приложения (вебсайт) Для реализации требований к серверному приложению (Сайту), объединяющему...
-
В настоящее время систем видеонаблюдения на рынке продается очень много, и обычно бывает очень сложно принять правильное решение, выбрать нужное решение....
-
В этой главе представлено описание инструментов и методов, использованных при написании кода программы. Инструменты разработки серверной части Для...
-
Если в результате поиска на схеме по данным из таблицы будет найдено несколько экземпляров оборудования (т. е. с одинаковой маркировкой или...
-
Назначение программы Программное средство на тему "Калькулятор коммунальных услуг" предназначено для повышения эффективности расчета коммунальных...
-
Общие сведения о тестировании Данный раздел посвящен проведению тестирования клиентского приложения. Тестирование для серверной части системы не...
-
По результатам обследования необходимо выбрать архитектуру системы. Для корпоративных систем рекомендуется архитектура клиент/сервер. Архитектура...
-
В течении года от команды разработчиков пришло 6 пакетов, содержащих изменения в ядре программы. Для каждого пакета составлялось в среднем от 1-ого до...
-
Тестируемый программный продукт является высокопроизводительным приложением, которое предоставляет возможность создания и настройки сетей беспроводного...
-
Заключение - Программное обеспечение для пропускной системы на основе технологии NFC
Обеспечение удобной пропускной системы - важная и актуальная задача. Появление новых технологий, таких как NFC и HCE, позволяет решить эту проблему. В...
-
Проведем сравнительную оценку напряженность процесса эксплуатации системы в процессе работы. Для этого заполним таблицу 7.2, в которой отражается степень...
-
Наименование системы Программная система управления контентом портала с архивом конструкторской документации. Цели, назначение и область использования...
-
Введение - Программное обеспечение для пропускной системы на основе технологии NFC
Массовые мероприятия стали неотъемлемой частью современного мира. Для таких мероприятий требуется быстрая организация временного разделенного доступа для...
-
Особенностью API для коммуникации с СКУД является то, что авторизация методов происходит не с помощью токена, а с помощью проверки IP адреса клиента на...
-
Программное обеспечение и его виды - Программное обеспечение информационных компьютерных систем
Windows программный компьютер операционный Программное обеспечение (software) - это набор команд, управляющих работой компьютера. Без программного...
-
Тестирование - Разработка и сопровождение программного обеспечения
Тестирование - ряд мероприятий, связанных с различного рода испытаниями объекта тестирования с целью установления соответствия или несоответствия его...
-
В современной технологии баз данных предполагается, что создание базы данных, ее поддержка и обеспечение доступа пользователей к ней осуществляются...
-
Алгоритм работы. В результате работы АИС генерируются три xml документа - два со структурой сравниваемых баз данных и один с результатами сравнения. В...
-
Каждая СУБД имеет особенности в представлении структуры таблиц, связей, определении типов данных и т. д. которую необходимо учитывать при проектировании....
-
Табличный процессор Excel фирмы Microsoft предназначен для ввода, хранения, обработки и выдачи больших объемов, данных в виде, удобном для анализа и...
Лабораторная работа №14. MDI - приложение. Работа с данными в архитектуре "Документ/представление" ("Document/view") - Технология разработки программного обеспечения систем управления