- •Спецификация
- •Постановка цели, задач и описание предметной области
- •Формализованное словесное описание алгоритма решения задачи
- •Варианты взаимодействия программы и оператора (Use Case)
- •Разработка дружественного интерфейса
- •Блок-схема движения данных (Data flow diagram)
- •Выбор и обоснование типов переменных, разработка структур данных
- •Вводимые и выводимые параметры и их типы
- •Диаграмма классов
- •Структура проекта, перечисление нужных файлов
- •Инструкция по использованию
- •Текст программы и файлов заголовков с комментариями.
- •Копии экрана при работе программы
- •Контрольный пример, сравнение результата с эталоном (MathCad)
- •Ведомость соответствия программы спецификации
Формализованное словесное описание алгоритма решения задачи
Параметрические уравнение - уравнение, которое кроме неизвестной величины содержит также другую дополнительную величину, которая может принимать различные значения из некоторой области. Эта дополнительная величина в уравнении называется параметр. Примером такого уравнения служит уравнение из задания:
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:
Инкапсулирует общее диалоговое окно, используемое для операций открытия файла или сохранения файлов.