Листинг процедур обработки событий




Контрольная работа

Тема работы: Разработка проектов для ввода, отображения, обработки элементов матриц.

 

Цель работы: Освоение методов и средств, позволяющих реализовать алгоритмы обработки двумерных массивов.

 

Требования к выполнению работы

Форма проекта при запуске должна открываться во весь экран. Заголовок формы должен содержать наименование работы. На форме кроме элементов, требующихся по заданию необходимо разместить кнопку, закрывающую форму; при этом должно выдаваться диалоговое окно с вопросом о необходимости закрытия проекта.

В проекте должно быть предусмотрено следующее:

1. сформировать исходную матрицу A (n*m), где n и m вводятся в диалоговом пользовательском окне. Пользовательское окно должно содержать кнопки «Ок» и «Отмена», группу из пар элементов метка и текстовое поле.

2. элементы матрицы вычисляются по варианту, заданному в таблице 1. Введенная матрица отображается в элементе DataGridView.

3. для матрицы вычислить параметр Р согласно правилу, приведенному в таблице 2;

4. если Р соответствует условию отбора (таблица 3), то матрицу преобразовать по правилу, указанному в таблице 3 и отобразить преобразованную матрицу в новом элементе DataGridView;

5. все полученные результаты должны быть отражены на форме в соответствующих элементах управления;

6. необходимо предусмотреть возможность повторения вычислений для другой матрицы, предварительно очистив все управляющие элементы.

 

Задание

 

Вариант 5

 

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

 

Формула формирования элементов матрицы: Aij = A*i2 + B*j + C

 

Правило для определения параметра Р: минимальный по абсолютной величине элемент матрицы.

 

Условие для Р: Р>0

 

Правило преобразования выбранной матрицы: элементы строк, у которых минимальные элементы положительные, увеличить на значения этих элементов.

 

Решение

 

Начальному элементу Form1 задаем свойство WindowState Maximized, что позволит запускаться проекту во весь экран.

Для создания диалогового окна добавляем элемент Form2 и задаем ему свойство StartPosition CenterScreen, благодаря чему диалоговое окно будет появляться в центре экрана.

Для ввода и отображения единичных значений используем элементы textBox (6 в Form1 (со свойством ReadOnly True) и 5 в Form2).

Для вывода результатов расчетов, представляющих собой массивы и матрицы данных, используем элементы dataGridView (всего 3 в Form1).

Для отображения статичной информации и текста используем элементы label (10 в Form1 и 5 в Form2).

Для группировки элементов в Form2 используем 2 элемента groupBox.

Для совершения операций в проекте используем элементы button (3 в Form1 и 2 в Form2).

 

Листинг процедур обработки событий

 

Элемент Событие Процедура
Элемент Form1
button1 button1_Click «Задать значения». При клике по кнопке вызывается элемент Form2, в котором задаются параметры матрицы и коэффициенты для расчета значений элементов матрицы. Если после закрытия Form2 значения количества столбцов и строк матрицы будет больше 0, введенные данные отобразятся в textBox1, textBox2, textBox3, textBox4 и textBox5; сформируется матрица А и отобразится в элементе dataGridView1; произойдет поиск минимального элемента каждой строки матрицы, их значения отобразятся в элементе dataGridView2; будет найден минимальный по абсолютной величине (модулю) элемент матрицы Р и выведен в textBox6; если Р>0 будет произведено преобразование матрицы согласно заданному правилу, результат отобразится в dataGridView3.
button2 button2_Click «Очистить». При клике по кнопке значения элементов dataGridView1, dataGridView2, dataGridView3, textBox1, textBox2, textBox3, textBox4, textBox5, textBox6 очищаются для повторных вычислений.
button3 button3_Click «Выход». Клик по кнопке вызывает диалоговое окно с подтверждением или отменой закрытия проекта.
Элемент Form2
button1 button1_Click «Подтвердить». При клике по кнопке данные, введенные в textBox1 и textBox2, преобразуются из строкового типа в целый, а в textBox3, textBox4, textBox5 – из строкового в вещественный.
button2 button2_Click «Отменить». Клик по кнопке вызывает диалоговое окно с подтверждением или отменой закрытия формы ввода параметров.

 

