Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа (1,08 МБ).docx
Скачиваний:
2
Добавлен:
17.09.2019
Размер:
1.14 Mб
Скачать
  1. Условие задания

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

  1. Текст программы

    1. Класс обработчиков главного окна (MainWindow.Xaml.Cs)

using System;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Input;

using Microsoft.Win32;

using System.Diagnostics;

namespace Матрица_1_0

{

/// <summary>

/// Interaction logic for MainWindow.xaml

/// </summary>

public partial class MainWindow : Window

{

public MainWindow()

{

this.InitializeComponent();

// Insert code required on object creation below this point.

}

Cache ch = new Cache();

public void Show(int ind)

{

if (ind == 1)

{

Mm1.Text = null;

for (int i = 0; i < ch.c; i++)

{

for (int j = 0; j < ch.d; j++)

{

Mm1.Text += (ch.matr1[i, j].ToString()+" ");

}

Mm1.Text += "\n";

}

}

if (ind == 2)

{

Mm2.Text = null;

for (int i = 0; i < ch.e; i++)

{

for (int j = 0; j < ch.f; j++)

{

Mm2.Text += (ch.matr2[i, j].ToString()+" ");

}

Mm2.Text += "\n";

}

}

if (ind == 3)

{

Mr.Text = null;

for (int i = 0; i < ch.g; i++)

{

for (int j = 0; j < ch.h; j++)

{

Mr.Text += (ch.res[i, j].ToString()+" ");

}

Mr.Text += "\n";

}

}

}

private void Button_Click(object sender, RoutedEventArgs e)

{

string login = Логин.Text.ToString();

string parol = Пароль.Password.ToString();

Parol par = new Parol();

bool v = par.Dostup(login, parol);

if (v == true)

{

Авторизация.Visibility = Visibility.Collapsed;

ch.fam2 = login;

ch.name2 = parol;

}

}

private void New_Click(object sender, RoutedEventArgs e)

{

MainWindow Wind = new MainWindow();

Wind.Visibility = Visibility.Visible;

Wind.Авторизация.Visibility = Visibility.Collapsed;

}

private void AT_Click(object sender, RoutedEventArgs e)

{

AT n = new AT();

n.ATR(1, ch);

Show(3);

}

private void T_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

AT_Click(sender, e);

}

if (M2.IsChecked == true)

{

AT_2_Click(sender, e);

}

if (M1.IsChecked == true) { }

else

{

if (M2.IsChecked == true) { }

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void AT_2_Click(object sender, RoutedEventArgs e)

{

AT n = new AT();

n.ATR(2, ch);

Show(3);

}

private void Cl_Click(object sender, RoutedEventArgs e)

{

WIND.Close();

}

private void Op_M1_Click(object sender, RoutedEventArgs e)

{

RE read = new RE();

read.Read(1, ch);

Show(1);

MessageBox.Show("Автор файла: "+ch.name+" "+ch.fam);

}

private void Op_M2_Click_1(object sender, RoutedEventArgs e)

{

RE read = new RE();

read.Read(2, ch);

Show(2);

MessageBox.Show("Автор файла: " + ch.name + " " + ch.fam);

}

private void a_k_GotFocus(object sender, RoutedEventArgs e)

{

a_k.Text = null;

}

private void b_GotFocus(object sender, RoutedEventArgs e)

{

b_b.Text = null;

}

private void Copy_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

kop1_Click(sender, e);

}

if (M2.IsChecked == true)

{

kop2_Click(sender, e);

}

if (M1.IsChecked == true) { }

else

{

if (M2.IsChecked == true) { }

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void Ak1_Click(object sender, RoutedEventArgs e)

{

double k=0;

Axk ak = new Axk();

try

{

k = Convert.ToDouble(a_k.Text.ToString());

ak.Axk2(1, k, ch);

}

catch

{

MessageBox.Show("Ошибка! Вы не ввели число k");

}

Show(3);

}

private void Ak2_Click(object sender, RoutedEventArgs e)

{

double k = 0;

Axk ak = new Axk();

try

{

k = Convert.ToDouble(a_k.Text.ToString());

ak.Axk2(2, k, ch);

}

catch

{

MessageBox.Show("Ошибка! Вы не ввели число k");

}

Show(3);

}

private void K_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

Ak1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

Ak2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void Obr_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

obr1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

obr2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void obr1_Click(object sender, RoutedEventArgs e)

{

double opr = 0;

if (ch.c == ch.d)

{

ch.g = ch.c;

ch.h = ch.d;

Opr chislo = new Opr();

opr = chislo.DetGauss(1, ch);

if (opr != 0)

{

double k = 1 / opr;

double[,] Soglmatr = new double[ch.c, ch.d];

for (int i = 0; i < ch.c; i++)

{

for (int j = 0; j < ch.d; j++)

{

Mab mab = new Mab();

Soglmatr[i, j] = mab.Min(1, i, j, ch);

}

}

ch.g++;

ch.h++;

ch.res = Soglmatr;

AT tr = new AT();

tr.ATR(3, ch);

Axk axk = new Axk();

axk.Axk2(3, k, ch);

Show(3);

}

else

{

MessageBox.Show("Ошибка! Данная матрица является вырожденной и не может иметь обратной матрицы!");

}

}

else

{

MessageBox.Show("Выбранная матрица не является квадратной!");

}

}

private void obr2_Click(object sender, RoutedEventArgs e)

{

double opr = 0;

if (ch.e == ch.f)

{

ch.g = ch.e;

ch.h = ch.f;

Opr chislo = new Opr();

opr = chislo.DetGauss(2, ch);

if (opr != 0)

{

double k = 1 / opr;

double[,] Soglmatr = new double[ch.e, ch.f];

for (int i = 0; i < ch.e; i++)

{

for (int j = 0; j < ch.f; j++)

{

Mab mab = new Mab();

Soglmatr[i, j] = mab.Min(2, i, j, ch);

}

}

ch.g++;

ch.h++;

ch.res = Soglmatr;

AT tr = new AT();

tr.ATR(3, ch);

Axk axk = new Axk();

axk.Axk2(3, k, ch);

Show(3);

}

else

{

MessageBox.Show("Ошибка! Данная матрица является вырожденной и не может иметь обратной матрицы!");

}

}

else

{

MessageBox.Show("Выбранная матрица не является квадратной!");

}

}

private void Zakr_Click(object sender, RoutedEventArgs e)

{

Mm1.Text = null;

Mm2.Text = null;

Mr.Text = null;

a_k.Text = "a(k)";

b_b.Text = "b";

status_M1.Text = status_M2.Text = status_rM.Text = "Результат";

M1.IsChecked = false;

M2.IsChecked = false;

ch.c = ch.d = ch.e = ch.f = ch.g = ch.h = 0;

ch.fam = ch.name = "";

ch.matr1 = ch.matr2 = ch.res = null;

}

private void S_Click(object sender, RoutedEventArgs e)

{

WR sav = new WR();

sav.Save(ch);

}

private void Sum_Click(object sender, RoutedEventArgs e)

{

Plus sum = new Plus();

sum.Sum(ch);

Show(3);

}

private void sl_Click(object sender, RoutedEventArgs e)

{

Sum_Click(sender, e);

}

private void Razn_Click(object sender, RoutedEventArgs e)

{

Minus m = new Minus();

m.Min(ch);

Show(3);

}

private void Minus_Click(object sender, RoutedEventArgs e)

{

Razn_Click(sender, e);

}

private void Del_Click(object sender, RoutedEventArgs e)

{

obr2_Click(sender, e);

double[,] vrem = ch.matr2;

int vrem1 = ch.e;

int vrem2 = ch.f;

ch.e = ch.g;

ch.f = ch.h;

ch.matr2 = ch.res;

Umn_Click(sender, e);

ch.e = vrem1;

ch.g = vrem2;

ch.matr2 = vrem;

Show(2);

}

private void razd_Click(object sender, RoutedEventArgs e)

{

Del_Click(sender, e);

}

private void Umn_Click(object sender, RoutedEventArgs e)

{

Umn umn = new Umn();

umn.Umn2(ch);

Show(3);

}

private void umn_Click_1(object sender, RoutedEventArgs e)

{

Umn_Click(sender, e);

}

private void О_программе_Click(object sender, RoutedEventArgs e)

{

Window1 win = new Window1();

win.Visibility = Visibility.Visible;

}

private void Delta_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

Opred1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

Opred2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void M_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

Min1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

Min2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void Пароль_KeyDown(object sender, KeyEventArgs e)

{

if (e.Key.Equals( Key.Enter))

{

Button_Click(sender, e);

}

}

private void Логин_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)

{

if (e.Key.Equals(Key.Enter))

{

Пароль.Focus();

}

}

private void Opred1_Click(object sender, RoutedEventArgs e)

{

Opr delta = new Opr();

double opr = delta.DetGauss(1, ch);

status_M1.Text = ("Определитель матрицы равен " + opr.ToString());

Show(3);

}

private void Opred2_Click(object sender, RoutedEventArgs e)

{

Opr delta = new Opr();

double opr = delta.DetGauss(2, ch);

status_M2.Text =("Определитель матрицы равен "+ opr.ToString());

Show(3);

}

private void Min1_Click(object sender, RoutedEventArgs e)

{

Mab minor2=new Mab();

double minor=0;

int a = 0;

int b = 0;

try

{

a = Convert.ToInt32(a_k.Text) - 1;

b = Convert.ToInt32(b_b.Text) - 1;

}

catch

{

MessageBox.Show("Поля a(k) и b не заполнены");

goto u;

}

minor = minor2.Min(1, a, b, ch);

status_M1.Text =("Минор равен " +minor.ToString());

u: status_rM.Text = "Результат";

}

private void Min2_Click(object sender, RoutedEventArgs e)

{

Mab minor2 = new Mab();

double minor = 0;

int a = 0;

int b = 0;

try

{

a = Convert.ToInt32(a_k.Text) - 1;

b = Convert.ToInt32(b_b.Text) - 1;

}

catch

{

MessageBox.Show("Поля a(k) и b не заполнены");

goto u;

}

minor = minor2.Min(2, a, b, ch);

status_M2.Text = ("Минор равен " + minor.ToString());

u: status_rM.Text = "Результат";

}

private void Логин_Initialized(object sender, EventArgs e)

{

Логин.Focus();

}

private void kop1_Click(object sender, RoutedEventArgs e)

{

Copir cop = new Copir();

cop.C(1, ch);

Show(1);

}

private void kop2_Click(object sender, RoutedEventArgs e)

{

Copir cop = new Copir();

cop.C(2, ch);

Show(2);

}

private void Kan1_Click(object sender, RoutedEventArgs e)

{

Kan kan = new Kan();

kan.KV(1, ch);

Show(3);

}

private void Kan2_Click(object sender, RoutedEventArgs e)

{

Kan kan = new Kan();

kan.KV(2, ch);

Show(3);

}

private void KV_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

Kan1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

Kan2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void R1_Click(object sender, RoutedEventArgs e)

{

Kan rang = new Kan();

int r=rang.Rang(1, ch);

status_M1.Text=("Ранг матрицы равен "+r.ToString());

}

private void R2_Click(object sender, RoutedEventArgs e)

{

Kan rang = new Kan();

int r = rang.Rang(2, ch);

status_M2.Text = ("Ранг матрицы равен " + r.ToString());

}

private void R_Click(object sender, RoutedEventArgs e)

{

if (M1.IsChecked == true)

{

R1_Click(sender, e);

}

else

{

if (M2.IsChecked == true)

{

R2_Click(sender, e);

}

else

{

MessageBox.Show("Ошибка! Вы не выбрали матрицу!");

}

}

}

private void Справка1_Click(object sender, RoutedEventArgs e)

{

string path = @"D:\Работа\4 семместр\Курсовая\Матрица 1.0_Copy1\Матрица 1.0\Справка";

Process pr = new Process();

pr.StartInfo.FileName = path + "\\Справка.chm";

pr.Start();

}

}

}