Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач Ситников / Курсовая.docx
Скачиваний:
6
Добавлен:
04.06.2022
Размер:
3.58 Mб
Скачать

Формализованное словесное описание алгоритма решения задачи

Параметрические уравнение - уравнение, которое кроме неизвестной величины содержит также другую дополнительную величину, которая может принимать различные значения из некоторой области. Эта дополнительная величина в уравнении называется параметр. Примером такого уравнения служит уравнение из задания:

X=r(k+1)*( cos(f) – cos((k+1)*f)/(k+1)),

Y= r(k+1)*( sin(f) – sin((k+1)*f)/(k+1)),

где r, k, f – параметры, при этом r – радиус обегающей окружности, R – радиус обегаемой окружности, k= R/r, f > 2*PI – угол поворота обегающей окружности.

Вызывается функция просчета точек графика, в ней для заданного диапазона считается отступ (для переноса графика в центр и передвижения графика) и масштаб графика в соответствии с заданной величиной и координаты точек сохраняются в вектор (динамический массив).

После выполняется функция рисования графика. В ней создается массив, в который передаются указатели значения точек графика, после чего он рисуется последовательно от точки к точке в окне.

При изменении параметров в полях ввода, их значения передаются в функцию расчета графика, происходит перестроение графика.

При нажатии кнопки сохранения вызывается функция сохранения графика в файл, после чего график сохраняется в требуемом формате (.bmp).

Варианты взаимодействия программы и оператора (Use Case)

Рисунок 3. Use Case

Разработка дружественного интерфейса

Дружественный пользовательский интерфейс – это такой интерфейс, который помогает пользователю осуществлять взаимодействие с программой наиболее простым образом. То есть с таким интерфейсом легко работать.

Пользовательский интерфейс содержит сведения о программе, об авторе, название и иконку.

Интерфейс должен соответствовать следующим принципам:

  • Кнопки, поля ввода выравниваются по ширине, высоте и положению в окне.

  • Расстояния между соседними (по вертикали) элементами должно быть одинаково.

  • Аккуратность.

Интерфейс использует:

1. Поля ввода

1.1. R, r – радиусы окружностей (1,2)

1.2. Масштаб (3)

1.3. Х, У – расположение (4,5)

2. Поясняющие тексты

2.1. Название программы

2.2. Подписи у полей ввода

2.3. Подпись, обязующая пользователя к прочтению информации

2.4. Параметрическое уравнение функции, на основе которого рисуется график

3. Ползунки

3.1 Скорость отрисовки графика (6)

4. Кнопки

4.1. Построение графика для введенных параметров (7)

4.2. Информация о вводе параметров для корректной работы (8)

4.3. Стирание графика (9)

4.4. Сохранение графика в формате BMP (10)

4.5. «Ок» - выход из программы (11)

5. Поля вывода

5.1 Поле вывода графика (12)

Рисунок 4. Пользовательский интерфейс

Рисунок 5. О графике

Блок-схема движения данных (Data flow diagram)

Рисунок 6. Блок-схема движения данных

Выбор и обоснование типов переменных, разработка структур данных

1. CGraphicDlg:

CMyPaint m_Graph; //переменная графика

CMyCalc m_Calc; //переменная класса СMYCalc

CString SR; //переменная поля ввода R

CString Sr; //переменная поля ввода r

CString SScale; //переменная поля ввода масштаба

double m_R, m_r, m_a, m_X, m_Y; //локальные переменные параметров

CSliderCtrl m_Slider; //переменная ползунка

int m_DrawSpd; //переменная скорости отрисовки

CString SdX; //переменная поля ввода X

CString SdY; //переменная поля ввода Y

2. CMyCalc:

double xMax; // max x val rad

int nPoints; // points in graph

int yCenter;//центр y

int xCenter;//центр x

int yMax;//максимальная координата y

int R;//радиус большой окружности

int r;//радиус катящейся окружности

double fi0;//начальный угол

double fiMax;//конечный угол

double a;//переменная масштаба

double dfi;//малый угол

double m;//параметр

int current;//счетчик точек

double dX; //сдвиг по Х

double dY; //сдвиг по У

MyParams_t m_Param;//переменная структуры

3. CMyPaint:

size_t m_Npt;//количество точек

bool m_click; //логическая переменная срабатывания рисовки

std::vector<CPoint> vec;//динамический массив

4. CAboutDlg:

Используется для управления диалоговым окном «О графике…».

5. CWinApp:

Главный класс приложения в MFC, инкапсулирует инициализацию, выполнение и завершение приложения для Windows операционной системы.

6. CGraphicApp:

Является классом программы в целом. Наследник класса CWinApp.

7. СRect:

Служит для определения прямоугольника.

8. CDC: Класс объектов контекста.

9. CPaintDC:

Класс контекста устройства, производный от CDC, используемый для рисования клиентской области.

10. CButton:

Предоставляет функции кнопочных элементов.

11. CPoint:

Предоставляет пару целочисленных координат X и Y, которые определяют точку на плоскости.

12. CString:

Служит для работы со строковыми типами данных.

13. CDialogEx:

Задает цвет фона и фоновое изображение для диалогового окна.

14. CWnd:

Базовый класс, предоставляет функциональность всех классов окон библиотеки MFC.

15. CDataExchange:

Поддерживает процедуры обмена данными диалогового окна (DDX) и проверки данных диалогового окна (DDV), используемые классами Microsoft Foundation.

16. CSliderCtrl:

Предоставляет функциональные возможности стандартного элемента управления "ползунок" Windows.

17. CPen:

Служит для работы с пером.

18. CImage:

Сохранение картинки в различных графических форматах.

19. CFont:

Класс работы со шрифтами.

20. CFileDialog:

Инкапсулирует общее диалоговое окно, используемое для операций открытия файла или сохранения файлов.