ЛАБОРАТОРНАЯ РАБОТА 3
Создание Windows-приложения для обработки матрицы
Цель работы: научиться создавать элементы интерфейсов для приложения и писать простой обработчик событий на C++ для приложения Windows Forms, работающего под управления.NET Framework.
Методические указания к лабораторной работе
В лабораторной работе необходимо научиться использовать элементами управления, такими как Надписи (label), Текстовые поля (textbox), Кнопки (Button) и Меню (MenuStrip) для разработки программного интерфейса. Лабораторная работа состоит из двух заданий.
Задание 1. Создать на форме меню для ввода и обработки матрицы.
В лабораторной работе необходимо создать форму с меню, предназначенного формировать датчиком случайных чисел матрицу размером 5х5, обрабатывать эту матрицу и выводить результаты вычислений. Кроме этого предусмотрим вывод информации о разработчике на экран. В качестве примера обработки определим максимальное значение из элементов матрицы. Для этого:
Создать новый проект Windows Forms с именем form_lab3.cpp.
Разместить на форме элементы управления и настроить их свойства
Сначала настроим свойства формы: введем заголовок формы в свойство Text, увеличим ширину формы и зададим цвет формы, изменив свойство BackColor, например,на цвет LightGrey из списка Web.
Поместить на форму компонент MenuStrip (Меню). При этом на форме появится светлый прямоугольник с текстом: «Вводить здесь». Щелкнув мышью по прямоугольнику, вы перейдете в режим ввода названия пункта меню. Например, назовем первый пункт: «Выбор цвета формы». Ниже откроется прямоугольник для ввода пунктов подменю, а правее: названия следующего пункта меню. Таким образом, создайте первый пункт меню следующего вида:
Т.к. выбор каждого пункта меню должен приводить к выполнению некоторых действий, создайте обработчики событий для каждого подпункта этого пункта меню, изменяя свойство формы BackColor, например, так:
this->BackColor=Color::Red;
Откомпилируйте проект и проверьте работу первого пункта меню.
Добавим следующий пункт меню, назвав его «Работа с матрицей», а для него создадим два подпункта: «Формирование» и «Обработка». Меню примет вид:
Закончим формирование меню, добавив третий пункт «О программе», в котором создадим подпункты: «Сведения о разработчике» и «Задание по обработке».И последний пункт будет называться «Выход».
Перетащим на форму Надпись (label) для вывода результатов обработки и разместим её на середине формы. Форма примет вид:
Создать обработчики событий для остальных пунктов меню
Перейдем к написанию обработчиков событий для пункта меню «Работа с матрицей». Напишем две функции: для формирования матрицы датчиком случайных чисел и для поиска максимального значения и поместим их в библиотечный файл с исходными кодами. Для этого щелкнем правой кнопкой мыши в Обозревателе решений на папке Файлы исходного кода, далее вызовем меню правой кнопкой мыши. В появившемся меню выберем: Добавить -> Создать Элемент. В открывшемся окне вписываем название файла – Matrica.cpp и нажимаем Добавить.
В файл поместим следующий код:
#pragma once
#include "stdafx.h"
#include "stdlib.h" //библиотека содержит функцию rand()
void form(int matr[5][5])
{
int i,j;
for (i=0;i<5;i++)
for(j=0;j<5;j++)
matr[i][j]=rand()%100-40;
}
int Maximum(int matr[5][5])
{int i,j;int m=0;
for (i=0;i<5;i++)
for(j=0;j<5;j++)
if(matr[i][j]>m) m=matr[i][j];
return m;
}
Следующим шагом нужно добавить заголовочный файл Matrica.h в проект. Для этого щелкнем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – Matrica.h и нажимаем Добавить. В данном файле будет содержаться прототипы (заголовки) разработанных функций и описание общих переменных. Добавляем туда следующий исходный код:
static int A[5][5]; //Описание матрицы
void form(int matr[5][5]);
int Maximum(int matr[5][5]);
Далее подключаем этот файл к проекту с помошью директивы #include – Открываем главный файл проекта:form_lab3.cpp и добавляем туда после строчки #include "stdafx.h" следующий код:
#include "Matrica.h"
Теперь наш заголовочный файл подключен к проекту и все готово к созданию обработчиков событий.
Приведите обработчики событий выбора пунктов меню «форматирование» и «обработка» к следующему виду: //формирование матрицы датчиком случайных чисел
private: System::Void формированиеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
int i,j; System::String^s=gcnew String("");
form(A); //вызов функции Form()
// Вывод матрицы в окно MessageBox
for (i=0;i<5;i++)
{
for(j=0;j<5;j++)
s=s+System::Convert::ToString(A[i][j])+"\t";
s=s+"\r\n";
}
MessageBox::Show(s," Матрица");
}
//обработка матрицы
private: System::Void обработкаToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
int max;
max=Maximum(A); //вызов функции Maximum()
label1->Text="Значение максимума=" +System::Convert::ToString(max);
}
Используя окно сообщений MessageBox, создадим обработчики событий для вывода информации о разработчике и задания по обработке матрицы.
Процедуру обработки события «выход» приведем к следующему виду:
private: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
this->Close();
}
Откомпилируйте проект и проверьте работу всех пунктов меню.
Задание 2. Обработка массива по индивидуальному заданию.
Напишите программу на языке С++ для обработки матрицы по варианту, выбранному из методических указания к лабораторной работе №11.