Программная реализация матричного редактора

Автоматизация процесса операций над матрицами. Конфигурация компьютера, на котором будет разрабатываться программное приложение в системе Windows XP Professional. Построение концептуального прототипа системы меню, диалоговых окон и элементов управления.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.03.2013
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

С целью облегчения и повышения эффективности работы возникла необходимость в использовании современных компьютерных программ.

Целью разработки проекта на тему "Программная реализация матричного редактора" является создание программы, которая позволит уменьшить затраты времени используемого при выполнении действий над матрицами за счет автоматизации вычислительных процессов.

Пояснительная записка к курсовому проекту "Программная реализация матричного редактора" состоит из шести разделов, содержащих необходимую информацию по организации эксплуатации программного приложения.

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

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

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

В четвертом разделе "Описание программного средства" представлены общие сведения о программном средстве и его функциональном назначении.

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

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

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

Приложение будет содержать текст программы.

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

1. Постановка задачи

1.1 Организационная сущность задачи

Рассмотрим предметную область задачи. Матричный редактор зависит от таких показателей, как: размерность матриц, действие над матрицами и другие.

Задачей данного курсового проекта является автоматизация процесса операций над матрицами. Программное приложение должно автоматически выполнять выбранное действие над матрицами.

Исходя из исследования предметной области, основными задачами, подлежащими автоматизации, будут являться:

- выбор действия над матрицами;

- выбор способа ввода матриц;

- возможность сохранения информации в файл;

- предоставление справочной информации.

Данные необходимо сохранять в виде файла.

В настоящее время существуют аналогичные программы, предназначенные для автоматизации процесса операций над матрицами.

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

1.2 Информационная модель

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

Наиболее распространенным средством моделирования данных являются диаграммы "сущность-связь" (ERD). С их помощью определяются важные для предметной области объекты (сущности), их свойства (атрибуты) и отношения друг с другом (связи). ERD непосредственно используются для проектирования реляционных баз данных. Нотация ERD была впервые введена П. Ченном (Chen) и получила дальнейшее развитие в работах Баркера.

Первый шаг моделирования - извлечение информации и выделение сущностей.

Сущность (Entity) - реальный либо воображаемый объект, имеющий существенное значение для рассматриваемой предметной области, информация о котором подлежит хранению.

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

- каждая сущность должна иметь уникальное имя, и к одному и тому же имени должна всегда применяться одна и та же интерпретация. Одна и та же интерпретация не может применяться к различным именам, если только они не являются псевдонимами;

- сущность обладает одним или несколькими атрибутами, которые либо принадлежат сущности, либо наследуются через связь;

- сущность обладает одним или несколькими атрибутами, которые однозначно идентифицируют каждый экземпляр сущности;

- каждая сущность может обладать любым количеством связей с другими сущностями модели.

Следующим шагом моделирования является идентификация связей.

Связь (Relationship) - поименованная ассоциация между двумя сущностями, значимая для рассматриваемой предметной области. Связь - это ассоциация между сущностями, при которой, как правило, каждый экземпляр одной сущности, называемой родительской сущностью, ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, называемой сущностью-потомком, а каждый экземпляр сущности-потомка ассоциирован в точности с одним экземпляром сущности-родителя. Таким образом, экземпляр сущности-потомка может существовать только при существовании сущности родителя.

Связи может даваться имя, выражаемое грамматическим оборотом глагола и помещаемое возле линии связи. Имя каждой связи между двумя данными сущностями должно быть уникальным, но имена связей в модели не обязаны быть уникальными. Имя связи всегда формируется с точки зрения родителя, так что предложение может быть образовано соединением имени сущности-родителя, имени связи, выражения степени и имени сущности-потомка.

Последним шагом моделирования является идентификация атрибутов.

Атрибут - любая характеристика сущности, значимая для рассматриваемой предметной области и предназначенная для квалификации, идентификации, классификации, количественной характеристики или выражения состояния сущности. Атрибут представляет тип характеристик или свойств, ассоциированных с множеством реальных или абстрактных объектов (людей, мест, событий, состояний, идей, пар предметов и так далее). Экземпляр атрибута - это определенная характеристика отдельного элемента множества. Экземпляр атрибута определяется типом характеристики и ее значением, называемым значением атрибута. В ERD-модели атрибуты ассоциируются с конкретными сущностями. Таким образом, экземпляр сущности должен обладать единственным определенным значением для ассоциированного атрибута.

Атрибут может быть либо обязательным, либо необязательным. Обязательность означает, что атрибут не может принимать неопределенных значений (null values). Атрибут может быть либо описательным (обычным дескриптором сущности), либо входить в состав уникального идентификатора (первичного ключа).

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

Каждый атрибут идентифицируется уникальным именем, выражаемым грамматическим оборотом существительного, описывающим представляемую атрибутом характеристику. Атрибуты изображаются в виде списка имен внутри блока ассоциированной сущности, причем каждый атрибут занимает отдельную строку. Атрибуты, определяющие первичный ключ, размещаются наверху списка и выделяются знаком "#". [5]

Исходя из исследования предметной области, можно выделить следующие сущности разработки: матрицы, действие.