Код для элемента Form1

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace Kontrolnaya

{

public partial class Form1: Form

{

public int n, m;

public double a, b, c, P;

public double [] min;

public double[,] A;

public Form1()

{

InitializeComponent();

}

 

void formirovanie()

{

A = new double[n, m];

int i, j;

dataGridView1.RowCount = n;

dataGridView1.ColumnCount = m;

for (i = 0; i < n; i++)

for (j = 0; j < m; j++)

{

A[i, j] = a * i * i + b * j + c;

dataGridView1.Rows[i].Cells[j].Value = A[i, j];

}

}

void minimum()

{

min = new double[n];

int i, j;

P=Math.Abs(A[0,0]);

dataGridView2.RowCount = n;

dataGridView2.ColumnCount = 1;

for (i = 0; i < n; i++)

{

min[i] = A[i, 0];

for (j = 0; j < m; j++)

{

if (A[i, j] < min[i]) min[i] = A[i, j];

if (Math.Abs(A[i, j]) < P) P = Math.Abs(A[i, j]);

}

dataGridView2.Rows[i].Cells[0].Value = min[i];

}

textBox6.Text = P.ToString();

}

 

void preobr()

{

int i, j;

dataGridView3.RowCount = n;

dataGridView3.ColumnCount = m;

for (i = 0; i < n; i++)

{

for (j = 0; j < m; j++)

{

if (min[i] > 0) A[i, j] = A[i, j] + min[i];

dataGridView3.Rows[i].Cells[j].Value = A[i, j];

}

}

}

 

private void button1_Click(object sender, EventArgs e)

{

Form2 f2 = new Form2(n, m, a, b, c);

f2.ShowDialog();

n = f2.n;

m = f2.m;

a = f2.a;

b = f2.b;

c = f2.c;

if (n > 0 && m > 0)

{

textBox1.Text = n.ToString();

textBox2.Text = m.ToString();

textBox3.Text = a.ToString();

textBox4.Text = b.ToString();

textBox5.Text = c.ToString();

formirovanie();

minimum();

if (P > 0)

preobr();

}

}

 

private void button2_Click(object sender, EventArgs e)

{

dataGridView1.Rows.Clear();

dataGridView2.Rows.Clear();

dataGridView3.Rows.Clear();

textBox1.Text = "";

textBox2.Text = "";

textBox3.Text = "";

textBox4.Text = "";

textBox5.Text = "";

textBox6.Text = "";

}

 

private void button3_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Вы действительно хотите выйти?", "Выход", MessageBoxButtons.YesNo) == DialogResult.Yes)

this.Close();

}

}

}

 

Код для элемента Form2

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace Kontrolnaya

{

public partial class Form2: Form

{

public int n, m;

public double a, b, c;

public Form2(int n, int m, double a, double b, double c)

{

InitializeComponent();

}

 

private void Form2_Load(object sender, EventArgs e)

{

n = 0;

m = 0;

a = 0;

b = 0;

c = 0;

}

 

private void button1_Click(object sender, EventArgs e)

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a = Convert.ToDouble(textBox3.Text);

b = Convert.ToDouble(textBox4.Text);

c = Convert.ToDouble(textBox5.Text);

this.Close();

}

 

private void button2_Click(object sender, EventArgs e)

{

if (MessageBox.Show("Выйти не задав параметры?", "Предупреждение", MessageBoxButtons.YesNo) == DialogResult.Yes)

this.Close();

}

 

}

}

 

 

Рис. 1. Вид окна проекта

 

 

Рис. 2. Вид диалогового окна ввода параметров матрицы.

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: