Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Описание логической структуры



Используемые методы.

В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инструментарий, облегчающий и ускоряющий создание проектов в среде Visual C++. Для разработки курсового проекта понадобится мастер MFC AppWizard (exe)– при помощи которого можно создать проект Windows-приложения которое имеет однодокументный, многодокументный или диалоговый интерфейс. Для данного проекта потребуется многодокументный интерфейс.

Программа состоит из следующих модулей, представленных на рис.1.

 

Рис.1. Программные модули проекта

 

При создании приложений автоматически создается 4 основных класса:

- CKURSOVIKApp - класс, производный от CWinApp;

- CMainFrame, CChildFrame - классы, производные от CFrameView;

- CKURSOVIKDoc - класс, производный от CDocument;

- CKURSOVIKView - класс, производный от CView.

Класс CWinApp образует все прочие элементы приложения, данный класс получает все сообщения о событиях и затем направляет их классам CFrameView и CView.

Класс CFrameView – класс окна, образующий его рамку. Он содержит меню, панель инструментов, полосы прокрутки, а также многие другие видимые объекты, относящиеся к рамке окна. Данный класс определяет какая часть документа является видимой в каждый момент времени.

Класс CDocument содержит структуры, позволяющие хранить и манипулировать вводимыми в документ данными. Данный класс получает информацию, вводимую с помощью класса CView и посылает данному классу информацию для ее дальнейшего отображения. Кроме этого, класс CDocument ответственен за сохранение документа в файле и его считывания.

Класс CView отвечает за графическое представление документа пользователю. Данный класс передает введенную информацию классу CDocument, а также получает от него информацию для графического вывода. Большая часть создаваемого для этого класса дополнительного кода состоит из кода, позволяющего рисовать документ, показывая его пользователю, а также обрабатывать вводимую пользователем информацию. В состав класса CView входят несколько дочерних классов, представленных в таблице 1.

Таблица 1

Класс Описание
CEditView Осуществляет функционирование окна редактирования текста, может быть использован для осуществления несложных операций редактирования.
CFormView Базовый класс, содержащий элементы управления средств просмотра, может быть использован для создания документов типа форм в приложении
CHtmlView представляет функции hmtl-броузера, осуществляет обработку адресов URL, обработку ссылок и т.п., осуществляет хранение списка истории посещений, позволяя преходить на предыдущую страницу и возвращаться к просмотренным ранее страницам.
CListView Осуществляет функции просмотра списка.
CRichEditView Осуществляет функции форматирования букв и абзацев. Данный класс можно использовать для создания функций текстовых редакторов в приложении.
CScrollView Осуществляет функционирование возможностей прокручивания документа в классе CView.
CTreeView Осуществляет функционирование возможности просмотра в виде дерева.

Вкладка Class View включает следующие классы: CAboutDlg, CMainFrame, CKURSOVIKApp, CKURSOVIKDoc, CKURSOVIKView, которые за исключением класса CAboutDlg, являются производными от четырех основных классов, описанных выше. Класс CAboutDlg создает диалоговое окно About в меню Help нашего приложения. Вкладка Resource View содержит основные ресурсы которые можно использовать в нашем приложении – меню, иконки, диалоги, кнопки и т.д. Вкладка FileVeiw содержит файлы, с расширением.CPP, .H и файлы ресурсов, которые создал AppWizard для созданного приложения. Описание созданных файлов приводится выше.

Главный модуль это KURSOVIK classes который содержит следующие модули:

1) CAboutDlg в котором имеются модули: CAboutDlg и DoDataExchange.

2) CKURSOVIKApp данный класс получает все сообщения о событиях и затем направляет их классам CFrameView и CView.

3) CKURSOVIKDoc содержит структуры, позволяющие хранить и манипулировать вводимыми в документ данными.

4) CKURSOVIKView отвечает за графическое представление документа пользователю. Данный класс передает введенную информацию классу CDocument, а также получает от него информацию для графического вывода. Этот класс содержит несколько основных модулей:

a. конструктор класса CKURSOVIKView() – отвечает за выделение памяти.

b. OnDialog() отвечает за инициализацию диалогового окна.

c. OnDraw(CDC* pDC) отвечает за вывод необходимых данных на экран.

d. OnMinus() отвечает за уменьшение масштаба по нажатию кнопки “-”.

e. OnPlus() отвечает за увеличение масштаба по нажатию кнопки “+”.

f. PreCreateWindow(CREATESTRUCT& cs) отвечает за изначальные значения переменных.

5) CMainFrame класс окна, образующий его рамку. Он содержит меню, панель инструментов, полосы прокрутки, а также многие другие видимые объекты, относящиеся к рамке окна. Данный класс определяет какая часть документа является видимой в каждый момент времени.

6) InputDlg созданный вручную класс, отвечающий за ввод пользователем данных.

Алгоритм программы.

Код программы

// Прописываем необходимый код в конструкторе класса

CKURSOVIKView:: CKURSOVIKView()

{

// TODO: add construction code here

Gray.CreatePen(PS_SOLID, 1, RGB(125, 125, 125));

Black.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));

Blue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));

Red.CreatePen(PS_SOLID, 1, RGB(255, 0, 0));

 

Font.CreatePointFont(70, " Comic" );

}

 

//Метод отвечающий за белую область окна программы и за отображение

//в ней данных

void CKURSOVIKView:: OnDraw(CDC* pDC)

{

CKURSOVIKDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

CRect ClRect;

GetWindowRect(& ClRect);

W=ClRect.Width(); //Присвоили W ширину окна

H=ClRect.Height(); //Присвоили H высоту окна

 

 

//СЕТКА {...

pDC-> SelectObject(& Gray); //серый цвет

 

for (i=W/2; i< W; i+=mashtab)

{

if (i! =W/2 & i> 20 & i< W-20)

{

//Вертикальные линии правее оси Y

pDC-> MoveTo(i, 20);

pDC-> LineTo(i, H-20);

//Вертикальные линии левее оси Y

pDC-> MoveTo(W-i, 20);

pDC-> LineTo(W-i, H-20);

}

}

for (i=H/2; i< H; i+=mashtab)

{

 

if (i! =H/2 & i> 20 & i< H-20)

{

//Горизонтальные линии ниже оси Х

pDC-> MoveTo(20, i);

pDC-> LineTo(W-20, i);

//Горизонтальные линии выше оси Х

pDC-> MoveTo(20, H-i);

pDC-> LineTo(W-20, H-i);

}

}

pDC-> SelectObject(& Black); //цвет x & y

 

pDC-> MoveTo(W/2, 0);

pDC-> LineTo(W/2, H);

 

pDC-> MoveTo(0, H/2);

pDC-> LineTo(W, H/2);

 

//ПОДПИСИ {...

pDC-> SelectObject(& Font);

pDC-> SetTextColor(RGB(0, 0, 255)); //синий цвет текста

k=1;

hag=0;

for (i=1; i< W; i++)

{

oldhag = hag;

hag = hag+mashtab*k;

if (mashtab< 10 & mashtab > 5)

{

k=2;

i++;

}

if (mashtab< =5 & mashtab> 3)

{

k=3;

i+=k-1;

}

hag = oldhag+mashtab*k;

if (hag< W/2-25 & mashtab> 3)

{

S.Format(" %d", i); //нумерация справа от Y

pDC-> TextOut(W/2+hag+mashtab/8, H/2+mashtab/8, S);

S.Format(" %d", -i); //нумерация слева от Y

pDC-> TextOut(W/2-hag+mashtab/8, H/2+mashtab/8, S);

}

}

hag = 0;

for (i=1; i< H; i++)

{

oldhag = hag;

hag = hag+mashtab*k;

if (mashtab < 10 & mashtab > 5)

{

k=2;

i++;

}

if (mashtab < = 5 & mashtab> 3)

{

k=3;

i+=k-1;

}

hag = oldhag+mashtab*k;

if (hag < H/2-20 & mashtab> 3)

{

S.Format(" %d", -i); //нумерация снизу от X

pDC-> TextOut(W/2+mashtab/8, H/2+mashtab/8+hag, S);

S.Format(" %d", i); //нумерация сверху от X

pDC-> TextOut(W/2+mashtab/8, H/2+mashtab/8-hag, S);

}

}

hag = 0;

pDC-> TextOut(W/2+mashtab/8, H/2+mashtab/8, " 0" ); //середина (0, 0)

pDC-> TextOut(W/2+10, mashtab/8, " Y" ); //ось Y

pDC-> TextOut(W-mashtab*3/4, H/2+mashtab/8, " X" ); //ось Х

//............}

//СТРЕЛКИ {...

for (i=0; i< 5; i++)

{

//Горизонтальная стрелка Х

pDC-> MoveTo(W-5, H/2);

pDC-> LineTo(W-15, H/2-i);

pDC-> MoveTo(W-5, H/2);

pDC-> LineTo(W-15, H/2+i);

//Горизонтальная стрелка Y

pDC-> MoveTo(W/2, 0);

pDC-> LineTo(W/2-i, 15);

pDC-> MoveTo(W/2, 0);

pDC-> LineTo(W/2+i, 15);

}

//............}

//ГРАФИК {...

pDC-> SelectObject(& Red); //красный цвет

for (i=-W/2; i< W/2; i++)

{

x[i+W/2]=i;

y[i+W/2]=sin(x[i+W/2]*b/mashtab)*mashtab*a;

}

for (i=20; i< W-21; i++)

{

pDC-> MoveTo(x[i]+W/2, H/2-y[i]+1);

pDC-> LineTo(x[i+1]+W/2, H/2-y[i+1]+1);

}

//...}

}

 

Метод обработки диалогового окна OnDialog() позволяет визуализировать окно ввода данных (рис.2).

 

 

Рис.2. Окно ввода данных

 

void CKURSOVIKView:: OnDialog()

{

// TODO: Add your command handler code here

InputDlg dlg;

int result = dlg.DoModal();

if (result==IDOK)// подтверждение нажатия кнопки OK

{

CKURSOVIKDoc *pDoc = GetDocument();

ASSERT_VALID (pDoc);

a=dlg.m_a; // В a помещается текст из m_a

b=dlg.m_b; // В b помещается текст из m_b

Invalidate();

 

}

}

 

В результате запуска программного продукта на монитор выводится окно, представленное на рис.3.

 

 

Рис.3. Внешний вид программы.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-29; Просмотров: 895; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.066 с.)
Главная | Случайная страница | Обратная связь