Для сущности "Матрицы" атрибутами будут являться:

- количество строк;

- количество столбцов.

Для сущности "Действие" атрибутами будут являться:

- сложение;

- вычитание;

- умножение;

- транспонирование;

- вычисление детерминанта;

- вычисление следа;

- поиск.

Схема Баркера-Ченна представлена на рисунке 1.

Рисунок 1 - Схема Баркера-Ченна

В рамках языка UML все представления о модели сложной системы фиксируются в виде специальных графических конструкций - диаграмм. В терминах языка UML определены следующие виды диаграмм: диаграмма вариантов использования, диаграмма классов, диаграммы поведения (диаграмма состояния, диаграмма деятельности), диаграммы взаимодействия (диаграмма последовательности, диаграмма кооперации), диаграммы реализации (диаграмма компонентов, диаграмма развертывания).

Перечень этих диаграмм представляет собой неотъемлемую часть графической нотации языка UML, сам процесс ООАП неразрывно связан с процессом построения этих диаграмм. Совокупность построенных таким образом диаграмм содержит всю информацию, необходимую для реализации проекта сложной системы.

Диаграмма - граф специального вида, состоящий из вершин в форме геометрических фигур, которые связаны между собой ребрами или дугами.

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

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

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

В данной проектируемой системе в качестве актера выступает пользователь, который служит источником воздействия на моделируемую систему.

В состав данной предметной области будут включаться следующие бизнес-процессы:

- осуществить ввод матрицы;

- выполнить действие;

- отобразить результаты на экране;

- сохранить результаты в файле;

- предоставить справочную систему;

- предоставить возможность формирования матрицы;

- предоставить возможность выбора действия.

Диаграмма вариантов использования представлена в графической части на листе 1.

Рассмотрим математическую модель проектируемой системы.

Сумма вычисляется по формуле (1)

Сумма = Aij+Bij, (1)

где A,B - матрицы;

i - строка матрицы;

j - столбец матрицы

Разность рассчитывается по формуле (2)

Разность = Aij-Bij, (2)

Произведение вычисляется по формуле (3)

Произведение = Aij*Bij, (3)

Транспонированная матрица- это исходная матрица, в которой строки заменены на столбцы, т.е. aij=bji.

Определитель квадратной матрицы А(3,3) вычисляется по формуле (4)

А11 ( А22А33 - А23А32) - А12 ( А21А33 - А23А31) + А13 ( А21А32 - А22А31), (4)

След матрицы - это сумма диагональных элементов матрицы.

1.3 Входные данные

Основной входной информацией являются: количество строк и столбцов в матрицах. Структура входных данных представлена в таблице 1.

Таблица 1 - Структура входных данных

Имя поля

Тип поля

Размер (в байтах)

Описание поля

n

int

4

Количество строк

m

int

4

Количество столбцов

a1,a2

TextBox

Введённые матрицы

1.4 Выходные данные

На основании данных таблицы 1 можно выделить следующую выходную информацию: количество строк и столбцов в матрицах. Структура выходных данных представлена в таблице 2.

Таблица 2 - Структура выходных данных

Имя поля

Тип поля

Размер (в байтах)

Описание поля

n

int

4

Количество строк

m

int

4

Количество столбцов

a1,a2

TextBox

Введённые матрицы

a3

TextBox

Результирующая матрица

d,e

int

4

Детерминант матрицы

s,c

int

4

След матрицы

p,r

int

4

Элемент матрицы

2. Вычислительная система

2.1 Используемые технические средства

Конфигурация компьютера, на котором будет разрабатываться программное приложение:

- процессор Intel Core 2 Duo 3500Mhz;

- оперативная память DDR2 2Gb;

- жёсткий диск HDD Samsung 250Gb;

- видеокарта nVidia GeForce 9200GT 512Mb;

- материнская плата Gigabyte;

- монитор Samsung 19";

- клавиатура Defender;

- мышь A4Tech.

автоматизация матрица компьютер программный

2.2 Инструменты разработки

Инструментами разработки будут являться:

- операционная система Windows XP Professional SP3;

- среда Microsoft Visual C# 2008 Professional;

- язык программирования С#;

- CASE-среда Rational Rose 2003;

- HelpMaker 7.3.

Сегодня никем не опровергается тот факт, что операционные системы семейства Windows завоевали не только подавляющую часть белорусского рынка настольных операционных систем и в корпоративном, и в домашнем секторе, но и немалую долю рынка серверных операционных систем. Каковы бы ни были претензии к этим операционным системам и к их производителю со стороны некоторых пользователей, нельзя отрицать того, что именно среди операционных систем этого семейства большинство белорусских потребителей находят ту, сочетание цены, производительности, удобства, функциональности и надежности которой удовлетворяет требованиям, предъявляемым решаемыми задачами.

