Добавлен: 25.10.2023
Просмотров: 201
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНОБРНАУКИ РОССИИСанкт-Петербургский государственныйэлектротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина)Кафедра РЭСКурсовая РАБОТАпо дисциплине «Информационные технологии»Тема: Приложение с графическим интерфейсом на языке C++
Санкт-Петербург2023ЗАДАНИЕна курсовую работу
АннотацияСодержание курсовой работы составляет готовое к использованию диалоговое окно, которое позволяет построить 4 функции методом перерисовки поля static text с настройкой аргументов и косинуса, синуса и других переменных, а также позволяющее в определённых рамках кастомизировать основное окно для вывода графиков функций для более удобного восприятия.В результате выполнение работы было разработано диалоговое окно, точно соответствующее требованиям технического задания. Были учтены все примечания, настроены соответствующие оповещения пользователя о некорректно введённых параметрах и были реализованы все необходимые стили настройки.SummaryThe 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.содержание
введениеЦелью работы являлась разработка пользовательского интерфейса, который выполнял расчет нескольких настраиваемых пользователем функций с задаваемыми переменными и визуализировал их с определенным набором графических параметров. Основной задачей была реализация настройки большого спектра параметров, которая решилась комбинированием основных элементов управления диалоговым окном библиотеки 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 как значение intrc – тип 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_Varm_Slider2_Var
m_Slider3_Var(значения ползунков типа int)m_List1_Var – тип Cstring, значение параметров графиков функцийm_List2_Var – тип Cstring, значение самих графиков функций f1, f2, f3m_List3_Var – тип Cstring, значение графика функции f4m_Check1_Varm_Check2_Varm_Check3_Varm_Check4_Varтип bool, отображение/скрытие графиков функцийx_start – int, Установка стартовой точки графика по xy_start – int, Установка стартовой точки графика по yy_Step_Grid – int, Установка шага сетки по xx_Step_Grid – int, Установка шага сетки по yj – int, счетчик в цикле прорисовки линий вертикальной сеткиvecSize – int, получение текущего размера вектораi - – int, счетчик в цикле прорисовки линий графикаstyle – int, стиль сеткиdisplay – bool, цвет фонаm_iTimerm_x, m_ym_wm_hint, значения таймераm_vecGraph1;m_vecGraph2;m_vecGraph3;m_vecGraph4;int, хранение значения функции после преобразования4. диаграммаклассовДиаграмма классов представлена на рис.1Рисунок 2. Диаграмма классовCAboutDlg - рисование графиков используется для управления диалоговой панелью AboutCSmirnovKR2193V2App - это класс, производный от CwinApp. Отвечает за работоспособность программыCwinApp - это структура всего приложения, используемая для управления началом и концом приложенияCSmirnovKR2193V2Dlg - Основной интерфейс, отображаемый после запуска программы. Основной класс диалогового окна, используемый для управления поведением основного диалогового окнаCGraph – класс, ответственный за рисование графика в средеCDialogEx - определяет цвет фона и фоновое изображение диалогового окна.CDialog – базовый класс диалоговых оконСWnd – предоставляет базовую функциональность всех классов окон в библиотеке MFCCWinThread - класс, представляющий поток исполнения в приложении.CCmdTarget - базовый класс для библиотеки MFC/CStatic – статический элемент управления5. КАРТЫ СООБЩЕНИЙ ПРОЕКТАКарта сообщений для Dlg:
ON_WM_PAINT() – отвечает за рисование графиков функций.Через определённый период времени при помощи сообщения WM_TIMER вызывается функция ON_TIMER(), которая считает значение графиков функций и округляет их. Далее вызывается функция обработчик ON_PAINT(), которая перерисовывает график.6. структура проекта, файлы проектаРисунок 3 – Обозреватель решений
| Студент гр. 2193 | | Смирнов Д.А. |
| Преподаватель | | Воронова А.А. |
| Студент Смирнов Д.А. | ||
| Группа 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 с настройкой аргументов и косинуса, синуса и других переменных, а также позволяющее в определённых рамках кастомизировать основное окно для вывода графиков функций для более удобного восприятия.В результате выполнение работы было разработано диалоговое окно, точно соответствующее требованиям технического задания. Были учтены все примечания, настроены соответствующие оповещения пользователя о некорректно введённых параметрах и были реализованы все необходимые стили настройки.SummaryThe 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 |
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 как значение intrc – тип 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_Varm_Slider2_Var
m_Slider3_Var(значения ползунков типа int)m_List1_Var – тип Cstring, значение параметров графиков функцийm_List2_Var – тип Cstring, значение самих графиков функций f1, f2, f3m_List3_Var – тип Cstring, значение графика функции f4m_Check1_Varm_Check2_Varm_Check3_Varm_Check4_Varтип bool, отображение/скрытие графиков функцийx_start – int, Установка стартовой точки графика по xy_start – int, Установка стартовой точки графика по yy_Step_Grid – int, Установка шага сетки по xx_Step_Grid – int, Установка шага сетки по yj – int, счетчик в цикле прорисовки линий вертикальной сеткиvecSize – int, получение текущего размера вектораi - – int, счетчик в цикле прорисовки линий графикаstyle – int, стиль сеткиdisplay – bool, цвет фонаm_iTimerm_x, m_ym_wm_hint, значения таймераm_vecGraph1;m_vecGraph2;m_vecGraph3;m_vecGraph4;int, хранение значения функции после преобразования4. диаграммаклассовДиаграмма классов представлена на рис.1Рисунок 2. Диаграмма классовCAboutDlg - рисование графиков используется для управления диалоговой панелью AboutCSmirnovKR2193V2App - это класс, производный от CwinApp. Отвечает за работоспособность программыCwinApp - это структура всего приложения, используемая для управления началом и концом приложенияCSmirnovKR2193V2Dlg - Основной интерфейс, отображаемый после запуска программы. Основной класс диалогового окна, используемый для управления поведением основного диалогового окнаCGraph – класс, ответственный за рисование графика в средеCDialogEx - определяет цвет фона и фоновое изображение диалогового окна.CDialog – базовый класс диалоговых оконСWnd – предоставляет базовую функциональность всех классов окон в библиотеке MFCCWinThread - класс, представляющий поток исполнения в приложении.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 - Диаграмма классов
-
Останавливается таймер
-
Очистка List (1,2,3), Chek (1,2,3,4) и Combo 2. -
Возврат параметров к начальным значениям. -
Возврат флажков и ползунков в начальное положение. -
Вывод параметров и добавление вариантов выбора в Combo box. -
Очистка векторов и сброс значения таймера. -
Перерисовка поля элемента Static Text при помощи макроса ON_WM_PAINT.
-
Запуск таймера
-
Получение положение слайдера. -
Изменение параметра на значение позиции ползунка
-
Изменение значений переменной
-
Получение положения курсора -
Получение текста из позиции курсора -
Изменение периода