Программная реализация матричного редактора - Курсовая работа

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

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Целью разработки проекта на тему "Программная реализация матричного редактора" является создание программы, которая позволит уменьшить затраты времени используемого при выполнении действий над матрицами за счет автоматизации вычислительных процессов. В графической части будут представлены диаграммы вариантов использования, классов, деятельности, последовательности и компонентов. С их помощью определяются важные для предметной области объекты (сущности), их свойства (атрибуты) и отношения друг с другом (связи). Связь - это ассоциация между сущностями, при которой, как правило, каждый экземпляр одной сущности, называемой родительской сущностью, ассоциирован с произвольным (в том числе нулевым) количеством экземпляров второй сущности, называемой сущностью-потомком, а каждый экземпляр сущности-потомка ассоциирован в точности с одним экземпляром сущности-родителя. Суть диаграммы вариантов использования состоит в следующем: проектируемая система представляется в виде множества сущностей или актеров, взаимодействующих с системой с помощью так называемых вариантов использования.В рамках курсового проектирования по предмету "Конструирование программ и языки программирования" было разработано программное приложение "Матричный редактор", позволяющее автоматизировать процесс выполнения действий над матрицами. Программное средство имеет ряд достоинств: простой и понятный интерфейс, небольшой объем памяти, занимаемый приложением на различных носителях информации, удобно для быстрой обработки информации. В программе реализованы такие задачи, как: выбор действия над матрицами, выбор способа ввода матриц, возможность чтения информации из файла, предоставление справочной информации.using System.Text; {n = Convert.TOINT32(TEXTBOX1.Text); a3[i, j].Text = Convert.TOSTRING(Convert.TOINT32(a1[i, j].Text) Convert.TOINT32(a2[i, j].Text)); a3[i, j].Text = Convert.TOSTRING(Convert.TOINT32(a1[i, j].Text) - Convert.TOINT32(a2[i, j].Text)); a3[i, j].Text = Convert.TOSTRING(Convert.TOINT32(a1[i, j].Text) * Convert.TOINT32(a2[i, j].

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

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

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

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

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

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

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

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

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

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

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

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

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

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# относится к семье языков с С-подобным синтаксисом, из них его синтаксис наиболее близок к С и 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 Функциональное назначение

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

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

В программе имеется возможность поиска по инде

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?