Для разработки данного программного приложения была использована Windows XP Professional. Данная операционная система является оптимальным решением для предприятия любого размера. Данная версия операционной системы Windows сочетает в себе преимущества Windows 2000 Professional (например, средства безопасности, управляемость и надежность) с лучшими качествами Windows 98 и Windows ME (поддержка Plug&Play, простой пользовательский интерфейс и передовые службы поддержки). Это делает Windows XP Professional наиболее подходящей операционной системой для настольных компьютеров, применяемых в корпоративной среде. Независимо от того, где устанавливается Windows XP Professional - на одном компьютере или в масштабе локальной сети, - эта система повышает вычислительные возможности предприятия, одновременно сокращая совокупную стоимость программного обеспечения всех настольных компьютеров.

C# -- язык программирования, сочетающий объектно-ориентированные и аспектно-ориентированные концепции. Разработан в 1998--2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к С++ и Java. Язык имеет строгую статическую типизацию, поддерживает полиморфизм, перегрузку операторов, указатели на функции-члены классов, атрибуты, события, свойства, исключения, комментарии в формате XML. Переняв многое от своих предшественников -- языков С++, Java, Delphi, Модула и Smalltalk -- С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).

C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает FCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены "классические" языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# .

Rational Rose - популярное средство визуального моделирования объектно-ориентированных информационных систем компании Rational Software Corp. Работа продукта основана на универсальном языке моделирования UML (Universal Modeling Language). Благодаря уникальному языку моделирования Rational Rose способен решать практически любые задачи в проектировании информационных систем: от анализа бизнес процессов до кодогенерации на определенном языке программирования. Только Rose позволяет разрабатывать как высокоуровневые, так и низкоуровневые модели, осуществляя тем самым либо абстрактное проектирование, либо логическое.

Только Rational Rose имеет весь необходимый набор визуальных средств проектирования. Только Rose поможет решить проблемы с кодогенерацией на определенном языке программирования. Только Rational Rose осуществляет такие подходы, как прямое и обратное проектирование, а так же Round Trip Engineering. Такой арсенал позволит не только проектировать новую систему, но и доработать старую, произведя процесс обратного проектирования.

Для того чтобы наиболее полно покрыть весь сегмент рынка средств проектирования и разработки, компания Rational выпускает несколько версий своего продукта. Каждый из них может решать как строго определенный круг задач, так и весь спектр проблем проектирования и разработки.

3. Проектирование задачи

3.1 Объектно-ориентированный анализ

В проектируемой системе используются стандартные классы: Form, MenuStrip, OpenDialog, SaveDialog, NumericUpDown, GroupBox, TextBox, Button, RadioButton, Label, HelpProvider. Также присутствует пользовательский класс Matrix, так же изображенный на диаграмме классов. Диаграмма классов для проектируемой системы представлена в графической части на листе 2.

Компонент класса MenuStrip будет использован для создания главного меню программы, в котором будут доступны все функции, которые программа может выполнять.

Компонент класса TextBox представляет собой однострочный редактор текста. Он будет использоваться для ввода размерности матриц.

Объект класса Button представляет собой элемент управления Windows "Кнопка".

Компонент GroupBox служит контейнером для размещения дочерних компонентов и представляет собой прямоугольное окно с рамкой и текстом в разрыве рамки. Обычно с его помощью выделяется группа управляющих элементов, объединенных по функциональному назначению. После того как компоненты помещены в группу, она становится их родительским классом. Компонент класса GroupBox будет использован для группировки действий над матрицами.

Объект RadioButton используется для предоставления пользователю возможности выбора. В программе используется для задания выбора действия над матрицами.

Компоненты класса Label (метки) предназначены для размещения на форме различного рода текстовых надписей.

Компонент класса NumericUpDown будет использован для поиска элемента матрицы по индексу.

RadioButton - кнопка с зависимой фиксацией. Она позволяет выбрать одну функцию из несколько имеющихся.

HelpProvider - позволяет прикрепить к windows - приложению справочную систему при помощи свойства HelpNamespace, которая будет содержать информацию о работе программы. Компонент является не визуальным.

Компоненты OpenDialog и SaveDialog находятся на странице Dialogs. Все компоненты этой страницы являются не визуальными, то есть не видны в момент работы программы. Поэтому их можно разместить в любом месте формы. Оба рассматриваемых компонента имеют идентичные свойства и отличаются только внешним видом. После вызова компонента появляется диалоговое окно, с помощью которого выбирается имя программы и путь к ней. В случае успешного завершения диалога имя выбранного файла и маршрут поиска содержаться в свойстве FileName.

Описание класса Matrix представлено ниже.

public class matrix

{

public int stroka;

public int stolbets;

public TextBox[,] a1;

public TextBox[,] a2;

public TextBox[,] a3;

public matrix(int stroka, int stolbets)

{

this.stroka = stroka;

this.stolbets = stolbets;

}

public int Stroka

{

get { return stroka; }

set { stroka = value; }

}

public int Stolbets

{

get { return stolbets; }

set { stolbets = value; }

}

}

Опишем назначение переменных и методов класса.

Переменные типа int: stroka - количество строк в матрицах, stolbets - количество столбцов в матрицах.

Переменные типа TextBox: а1,а2 - введённые матрицы, а3 - результирующая матрица.

