Добавлен: 25.10.2023
Просмотров: 82
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра РЭС
Курсовая РАБОТА
по дисциплине «Информационные технологии»
Тема: Приложение с графическим интерфейсом на языке C++
Студент гр. 2193 | | Смирнов Д.А. |
Преподаватель | | Воронова А.А. |
Санкт-Петербург
2023
ЗАДАНИЕ
на курсовую работу
Студент Смирнов Д.А. | ||
Группа 2193 | ||
Тема работы: Приложение с графическим интерфейсом на языке C++ | ||
Исходные данные: Вариант 2 1. Создать приложение на основе диалога. Название проекта: Familia_KR_1234_V1, где Familia – фамилия автора, 1234 – номер группы, V1 – номер варианта. 2. Разработать пользовательский интерфейс, выполнить расчеты и графическую визуализацию результатов в соответствии с введенными пользователем параметрами. 3. Текст заголовка окна диалога должен содержать: Фамилия И.О., номер группы, вариант задания 4. Нарисовать в ресурсах иконку вашего приложения, содержащую начальные буквы имени и фамилии. 5. В диалоговом окне CAboutDlg (описание сведений о приложении) указать следующую информацию: «Программа составлена студентом Фамилия И.О. Вариант задания: номер варианта Дата версии: дд.мм.гг» 6. Осуществить формирование графического представления изменений функций по таймеру: f1 = cos(A * cos(2.0*π*i/k1)) f2 = B * cos(2.0*π*i/k2 + φ) f3 = sin(2.0*π*i/k3+ 2.0*π/9.0) f4 = – f1 + f2 + f3 Предусмотреть возможность изменения значений переменных: A, В, k1, k2, k3, φ Диапазон изменений для: А = 0.5…5.0 В = 0.7…1.9 φ = π/9.0…7.0π/4.3 7. Реализовать одновременное или выборочное отображение графиков функций. В диалоговом окне отобразить формулы функций (п.6) так, чтобы было понятно соответствие выбора и отображения функции на графике. 8. Обеспечить возможность выбора: – цвета прямоугольной области (фона) с помощью Combo Box. Выбор осуществляется из трех цветов; – стиля линии сетки с помощью Radio Button (PS_DASH, PS_DOT, PS_DASHDOTDOT); – с помощью Slider цвета линий графиков f1, f2, f4 (для f1 – изменяется второй параметр функции RGB, для f2 – первый, для f4 – третий). 9. Обеспечить возможность изменения периода таймера в пределах: 100…1000 мс. 10. Вывести текущие значения функций f1, f2, f3 в одном элементе, f4 – в другом. 11. Обеспечить отображение графиков функций так, чтобы графики не выходили за пределы области рисования по вертикальной оси, т.е. при изменении значений динамически вписывались в область рисования. 12. В программе должны быть предусмотрены элементы управления, по которым: – устанавливаются начальные значения параметров (значения переменных, выбранные для отображения графиков функций, цвета и т.д.); – начинается рисование графиков; – останавливается рисование графиков; – программа возвращается в исходное состояние: осуществляется сброс значений параметров, очищается область рисования, сбрасывается таймер, обнуляется счетчик срабатывания таймера и т.д. Примечания: 1. Интерфейс приложения и состав элементов управления (кнопок, элементов ввода-вывода и т.д.) не ограничен только указанными в задании и остается на усмотрение автора приложения. 2. При вводе значения какого-либо параметра, выходящего за указанные в задании пределы, необходимо оповестить об этом пользователя и предусмотреть повторный ввод. | ||
Содержание пояснительной записки: Формализованное словесное описание постановки задачи. Диалоговое окно, описание назначения элементов управления. Назначение переменных и констант. Диаграмма классов. Карты сообщений проекта. Структура проекта, файлы проекта. Алгоритмическое описание проекта. Текст программы. Результаты работы программы. | ||
Дата выдачи задания: 05.04.2023 | ||
Дата сдачи: с 17.05.2023 | ||
Дата защиты: 17.05.2023 – 09.06.2023 | ||
Студент | | Смирнов Д.А. |
Преподаватель | | Воронова А.А. |
Аннотация
Содержание курсовой работы составляет готовое к использованию диалоговое окно, которое позволяет построить 4 функции методом перерисовки поля static text с настройкой аргументов и косинуса, синуса и других переменных, а также позволяющее в определённых рамках кастомизировать основное окно для вывода графиков функций для более удобного восприятия.
В результате выполнение работы было разработано диалоговое окно, точно соответствующее требованиям технического задания. Были учтены все примечания, настроены соответствующие оповещения пользователя о некорректно введённых параметрах и были реализованы все необходимые стили настройки.
Summary
The content of the course work is a ready-to-use dialog box that allows you to build 4 functions by redrawing the static text field with the setting of arguments and cosine, sine and other variables, as well as allowing you to customize the main window for displaying graphs of functions for more convenient perception within a certain framework.
As a result of the work, a dialog box was developed that exactly meets the requirements of the terms of reference. All the notes were taken into account, the corresponding user notifications about incorrectly entered parameters were configured, and all the necessary configuration styles were implemented.
содержание
Введение | 7 |
1. Формализованное словесное описание постановки задачи | 8 |
2. Диалоговое окно. Описание назначения элементов управления | 9 |
3. Назначение переменных и констант | 10 |
4. Диаграмма классов | 13 |
5. Карты сообщений проекта | 15 |
6. Структура проекта, файлы проекта | 17 |
7. Алгоритмическое описание проекта | 19 |
8. Текст программы | 21 |
9. Результаты работы программы | 48 |
Заключение | 51 |
введение
Целью работы являлась разработка пользовательского интерфейса, который выполнял расчет нескольких настраиваемых пользователем функций с задаваемыми переменными и визуализировал их с определенным набором графических параметров. Основной задачей была реализация настройки большого спектра параметров, которая решилась комбинированием основных элементов управления диалоговым окном библиотеки MFC. В реализации были задействованы такие элементы как: radio-button, combo-box, check-box, slider-control.
1.Формализованное словесное описание ПОСТАНОВКИ задачи.
Основываясь на выданном варианте задания, сформулировать, что необходимо выполнить в рамках поставленной задачи.
В рамках поставленной задачи необходимо разработать диалоговое окно, которое осуществляет вывод значений и форматирование графического представления изменений следующих функций по таймеру:
f1 = cos(A * cos(2.0*π*i/k1))
f2 = B * cos(2.0*π*i/k2 + φ)
f3 = sin(2.0*π*i/k3+ 2.0*π/9.0)
f4 = – f1 + f2 + f3
с возможностью настройки следующих параметров:
A, В, k1, k2, k3, φ
при помощи разных элементов управления библиотеки MFC в следующих диапазонах:
А = 0.5…5.0
В = 0.7…1.9
φ = π/9.0…7.0π/4.3
и одновременным/выборочным отображением графиков. В диалоговом окне должна быть реализована возможность остановки, сброса и возврата графика в исходное состояние, а также отображение различных графических компонентов в нескольких стилях.
Графики должны отображаться строго в своём окне, а в случае введения пользователя неверных параметров (несоблюдение диапазонов), диалоговое окно должно об этом предупреждать.
2. Диалоговое окно. Описание назначения элементов управления
В рамках технического задания был разработан пользовательский интерфейс
Рисунок 1 – Описание назначение всех элементов управления
3. НАЗНАЧЕНИЕ ПЕРЕМЕННЫХ И КОНСТАНТ
varF1 – тип float, получает значение первого графика функций
varF2 – тип float, получает значение второго графика функций
varF3 – тип float, получает значение третьего графика функций
varF4 – тип float, получает значение четвертого графика функций
kkk – тип int, задействована в циклах для очистки и перерисовки окна
var – тип float, получает значение m_Edit1_Var как значение с плавающей точкой
var7 – тип int, получает значение m_Edit1_Var как значение int
rc – тип Crect, определение размеров прямоугольной области
pG – тип Cpen, объект перо
ParA = 0.5;
ParB = 0.7;
ParPhi = M_PI / 9.0;
ParK1 = 100;
ParK2 = 100;
ParK3 = 100;
Period = 100;
(тип float Начальные параметры в графиках функций)
Period – int, период таймера
m_Slider1_Var
m_Slider2_Var
m_Slider3_Var
(значения ползунков типа int)
m_List1_Var – тип Cstring, значение параметров графиков функций
m_List2_Var – тип Cstring, значение самих графиков функций f1, f2, f3
m_List3_Var – тип Cstring, значение графика функции f4
m_Check1_Var
m_Check2_Var
m_Check3_Var
m_Check4_Var
тип bool, отображение/скрытие графиков функций
x_start – int, Установка стартовой точки графика по x
y_start – int, Установка стартовой точки графика по y
y_Step_Grid – int, Установка шага сетки по x
x_Step_Grid – int, Установка шага сетки по y
j – int, счетчик в цикле прорисовки линий вертикальной сетки
vecSize – int, получение текущего размера вектора
i - – int, счетчик в цикле прорисовки линий графика
style – int, стиль сетки
display – bool, цвет фона
m_iTimer
m_x, m_y
m_w
m_h
int, значения таймера
m_vecGraph1;
m_vecGraph2;
m_vecGraph3;
m_vecGraph4;
int, хранение значения функции после преобразования
4. диаграмма классов
Диаграмма классов представлена на рис.1
Рисунок 2. Диаграмма классов
CAboutDlg - рисование графиков используется для управления диалоговой панелью About
CSmirnovKR2193V2App - это класс, производный от CwinApp. Отвечает за работоспособность программы
CwinApp - это структура всего приложения, используемая для управления началом и концом приложения
CSmirnovKR2193V2Dlg - Основной интерфейс, отображаемый после запуска программы. Основной класс диалогового окна, используемый для управления поведением основного диалогового окна
CGraph – класс, ответственный за рисование графика в среде
CDialogEx - определяет цвет фона и фоновое изображение диалогового окна.
CDialog – базовый класс диалоговых окон
СWnd – предоставляет базовую функциональность всех классов окон в библиотеке MFC
CWinThread - класс, представляющий поток исполнения в приложении.
CCmdTarget - базовый класс для библиотеки MFC/
CStatic – статический элемент управления
5. КАРТЫ СООБЩЕНИЙ ПРОЕКТА
Карта сообщений для Dlg:
-
ON_WM_SYSCOMMAND() – обработка системных событий -
ON_WM_QUERYDRAGICON() – отображение курсора -
ON_WM_TIMER() – таймер, вычисление значений функций, вывод значений, вызов сообщения ON_WM_PAINT() класса CGraph. -
ON_WM_PAINT() – рисование графика -
ON_BN_CLICKED(IDC_BUTTON1,&CSmirnovKR2193V2Dlg::OnBnClickedButton1) – запускает таймер -
ON_BN_CLICKED(IDC_BUTTON2, &CSmirnovKR2193V2Dlg::OnBnClickedButton2) – останавливает таймера. -
ON_BN_CLICKED(IDC_BUTTON4, &CSmirnovKR2193V2Dlg::OnBnClickedButton4) – перезапускает программу. -
ON_BN_CLICKED(IDC_RADIO (1-8) &CSmirnovKR2193V2Dlg::OnBnClickedRadio(1-8)) – выбирает параметр функции для изменения-
Выбор конкретного параметра для изменения-
1-6 – изменение A, B, Phi, K(1-3) -
7 – периода -
8 – выбор настройки изменения отображения графика
-
-
-
ON_BN_CLICKED(IDC_BUTTON3, &CSmirnovKR2193V2Dlg::OnBnClickedButton3) – подтвердить изменение параметра -
ON_BN_CLICKED(IDC_RADIO(9-11), &CSmirnovKR2193V2Dlg::OnBnClickedRadio(9-11)) – выбор стиля сетки.-
9 - PS_DASH -
10 - PS_DOT -
11 - PS_DASHDOTDOT
-
-
ON_CBN_SELCHANGE(IDC_COMBO2, &CSmirnovKR2193V2Dlg::OnCbnSelchangeCombo2) – выбор цвета фона сетки для изменения -
ON_NOTIFY(NM_RELEASEDCAPTURE,IDC_SLIDER(1-3), &CSmirnovKR2193V2Dlg::OnNMReleasedcaptureSlider(1-3)) – слайдер цвета-
1 – изменение зеленого оттенка для f1 -
2 – изменение красного оттенка для f2 -
3 - изменение синего оттенка для f4
-
-
Карта сообщений для CGraph:
ON_WM_PAINT() – отвечает за рисование графиков функций.
Через определённый период времени при помощи сообщения WM_TIMER вызывается функция ON_TIMER(), которая считает значение графиков функций и округляет их. Далее вызывается функция обработчик ON_PAINT(), которая перерисовывает график.
6. структура проекта, файлы проекта
Рисунок 3 – Обозреватель решений
-
Smirnov_KR_2193_V2.cpp - основной файл приложения. В нем определены методы основного класса приложения CSmirnovKR2193V2App. -
Smirnov_KR_2193_V2Dlg.cpp - определение методов класса Smirnov_KR_2193_V2Dlg. -
pch.cpp - файл исходного кода, соответствующий предварительно скомпилированному заголовочному файлу pch.h -
CGraph.cpp – определение методов класса CGraph. -
CGraph.h - заголовочный файл для CGraph. -
framework.h - предварительно скомпилированный заголовок -
pch.h - предварительно скомпилированный заголовок -
Resource.h - файл заголовка, созданный средой разработки, которая содержит определения символов. -
Smirnov_KR_2193_V2.h - описание главного класса приложения CSmirnovKR2193V2App -
Smirnov_KR_2193_V2Dlg.h - описание класса главной диалоговой панели, который называется Smirnov_KR_2193_V2Dlg. -
targetver.h - предварительно скомпилированный заголовок -
Smirnov_KR_2193_V2.ico – пиктограмма приложения. -
SmirnovKR2193V2.rc – файлы ресурсов, которые нельзя редактировать -
ClassDiagram.cd - Диаграмма классов
7. алгоритмическое описание проекта
Алгоритм для кнопки «Стоп»:
-
Останавливается таймер
Алгоритм для кнопки «Перезапуск»
-
Очистка List (1,2,3), Chek (1,2,3,4) и Combo 2. -
Возврат параметров к начальным значениям. -
Возврат флажков и ползунков в начальное положение. -
Вывод параметров и добавление вариантов выбора в Combo box. -
Очистка векторов и сброс значения таймера. -
Перерисовка поля элемента Static Text при помощи макроса ON_WM_PAINT.
Алгоритм для кнопки «Старт»:
-
Запуск таймера
Алгоритмы для Slider Control:
-
Получение положение слайдера. -
Изменение параметра на значение позиции ползунка
Алгоритмы для Radio Button:
-
Изменение значений переменной
Алгоритм для Combo box.
-
Получение положения курсора -
Получение текста из позиции курсора -
Изменение периода