Для моделирования процесса выполнения операций в языке UML используются так называемые диаграммы деятельности. Применяемая в них графическая нотация во многом похожа на нотацию диаграммы состояний, поскольку на диаграммах деятельности также присутствуют обозначения состояний и переходов. Отличие заключается в семантике состояний, которые используются для представления не деятельностей, а действий, и в отсутствии на переходах сигнатуры событий. Каждое состояние на диаграмме деятельности соответствует выполнению некоторой элементарной операции, а переход в следующее состояние срабатывает только при завершении этой, операции в предыдущем состоянии. Графически диаграмма деятельности представляется в форме графа деятельности, вершинами которого являются состояния действия, а дугами - переходы от одного состояния действия к другому.

Именно диаграммы деятельности позволяют реализовать в языке UML особенности процедурного и синхронного управления, обусловленного завершением внутренних деятельностей и действий. Метамодель UML предоставляет для этого необходимые термины и семантику. Основным направлением использования диаграмм деятельности является визуализация особенностей реализации операций классов, когда необходимо представить алгоритмы их выполнения. При этом каждое состояние может являться выполнением операции некоторого класса либо ее части, позволяя использовать диаграммы деятельности для описания реакций на внутренние события системы.

В контексте языка UML деятельность (activity) представляет собой некоторую совокупность отдельных вычислений, выполняемых автоматом. При этом отдельные элементарные вычисления могут приводить к некоторому результату или действию (action). На диаграмме деятельности отображается логика или последовательность перехода от одной деятельности к другой, при этом внимание фиксируется на результате деятельности. Сам же результат может привести к изменению состояния системы или возвращению некоторого значения.

Диаграмма деятельности для проектируемой системы представлена в графической части на листе 3.

Для представления временных особенностей передачи и приема сообщений между объектами используется диаграмма последовательности. Она используется при моделировании синхронных процессов, описывающих взаимодействия объектов. При этом диаграмма последовательности имеет как бы два измерения: одно - слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии; второе - вертикальная временная ось, направленная сверху вниз, на которой начальному моменту времени соответствует самая верхняя часть диаграммы. На диаграмме последовательности изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии. Т.о., все объекты на диаграмме последовательности образуют некоторый порядок, определяемый степенью активности этих объектов при взаимодействии друг с другом. При этом взаимодействие объектов реализуется посредством сообщений, которые посылаются одними объектами другим.

Каждое взаимодействие описывается совокупностью сообщений, которыми участвующие в нем объекты обмениваются между собой. Сообщение - законченный фрагмент информации, который отправляется одним объектом другому. Прием сообщения инициирует выполнение определенных действий, направленных на решение отдельной задачи тем объектом, которому это сообщение отправлено, т.е. сообщения могут инициировать выполнение операций объектом соответствующего класса, а параметры этих операций передаются вместе с сообщением. На диаграмме последовательности все сообщения упорядочены по времени своего возникновения в моделируемой системе.

Диаграмма последовательности для проектируемой системы представлена в графической части на листе 4.

Диаграмма компонентов описывает объекты реального мира - компоненты программного обеспечения. Эта диаграмма позволяет определить архитектуру разрабатываемой системы, установив зависимости между программными компонентами, в роли которых может выступать исходный, бинарный и исполняемый код. Диаграмма компонентов для проектируемой системы представлена в графической части на листе 5.

3.2 Концептуальный прототип

Концептуальный прототип состоит из описания внешнего пользовательского интерфейса - системы меню, диалоговых окон и элементов управления. Кнопочная навигация дублирует часто используемые пункты основного меню.

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

При запуске приложения, первой будет запускаться главная форма. На ней располагаются основные элементы управления. На этой форме расположены компоненты классов GroupBox для группировки компонентов действий над матрицами. Компоненты класса RadioButton предназначены для выбора типа операции над матрицами. Компоненты Lable поясняют действия выполняемые пользователем. Главное меню представляет собой набор кнопок "Новая матрица", "Выполнить", "Открыть", "Сохранить", "Справка", "Выход". Компонент OpenFileDialog связан с кнопкой "Открыть" и обеспечивает открытие диалогового окна для выбора существующего файла. Компонент SaveFileDialog связан с кнопкой "Сохранить" и обеспечивает открытие диалогового окна для выбора пути и сохранения файла. Компонент HelpProvider связан с кнопкой "Справка" и обеспечивает запуск внешней справочной системы данного программного приложения. Создать новую матрицу можно нажав на кнопку "Создать". Для заполнения матриц случайными числами нужно нажать кнопку "Генерировать". Для выполнения выбранного действия используется кнопка главного меню "Выполнить". Открыть существующий файл, можно при помощи кнопки "Открыть". Сохранить текущую матрицу можно нажатием на кнопку "Сохранить". Очистка текущих результатов для создания новых матриц закреплена за кнопкой "Новая матрица". Справочная информация отображается при нажатии на кнопку главного меню "Справка". При нажатии на кнопку "Выход", приложение завершит работу.

3.3 Функции: логическая и физическая организация и элементы управления

Рассмотрим основные функции программы.

Создание двух матриц для ввода чисел осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой "Создать". Реализация данной функции представлена ниже.

private void button1_Click(object sender, EventArgs e)//создание матриц

{

try

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

if (n >= 5)

{ MessageBox.Show("Превышено допустимое количество строк в матрице!", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Error); }

if (m >= 5)

{ MessageBox.Show("Превышено допустимое количество столбцов в матрице!", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Error); }

else

a1 = new TextBox[n, m];

a2 = new TextBox[n, m];

int k = 30;

int l = 90;

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

{

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

{

a1[i, j] = new TextBox();

a1[i, j].Width = 25;

a1[i, j].Location = new Point(50 + k, 50 + l);

Controls.Add(a1[i, j]);

k += 30;

}

k = 30;

l += 30;

}

int k1 = 30;

int l1 = 240;

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

{

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

{

a2[i, j] = new TextBox();

a2[i, j].Width = 25;

a2[i, j].Location = new Point(50 + k1, 50 + l1);

Controls.Add(a2[i, j]);

k1 += 30;

}

k1 = 30;

l1 += 30;

}

groupBox1.Enabled = true;

fileToolStripMenuItem.Enabled = true;

новаяМатрицаToolStripMenuItem.Enabled = true;

button1.Enabled = false;

button2.Enabled = true;

textBox1.Enabled = false;

textBox2.Enabled = false;

}

catch { MessageBox.Show("Вводите числа в диапазоне от 1 до 4", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Warning); }

}

Заполнение двух матриц случайными числами осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой "Генерировать". Реализация данной функции представлена ниже.

private void button2_Click(object sender, EventArgs e)//заполнение матриц случайными числами

{

Random x = new Random();

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

{

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

{

a1[i, j].Text = Convert.ToString(x.Next(-49, 499));

}}

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

{

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

{

a2[i, j].Text = Convert.ToString(x.Next(-49, 499));

}}

button2.Enabled = false;

}

Выполнение действий над матрицами осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой меню "Выполнить". Реализация данной функции представлена ниже.

private void fileToolStripMenuItem_Click(object sender, EventArgs e)

{

try

{

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

{

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

{

if (i>=100)

{ MessageBox.Show("Вводите только числа!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); }

if (j>=100)

{ MessageBox.Show("Вводите только числа!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); }

}

}

if (radioButton1.Checked == true)//сложение матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) + Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton2.Enabled = false;

radioButton3.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton2.Checked == true)//вычитание матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) - Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton3.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton3.Checked == true)//умножение матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) * Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton2.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton4.Checked)//транспонирование матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[j, i].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton2.Enabled = false;

radioButton3.Enabled = false;

}

if (radioButton5.Checked == true)//вычисление детерминанта

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

int d = 1;

int t = 1;

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

{

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

{

if (i == j) d *= Convert.ToInt32(a1[i, j].Text);

if (i == j) t *= Convert.ToInt32(a2[i, j].Text);

}

}

MessageBox.Show(string.Format("Детерминант 1 матрицы = " + d.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

MessageBox.Show(string.Format("Детерминант 2 матрицы = " + t.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

if (radioButton6.Checked == true)//вычисление следа

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

int s = 0;

int c = 0;

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

{

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

{

if (i == j) s += Convert.ToInt32(a1[i, j].Text);

if (i == j) c += Convert.ToInt32(a2[i, j].Text);

}

}

MessageBox.Show(string.Format("След 1 матрицы = " + s.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

MessageBox.Show(string.Format("След 2 матрицы = " + c.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

if (radioButton7.Checked == true)//поиск элемента матрицы

{

int z;

int w;

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

z = Convert.ToInt32(numericUpDown1.Text);

w = Convert.ToInt32(numericUpDown2.Text);

int p = -1;

int r = -1;

z = z - 1;

w = w - 1;

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

{

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

{

if (z == i & w == j)

p = Convert.ToInt32(a1[i, j].Text);

if (z == i & w == j)

r = Convert.ToInt32(a2[i, j].Text);

}

}

if (p == -1) MessageBox.Show("Элемент с таким индексом не существует", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error);

else MessageBox.Show(string.Format("Элемент 1 матрицы = " + p.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

if (r != -1) MessageBox.Show(string.Format("Элемент 2 матрицы = " + r.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);

}

button2.Enabled = false;

saveToolStripMenuItem.Enabled = true;

}

catch { MessageBox.Show("Вводите только числа!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning); }

}

Сохранение результата осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой меню "Сохранить". Реализация данной функции представлена ниже.

private void saveToolStripMenuItem_Click(object sender, EventArgs e)//сохранить файл

{

SaveFileDialog sfd = new SaveFileDialog();

sfd.Filter = "txt files (*.txt)|*.txt";

sfd.ShowDialog();

StreamWriter sw = new StreamWriter(sfd.FileName);

for (int i = 0; i < a3.GetLength(0); i++)

{

for (int j = 0; j < a3.GetLength(1); j++)

{

sw.WriteLine(a3[i, j].Text + " ");

}

}

sw.Close();

openToolStripMenuItem.Enabled = true;

}

Просмотр сохраненного результата осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой меню "Открыть". Реализация данной функции представлена ниже.

private void openToolStripMenuItem_Click(object sender, EventArgs e)//открыть файл

{

OpenFileDialog ofd = new OpenFileDialog();

ofd.ShowDialog();

StreamReader sr = new StreamReader(ofd.FileName);

for (int i = 0; i < a3.GetLength(0); i++)

{

for (int j = 0; j < a3.GetLength(1); j++)

{

a3[i, j].Text = sr.ReadLine();

}

}

sr.Close();

}

Вызов справки осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов даного класса закреплены за кнопкой меню "Справка". Реализация данной функции представлена ниже.

private void helpToolStripMenuItem_Click_1(object sender, EventArgs e)//вызов справки

{

Process p = new Process();

p.StartInfo.FileName = helpProvider1.HelpNamespace;

p.Start();

p.WaitForExit();

}

Очистка текущих результатов для создания новых матриц осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой меню "Новая матрица". Реализация данной функции представлена ниже.

private void новаяМатрицаToolStripMenuItem_Click(object sender, EventArgs e)//очистить

{

Application.Restart();

}

Выход из матричного редактора осуществляется в методах пользовательского класса Matrix. Создание объектов и вызов методов данного класса закреплены за кнопкой меню "Выход". Реализация данной функции представлена ниже.

private void exitToolStripMenuItem_Click(object sender, EventArgs e)//выход

{

Application.Exit();

}

4. Описание программного средства

4.1 Общие сведения

Для того чтобы начать работу с программой, нужно запустить файл "Матричный редактор.exe". Его объем составляет 372 килобайта. Файл "Матричный редактор.exe" содержит три директивы: System.Windows.Forms, System.IO, System.Diagnostics. Для функционирования программы необходимо установить .Net Framework 3.0.

На этапе компиляции программы подключаются стандартная директива System.Windows.Forms для возможности расположения и использования компонент на форме, директива System.IO, предназначенная для использования функций работы с файлами, директива System.Diagnostics - использование функции загрузки сторонних приложений.

4.2 Функциональное назначение

Главным назначением программы является автоматизация процесса операций над матрицами. Программное приложение должно автоматически выполнять выбранное действие над матрицами.

При выполнении действия над матрицами проверяется выбранный пункт действия и введенная размерность матриц и выполняется соответствующее действие над матрицами указанной размерности.

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

Средства защиты, разграничения доступа к данным и сетевая поддержка не предусмотрены.

5. Методика испытаний

5.1 Технические требования

Минимальные системные требования к данному приложению представлены в таблице 3.

Таблица 3 - Минимальные системные требования

Элементы конфигурации

Описание характеристик

Процессор

AMD/Intel 1200Ghz +

Оперативная память

256mb +

Видео адаптер

64mb +

Дисковой накопитель

25 Mb+ свободного места

Клавиатура

Совместимая с персональным компьютером

Мышь

Совместимая с персональным компьютером

Блок питания

200W +

Монитор

15 +

Операционная система

Windows 95\98\2000\XP\Vista

Рекомендуемые системные требования к данному приложению представлены в таблице 4.

Таблица 4 - Рекомендуемые системные требования

Элементы конфигурации

Описание характеристик

Процессор

AMD/Intel 2000Ghz +

Оперативная память

1024mb +

Видео адаптер

128mb +

Дисковой накопитель

50 Mb+ свободного места

Клавиатура

Совместимая с персональным компьютером

Мышь

Совместимая с персональным компьютером

Блок питания

300W +

Монитор

17 +

Операционная система

Windows XP\Vista

5.2 Функциональное тестирование

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

Протестируем функцию заполнения матриц случайными числами и функцию поиска.

Для того чтобы заполнить матрицы случайными числами необходимо ввести количество строк и столбцов в матрицах, нажать кнопку "Создать", а затем нажать кнопку "Генерировать". Реализация данной функций представлена на рисунке 2.

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

Реализация данной функций представлена на рисунках 3 и 4.

Рисунок 2 - Генерация случайными числами

Рисунок 3 - Результат поиска в 1 матрице

Рисунок 4 - Результат поиска во 2 матрице

В случаи ввода некорректных значений приложение выдаст сообщение об ошибке.

Примеры таких сообщений представлены на рисунке 5-8.

Рисунок 5 - Сообщение об ошибке

Рисунок 6 - Сообщение об ошибке

Рисунок 7 - Сообщение об ошибке

Рисунок 8 - Сообщение об ошибке

6. Применение

6.1 Назначение программы

Главным назначением программы является автоматизация операций над матрицами в зависимости от таких показателей, как: размерность матриц, ввод матриц, выбранное действие.

Разработанное приложение имеет понятный интерфейс, довольно просто в применении, но в тоже время позволяет уменьшить затраты времени, используемые при вычислении за счет автоматизации вычислительных процессов.

6.2 Условия применения

Необходимо отметить, что данное программное средство не обладает средствами, ограничивающими доступ к нему, а также средствами, препятствующими свободному распространения программы. Для работы с приложением не требуется установка дополнительных компонентов и специальных технических и программных ресурсов.

6.3 Справочная система

Справочная система представляет собой описание возможных действий для работы с программой. Файл справки с расширением hta поставляется вместе с программным продуктом, файл справки связан с программой при помощи компонента HelpProvider и свойства HelpNamespace где указывается путь к месту хранения файла. Для возможности вызова справки по нажатию клавиши F1 в свойствах формы установлен параметр HelpButton = true.

Рисунок 9 - Справочная система программы

6.4 Демонстрационный пример использования

Полную проверку программы гарантирует исчерпывающее тестирование. Оно требует проверить все наборы исходных данных, все варианты их обработки и включает большое количество тестовых вариантов. Хорошим считают тестовый вариант с высокой вероятностью обнаружения еще нераскрытой ошибки. Успешным называют тест, который обнаруживает до сих пор не раскрытую ошибку.

На главной форме расположено меню с кнопками: "Новая матрица", "Выполнить", "Открыть", "Сохранить", "Справка", "Выход". Также на главной форме расположен GroupBox с действиями над матрицами: "Сложение", "Вычитание", "Умножение", "Транспонирование", "Вычисление детерминанта", "Вычисление следа", "Поиск" и кнопки "Создать", "Генерировать". Пример действий над матрицами с 4 строками и 4 столбцами представлен на рисунках 10-18.

Рисунок 10 - Сложение матриц

Рисунок 11 - Вычитание матриц

Рисунок 12 - Умножение матриц

Рисунок 13 - Транспонирование матриц

Рисунок 14 - Вычисление детерминанта 1 матрицы

Рисунок 15 - Вычисление детерминанта 2 матрицы

Рисунок 16 - Вычисление следа 1 матрицы

Рисунок 17 - Вычисление следа 2 матрицы

Рисунок 18 - Сохранение результата в файл

Рисунок 19 - Просмотр сохранённого результата

Рисунок 20 - Открытие сохранённого файла

Заключение

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

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

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

Программа реализована в полном объеме и в соответствии с заданными требованиями. Полностью отлажена и протестирована. Поставленные задачи выполнены.

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

В процессе разработки программы использовался в большом объеме материал по программированию, что способствовало закреплению наработанных навыков и умений в этих интересных областях знаний.

Литература

1 Троелсен Э С# и платформа .Net. - М.: Питер, 2003

2 Багласова Т.Г. Методические указания по оформлению курсовых и дипломных работ. -М.: ТБП, 2006

3 Павловская Т. С#. Программирование на языке высокого уровня. Учебник для вузов. - М.: Питер, 2008

4 Леонтьев В.П. Новейшая энциклопедия персонального компьютера. - М.: ОЛМА-ПРЕСС, 2002

5 Липсиц А.М. CASE-технологии. Современные методы и средства проектирования информационных систем. - М.: Бином, 1999

6 Леоненков А. UML2 - М.: БХВ-Петербург, 2007

7 ГОСТ 2.106-96. ЕСКД. Текстовые документы

8 ГОСТ 19.401-2000. ЕСПД. Текст программы

Приложение

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

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;

using System.IO;

using System.Diagnostics;

namespace Matrix

{

public partial class Form1 : Form

{

public int n;

public int m;

public TextBox[,] a1;

public TextBox[,] a2;

public TextBox[,] a3;

public class matrix

{

public int stroka;

public int stolbets;

public TextBox[,] a1;

public TextBox[,] a2;

public TextBox[,] a3;

public matrix(int stroka, int stolbets)

{

this.stroka = stroka;

this.stolbets = stolbets;

}

public int Stroka

{

get { return stroka; }

set { stroka = value; }

}

public int Stolbets

{

get { return stolbets; }

set { stolbets = value; }

}

}

public Form1()

{

InitializeComponent();

string s = Application.StartupPath;

helpProvider1.HelpNamespace = s + "\\Help\\help_tmphtm\\index.hta";

}

private void button1_Click(object sender, EventArgs e)//создание матриц

{

try

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

if (n >= 5)

{ MessageBox.Show("Превышено допустимое количество строк в матрице!", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Error); }

if (m >= 5)

{ MessageBox.Show("Превышено допустимое количество столбцов в матрице!", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Error); }

else

a1 = new TextBox[n, m];

a2 = new TextBox[n, m];

int k = 30;

int l = 90;

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

{

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

{

a1[i, j] = new TextBox();

a1[i, j].Width = 25;

a1[i, j].Location = new Point(50 + k, 50 + l);

Controls.Add(a1[i, j]);

k += 30;

}

k = 30;

l += 30;

}

int k1 = 30;

int l1 = 240;

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

{

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

{

a2[i, j] = new TextBox();

a2[i, j].Width = 25;

a2[i, j].Location = new Point(50 + k1, 50 + l1);

Controls.Add(a2[i, j]);

k1 += 30;

}

k1 = 30;

l1 += 30;

}

groupBox1.Enabled = true;

fileToolStripMenuItem.Enabled = true;

новаяМатрицаToolStripMenuItem.Enabled = true;

button1.Enabled = false;

button2.Enabled = true;

textBox1.Enabled = false;

textBox2.Enabled = false;

}

catch { MessageBox.Show("Вводите числа в диапазоне от 1 до 4", "Внимание", MessageBoxButtons.OK,MessageBoxIcon.Warning); }

}

private void button2_Click(object sender, EventArgs e)//заполнение матриц случайными числами

{

Random x = new Random();

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

{

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

{

a1[i, j].Text = Convert.ToString(x.Next(-49, 499));

}

}

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

{

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

{

a2[i, j].Text = Convert.ToString(x.Next(-49, 499));

}

}

button2.Enabled = false;

}

private void fileToolStripMenuItem_Click(object sender, EventArgs e)

{

try

{

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

{

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

{

if (i>=100)

{ MessageBox.Show("Вводите только числа!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); }

if (j>=100)

{ MessageBox.Show("Вводите только числа!", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Error); }

}

}

if (radioButton1.Checked == true)//сложение матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) + Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton2.Enabled = false;

radioButton3.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton2.Checked == true)//вычитание матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) - Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton3.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton3.Checked == true)//умножение матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[i, j].Text) * Convert.ToInt32(a2[i, j].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton2.Enabled = false;

radioButton4.Enabled = false;

}

if (radioButton4.Checked)//транспонирование матриц

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

a3 = new TextBox[n, m];

int k2 = 200;

int l2 = 240;

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

{

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

{

a3[i, j] = new TextBox();

a3[i, j].Width = 25;

a3[i, j].Location = new Point(50 + k2, 50 + l2);

a3[i, j].Text = Convert.ToString(Convert.ToInt32(a1[j, i].Text));

Controls.Add(a3[i, j]);

k2 += 30;

}

k2 = 200;

l2 += 30;

}

radioButton1.Enabled = false;

radioButton2.Enabled = false;

radioButton3.Enabled = false;

}

if (radioButton5.Checked == true)//вычисление детерминанта

{

n = Convert.ToInt32(textBox1.Text);

m = Convert.ToInt32(textBox2.Text);

int d = 1;

int t = 1;

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

{

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

{

if (i == j) d *= Convert.ToInt32(a1[i, j].Text);

if (i == j) t *= Convert.ToInt32(a2[i, j].Text);

}

}

MessageBox.Show(string.Format("Детерминант 1 матрицы = " + d.ToString()), "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);


Подобные документы

  • Автоматизация процесса создания рекламных объявлений и билбордов. Шаблон визитной карточки. Требования к аппаратным и операционным ресурсам компьютера, на котором будет разрабатываться программное приложение. Инструменты разработки. Интерфейс программы.

    курсовая работа [734,1 K], добавлен 15.06.2013

  • Понятия вычислительной системы, ее аппаратное обеспечение. Конфигурация и устройство компьютера. Элементы управления операционной системы Windows ХР. Стандартные и служебные приложения ОС. Архитектура фон Нейман. Работа в программе Microsoft Excel.

    шпаргалка [47,0 K], добавлен 29.12.2010

  • Разработка информационной системы анализа успеваемости студентов. Особенности режима просмотра объектов с помощью редактора Visual Basic for Application. Виды диалоговых окон и основных элементов управления. Формирование диаграммы успеваемости группы.

    курсовая работа [1,3 M], добавлен 28.11.2008

  • Функциональное назначение системного, прикладного и инструментального программного обеспечения компьютера. Характеристика состава и командного языка операционной системы MS DOS. Интерфейс и структура окон в Windows 98; методы управления программами.

    реферат [41,2 K], добавлен 18.12.2011

  • Эволюция графических пользовательских интерфейсов. Устройство системы X Window и менеджеры окон. Описание рабочего стола и приложения KDE и GNOME. Обзор основных принципов организации интерфейса в системе Windows, описание пакета ее прикладных программ.

    реферат [1,8 M], добавлен 15.02.2012

  • Задачи, выполняемые главным меню оперативной системы. Разделы меню "пуск". Запуск программ компьютера. Использование поля поиска. Ссылки правой панели на часто используемые компоненты. Кнопка "Завершение работы". Настройка отображения элементов на панели.

    презентация [1,2 M], добавлен 21.03.2015

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

    учебное пособие [2,1 M], добавлен 27.04.2011

  • Знакомство с техническими характеристиками персонального компьютера. Установка операционной системы и драйверов Windows 7. Способы чистки Windows XP Professional SP3. Методы восстановления операционной системы. Выполнение установки Microsoft Office 2010.

    отчет по практике [5,6 M], добавлен 22.09.2014

  • Назначение и свойства стандартных диалоговых окон для работы с файловой системой. Свойства, управляющие видом меню. Программирование чтения и записи файлов. Исключительные ситуации и диагностические сообщения. Приемы составления контекстного меню.

    лекция [775,2 K], добавлен 09.12.2013

  • История создания. Windows 9x/NT. Операционная система Microsoft Windows. Преимущества и недостатки Windows. Некоторые клавиатурные комбинации Windows 9x и NT. Windows XP Professional. Наиболее совершенная защита.

    реферат [19,3 K], добавлен 18.07.2004

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.