Разработка справочно-информационной системы "Справочник по оборудованию"

 

Министерство Образования Республики Беларусь

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ

ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО

Факультет автоматизированных и информационных систем

Кафедра: «Информационные технологии»








РАСЧЕТНО-ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

по дисциплине: «Объектно-ориентированное программирование»

на тему: «Разработка справочно-информационной системы «Справочник по оборудованию»»


Исполнитель: студент группы ИТ-22

Ясонов В.А.

Руководитель: преподаватель

Кухаренко А.А.







Гомель 2013

Реферат


Курсовой работы Ясонова В.А.

«Разработка автоматизированной информационной системы «Справочник по оборудованию »»

Объем работы 64 страницы, в том числе 15 рисунков, 16 таблиц, 6 использованных источников, 12 приложений.

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

Объектом разработки является Windows-приложение поиска информации в бинарном дереве.

Проведен анализ использования бинарных деревьев для поиска данных. В качестве обхода бинарного дерева реализован обход в глубину.

Разработана структура Windows-приложения и определены его основные функциональные возможности.

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

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

В результате разработано программное средство, полностью удовлетворяющее этим требованиям.

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

СОДЕРЖАНИЕ


Введение

. Использование бинарных деревьев для поиска данных

.1 Бинарные деревья

.2 Способы поиска в бинарном дереве

.2.1 Обход дерева в глубину

.2.2 Обход дерева в ширину

.3 Использование средств C# для работы с бинарным деревом

. Алгоритмический анализ задачи

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

.2 Исходные данные

.3 Графические схемы алгоритмов работы с бинарным деревом

. Подходы к проектированию алгоритмов и программ

.1 История

.2 Основные понятия

.3 Определение ООП и его основные концепции

.4 Язык С# - инструментальное средство для разработки Автоматизированной информационной системы «Адрес»

.4.1 Общие сведения о языке C#

.4.2 Использованные элементы управления

.4.3 Использованные стандартные коллекции

.4.4 Обработка исключительных ситуаций

.4.5 Описание использованных интерфейсов

. Описание разработанного приложения

.1 Структура программного комплекса

.2 Инструкция пользователя

.3 Описание результатов

Заключение

Список использованных источников

Приложение А Текст класса Guide_of_Equipment

Приложение Б Текст класса Tree

Приложение В Текст класса Node

Приложение Г Текст класса About

Приложение Д Текст класса Change

Приложение Е Текст класса Delete

Приложение Ж Текст класса Find

Приложение З Текст класса Information

Приложение И Текст класса Insert

Приложение К Текст класса Main

Приложение Л Текст класса Overload

Приложение М Текст исходного файла для тестирования


ВВЕДЕНИЕ


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

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

Структуры данных подразделяются на линейные и нелинейные.

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

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

В данной курсовой работе разработана программа для работы с бинарным деревом поиска. Программа была создана в среде Microsoft Visual C# 2010.

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

1. ИСПОЛЬЗОВАНИЕ БИНАРНЫХ ДЕРЕВЬЕВ ДЛЯ ПОИСКА ДАННЫХ


1.1 Бинарные деревья


Бинарное дерево - это конечное множество элементов, которое либо пусто, либо содержит один элемент, называемый корнем дерева, а остальные элементы множества делятся на два непересекающихся подмножества, каждое из которых само является бинарным деревом [2].

Эти подмножества называются левым и правым поддеревьями исходного дерева. Каждый элемент бинарного дерева называется узлом дерева. Пример дерева на рисунке 1.1.


Рисунок 1.1 - Пример бинарного дерева (корень обычно изображается сверху, хотя изображение можно и перевернуть)


Пример организации структуры данных на рисунке 1.2.


Рисунок 1.2 - Пример организации структуры данных

Если дерево организовано так, что для каждого узла все ключи его левого поддерева меньше ключа этого узла, а все ключи его правого поддерева - больше, оно называется деревом поиска. Одинаковые ключи здесь не допускаются [6].

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

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

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

Двоичным или бинарным деревом поиска называется бинарное дерево, для каждого узла x которого выполняется следующее свойство:

-если узел y лежит в левом поддереве узла x, то key[y] < key[x];

-если узел y лежит в правом поддереве узла x, то key[y] ? key[x] [3].


1.2 Способы поиска в бинарном дереве


Существует достаточно много алгоритмов работы с древовидными структурами, в которых часто встречается понятие обхода (traversing) дерева или "прохода" по дереву. При таком методе исследования дерева каждый узел посещается только один раз, а полный обход задает линейное упорядочивание узлов, что позволяет упростить алгоритм, так как при этом можно использовать понятие "следующий" узел, т.е. узел стоящий после данного при выбранном порядке обхода [4].

Существует два основных способа обхода дерева: в глубину и в ширину.

1.2.1 Обход дерева в глубину

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

-префиксный (прямой) обход - сначала обрабатывается текущий узел, затем левое и правое поддеревья;

-инфиксный (симметричный) обход - сначала обрабатывается левое поддерево текущего узла, затем корень, затем правое поддерево;

-постфиксный (обратный) обход - сначала обрабатываются левое и правое поддеревья текущего узла, затем сам узел [2].

бинарный дерево программный алгоритм

1.2.2 Обход дерева в ширину

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

-Из очереди выталкивается очередной узел;

-Этот узел обрабатывается;

-В очередь добавляются оба сына этого узла.

Заметим, что перечисление узлов происходит в порядке удаления от корня, что делает поиск в ширину удобным, например, для поиска узла дерева со значением k, наиболее близкого к корню [2].


1.3 Средства языка С# для работы с бинарными деревьями


Язык С# предоставляет больше возможности для работы с бинарными деревьями. Фактически бинарное дерево представляет собой структуру, состоящую из множества узлов, связанных ссылками. Каждый узел дерева имеет поля, содержащие ссылки на левый и правый дочерний элемент, а так же на родительский элемент данного узла. Элемент TreeView предназначен для иерархического отображения дерева. Узлы в TreeView это экземпляры класса TreeNode [1].

Свойства TreeView:

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

-ImageList - отображает картинки рядом с узлами;

-SelectedNode - выбранный в текущий момент узел;

-Nodes - коллекция узлов TreeNode.

Эта коллекция содержит следующие методы:

-Add - добавление узла;

-Add(string text) - параметр text - строка, которая будет отражаться рядом с узлом;

-Add(TreeNode node) - добавляет узел node;

-Clear() - удаляет все узлы из коллекции;

-Remove(TreeNode node) - удаляет узел node из коллекции;

-RemoveAt(int index) - удаляет узел с индексом index из коллекции;

-Insert(int index,TreeNode node) - вставляет узел node на место определенное индексом index.

2. АЛГОРИТМИЧЕСКИЙ АНАЛИЗ ЗАДАЧИ


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


Необходимо разработать Windows-приложение на языке С#, выполняющее следующие действия:

1.Чтение из текстового файла информации объектах класса согласно варианту. Количество записей не менее 50 (см. табл. 2.1);

2.Вывод исходных данных в виде таблицы;

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

.Построение бинарного дерева (ключ - номер дома, способ обхода - рекурсивный);

.Визуализация бинарного дерева;

.Редактирование исходных данных (вставка, удаление, замена) с внесением соответствующих изменений в бинарное дерево;

.Поиск информации по заданному ключу;

.Справочную информацию о программном продукте и об авторе.

Создать класс согласно варианту. Класс должен содержать следующие элементы:

1.Описание полей класса (поле характеристика дома оформить как перечисление);

2.Конструкторы с параметрами и по умолчанию, а также необходимые свойства и методы;

.Перегрузку бинарного оператора сложения (сложение номеров домов и создание нового адреса с номером дома равным сумме номеров домов слагаемых);

.Перегрузку операторов отношения больше и меньше (сравнивает адреса по номерам домов);

.Перегрузку префиксного и постфиксного инкремента (выбирает следующую характеристику дома из перечисления);

.Создание массива из объектов класса;

.Функцию, определяющую максимальный объект. Для сравнения использовать перегруженный оператор отношения (находит адрес с максимальным номером дома);

.Предусмотреть обработку и инициализацию исключительных ситуаций;

.Класс должен реализовывать интерфейс IComparable.


Таблица 2.1 - Описание класса

№ вариантаНазвание классаПоля32Справочник по Оборудованиюнаименование оборудования, страна-изготовитель, стоимость, год изготовления

2.2 Исходные данные


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

-наименование оборудование;

-страна-изготовитель;

-стоимость;

-год изготовления;

Ключ, по которому осуществляется поиск информации, и способ обхода бинарного дерева, заданы согласно варианту и представлены в таблице 2.2

Файл находится в директории: Курсовой проект\test.txt.


Таблица 2.2 - Способ обхода бинарного дерева и ключ

ВариантКлючСпособ обхода бинарного дереваОбход производить с помощью32Наименование ОборудованияОбход в по уровнямстека

2.3 Графические схемы алгоритмов работы с бинарным деревом


При редактировании ячейки с информацией об наименовании оборудования, происходит поиск данного элемента в бинарном дереве (блок-схема см. рис. 2.1). Если элемент найден - возвращается узел дерева, содержащий информацию об этом элементе, если нет - возвращается null.


Рисунок 2.1 - Блок-схема «Обход дерева»


При выборе действия «Добавить» (блок-схема см. рис. 2.2) вызывается подпрограмма, которая добавляет заданный элемент в бинарное дерево.

Рисунок 2.2 - Блок-схема подпрограммы «Добавить»


При выборе действия «Удалить» (блок-схема см. рис. 2.3) вызывается подпрограмма, которая находит заданный элемент и удаляет его из дерева.


Рисунок 2.3 - Блок-схема подпрограммы «Удалить»


3. Подходы к проектированию алгоритмов и программ


.1 История


В последние годы большое распространение получила парадигма объектно-ориентированного программирования и языков на ее основе. ООП возникло в результате развития идеологии процедурного программирования <#"justify">Инкапсуляция - это свойство системы, позволяющее объединить данные и методы, работающие с ними в классе, и скрыть детали реализации от пользователя.

-Наследование <#"justify">Наследование - это свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс - потомком, наследником или производным классом.

-Полиморфизм <#"justify">Полиморфизм - это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

-Класс <#"justify">1.Всё является объектом.

2.Вычисления осуществляются путём взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие. Объекты взаимодействуют, посылая и получая сообщения. Сообщение - это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия.

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

.Каждый объект является представителем класса, который выражает общие свойства объектов (таких, как целые числа или списки).

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

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

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

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

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

Появление в ООП отдельного понятия класса закономерно вытекает из желания иметь множество объектов со сходным поведением. Класс в ООП - это в чистом виде абстрактный тип данных <#"justify">try{}{ MessageBox.Show(Текст ошибки, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); }


3.4.5 Описание использованных интерфейсов

При разработке программного продукта был использован интерфейс IComparable. Если вы используете с массивом собственные классы, то должны реализовать интерфейс IComparable. Этот интерфейс определяет единственный метод CompareTo(), который должен возвращать 0, если сравниваемые объекты эквивалентны, значение меньше 0, если данный экземпляр должен следовать перед объектом, переданным в параметре, и значение больше 0, если экземпляр должен следовать за объектом, переданным в параметре.

В данном случае объекты класса Guide_of_Equipment сравниваются по температуре. Листинг программы выглядит следующим образом:

public int CompareTo(object ob)

{_of_Equipment tmp = (Guide_of_Equipment)ob;(DateTime.Compare(this.year, tmp.year) > 0) return 1;(DateTime.Compare(this.year, tmp.year) < 0) return -1;

return 0;

}

4. ОПИСАНИЕ РАЗРАБОТАННОГО ПРИЛОЖЕНИЯ


4.1 Структура программного комплекса


Программа состоит из 11 классов:

-класс Guide_of_Equipment, экземпляры которого, содержат информацию оборудовании, элементы класса описаны в таблице 4.1;

-класс Node, экземпляр которого, представляет собой узел бинарного дерева, элементы класса описаны в таблице 4.2;

-класс Tree, экземпляр которого представляет собой бинарное дерево, элементы класса описаны в таблице 4.3;

-класс Change, служит для замены элементов в дереве, элементы класса описаны в таблице 4.4;

-класс About, который содержит информацию об авторе, таблица 4.5;

-класс Delete, служит для удаления элемента из дерева, элементы класса описаны в таблице 4.6;

-класс Find, осуществляет поиск элемента в дереве, элементы класса описаны в таблице 4.7;

-класс Information, содержит информацию о программе, элементы класса описаны в таблице 4.8;

-класс Insert, служит для добавления элементов в дерево, элементы класса описаны в таблице 4.9;

-класс Main, содержит элементы контроля для работы с программой, элементы класса описаны в таблице 4.10;

-класс Overload, предоставляет демонстрацию перегрузок, элементы класса описаны в таблице 4.11;

В таблице 4.1 описаны элементы, которые используются в классе Student.

Таблица 4.1 - Элементы класса Guide_of_Equipment

ИмяВид элементаТипСпеци-фикаторОписание12345name_equi-pmentПере-чесленияEnumPublicПеречисление, содержащее страны изготовителейcountryПолеname_equi- pmentPublicНаименование оборудованияequipmentПолеStringPublicСтрана-изготовительCostПолеIntPublicСтоимостьYearПолеDateTimePublicГод изготовленияGuide_of_EquipmentКонструктор без параметров-PublicПрисваивает начальные значения полям классаGuide_of_EquipmentКонструктор с параметрами-PublicЗадает значения всех полей при создании объектаCountryСвойствоstringPublicВозвращает наименование оборудованияcostСвойствоintPublicВозвращает стоимостьYearМетодDataTimePublicВозвращает год изготовленияoperator ++Перегружен-ный оператор сложенияGuide_of_EquipmentPublicУвеличивает стоимость на единицуoperator -- Перегруженный оператор вычитанияGuide_of_EquipmentPublicУменьшает стоимость на единицуoperator <Перегруженный оператор отношения (меньше)boolPublicСравнивает года изготовленияoperator >Перегруженный оператор отношения (больше)boolPublicСравнивает года изготовленияoperator +Перегруженный оператор отношенияGuide_of_EquipmentPublicСкладывает ценыCompareСтатический методintPublicСравнивает наименования оборудованияarrayСтатический методGuide_of_Equipment[]PublicДобавляет заданный элемент в начало массиваMaxСтатический методGuide_of_EquipmentPublicНаходит наименование оборудования с максимальным годом изготовленияCompareToСтатический методintPublicСравнивает оборудование по году изготовленияOutМетодArrayListPublicВозвращает данные полей классаToStringМетодStringPublicВозвращает строку содержащую данные полей

В таблице 4.2 описаны элементы, которые используются в классе Node.


Таблица 4.2 - Элементы класса Node

ИмяВид элементаТипСпеци-фикаторОписаниеNode Конструк-тор-PublicКорень дереваLeftСвойствоNodePublicВозвращает левого потомкаRightСвойствоNodePublicВозвращает правого потомкаTopСвойствоNodePublicВозвращает предкаGet_J СвойстваGuide_of_EquipmentPublicВозвращает сведения о наименовании оборудования, соответствующему данному узлу

В таблице 4.3 описаны элементы, используемые в классе Tree.


Таблица 4.3 - Элементы класса Tree

ИмяВид элементаТипСпеци-фикаторОписаниеRootПолеNodePrivateУзел дереваRootСвойствоNodePublicВозвращает узел дереваAddingПолеVoidPublicДобавление нового элемента дереваsearchПолеNodePublicОсуществляет поиск элементов дереваMostRightNodeМетодNodePrivateНаходит самый правый элемент дереваMostLeftNodeМетодNodePrivateНаходит самый левый элемент дереваChangeDataМетодVoidPublicЗаменяет данные узлаSearchМетодNodePublicОсуществляет поиск элементовRemoveМетодNodePrivateУдаляет элементы дерева

В таблице 4.4 описаны элементы, используемые в классе Change.


Таблица 4.4 - Элементы класса Change

ИмяВид элементаСпеци-фикаторОписание1234label1 (Наименование оборудования для поиска)LabelPrivateПредставляет элементу управления текстlabel2 (Наименование оборудования)LabelPrivateПредставляет элементу управления текстlabel3 (Стоимость)LabelPrivateПредставляет элементу управления текстlabel4 (Год изготовления)LabelPrivateПредставляет элементу управления текстlabel5 (Страна-изготовитель)LabelPrivateПредставляет элементу управления текстtextBox1TextBoxPrivateПозволяет осуществлять ввод текстаtextBox2TextBoxPrivateПозволяет осуществлять ввод текстаtextBox3TextBoxPrivateПозволяет осуществлять ввод текстаtextBox4TextBoxPrivateПозволяет осуществлять ввод текстаtextBox5TextBoxPrivateПозволяет осуществлять ввод текстаbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиbutton2BottonPrivateПозволяет выполнять действия связанные с нажатием кнопки

В таблице 4.5 описаны элементы, используемые в классе About.


Таблица 4.5 - Элементы класса

ИмяВид элементаСпеци-фикаторОписаниеpictureBox1PictureBoxPrivateПозволяет показывать изображениеbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиrichTextBox1RichTextBoxPrivateПозволяет выводить текстовую информацию

В таблице 4.6 описаны элементы, используемые в классе Delete.


Таблица 4.6 - Элементы класса Delete

ИмяВид ЭлементаСпеци-фикаторОписаниеlabel1 (Наименование оборудования)LabelPrivateПредставляет элементу управления текстpictureBox1PictureBoxPrivateПозволяет показывать изображениеbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиbutton2BottonPrivateПозволяет выполнять действия связанные с нажатием кнопки

В таблице 4.7 описаны элементы, используемые в классе Find.


Таблица 4.7 - Элементы класса Find

ИмяВид элементаСпеци-фикаторОписаниеlabel1 (Наименование оборудования)LabelPrivateПредставляет элементу управления текстtextBox1TextBoxPrivateПозволяет осуществлять ввод текстаbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиbutton2BottonPrivateПозволяет выполнять действия связанные с нажатием кнопкиdataGriedView1DataGriedViewPrivateВыводит информацию в виде таблицыВ таблице 4.8 описаны элементы, используемые в классе Information.


Таблица 4.8 - Элементы класса Information

ИмяВид элементаСпеци-фикаторОписаниеrichTextBox1RichTextBoxPrivateПозволяет выводить текстовую информациюbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопки

В таблице 4.9 описаны элементы, используемые в классе Insert.


Таблица 4.9 - Элементы класса Insert

ИмяВид элементаСпеци-фикаторОписаниеLabel1 (Наименование оборудования)LabelPrivateПредставляет элементу управления текстLabel1 (Год изготовления)LabelPrivateПредставляет элементу управления текстlabel3 (Стоимость)LabelPrivateПредставляет элементу управления текстlabel4 (Страна-изготовитель)LabelPrivateПредставляет элементу управления текстtextBox1TextBoxPrivateПозволяет осуществлять ввод текстаtextBox2TextBoxPrivateПозволяет осуществлять ввод текстаtextBox3TextBoxPrivateПозволяет осуществлять ввод текстаtextBox4TextBoxPrivateПозволяет осуществлять ввод текстаtextBox5TextBoxPrivateПозволяет осуществлять ввод текстаbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиbutton2BottonPrivateПозволяет выполнять действия связанные с нажатием кнопки

В таблице 4.10 описаны элементы, используемые в классе Main.


Таблица 4.10 - Элементы класса Main

ИмяВид элементаСпеци-фикаторОписаниеdataGriedView1DataGriedViewPrivateВыводит информацию в виде таблицыtreeView1TreeViewPrivateОсуществляет вывод информации в виде дереваmenuStrip1MenuStripPrivateПозволяет осуществлять вывод информации в виде меню

В таблице 4.11 описаны элементы, используемые в классе Overload.


Таблица 4.11 - Элементы класса Overload.

ИмяВид элементаСпеци-фикаторОписаниеlabel1 (Год изготовления)LabelPrivateПредставляет элементу управления текстlabel2 (Страна-изготовитель)LabelPrivateПредставляет элементу управления текстtextBox1TextBoxPrivateПозволяет осуществлять ввод текстаtextBox2TextBoxPrivateПозволяет осуществлять ввод текстаbutton1ButtonPrivateПозволяет выполнять действия связанные с нажатием кнопкиbutton2BottonPrivateПозволяет выполнять действия связанные с нажатием кнопки

4.2 Инструкция пользователя


Для запуска программы следует запустить файл: Курсовая\Guide of Equipment\bin\Debug\Guide of Equipment.exe.

На рисунке 4.1 изображено главное окно при старте приложения.

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

Рисунок 4.1 - Окно приложения при его первоначальном запуске


Пункт меню «Файл» содержит:

-«Открыть» (Открывает файл со списком адресов и заносит его в бинарное дерево);

-«Сохранить» (Сохраняет в файл список адресов из бинарного дерева);

-«Выход» (Выход из программы).

Пункт меню «Информация о проекте» вызывает краткую инструкцию по взаимодействию с приложением (см. рис. 4.2).


Рисунок 4.2 - Информация о программе


Пункт меню «Об авторе» вызывает краткую справку об авторе программы (см. рис. 4.3).

Рисунок 4.3 - Информация об авторе


В верхней части программы располагается меню содержащее следующие пункты:

-«Поиск» (осуществляет поиск оборудования, см. рисунок 4.4).

-«Редактирование» (производит вставку, удаление, замену оборудования в бинарное дерево, см. рисунок 4.5, см. рисунок 4.6, см. рисунок 4.7).

-«Дерево» (производит визуализацию бинарного дерева в элементе управления TreeView, см. рисунок 4.8).

-«Демонстрация перегрузок» (демонстрация перегрузок, см. рисунок 4.9).


Рисунок 4.4 - Вкладка поиска


Рисунок 4.5 - Вкладка добавления оборудования

Рисунок 4.6 - Вкладка удаления оборудования


Рисунок 4.7 - Вкладка замены оборудования

Рисунок 4.8 - Вкладка отображения дерева в TreeView


Рисунок 4.9 - Вкладка демонстрации перегрузок

Рисунок 4.10 - Вкладка демонстрации перегрузок


Рисунок 4.11 - Вкладка демонстрации перегрузок


4.3 Описание результатов


Программа считывает записи из исходного текстового файла, выводит исходные данные в виде таблицы и создает для них бинарное дерево. Осуществляет поиск информации о адресах по заданному ключу. Позволяет взаимодействовать с информацией, изменять существующие элементы и удалять их. Листинг программы находится в приложениях А, Б, В, Г, Д, Е, Ж, З, И, К, Л. Текст исходного файла содержится в приложении М.

На рисунке 4.12 изображен файл с исходными данными.


Рисунок 4.12 - Файл с исходными данными

ЗАКЛЮЧЕНИЕ


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

Также были даны краткие теоретические сведения по таким вопросам, как краткая характеристика бинарных деревьев поиска, способы их обхода.

В приложениях А, Б, В, Г, Д, Е, Ж, И, К, Л, отражен листинг программы.

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

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

Список использованных источников


1.Троелсен Э. Язык прогр

2.аммирования C# 2010 и платформа .NET 4 - М.: Издательский дом «Вильямс», 2010. - 1392 с.

3.Фаронов В.В. Программирование на языке C# - СПб.: Питер, 2007. - 240 с.

4.Агуров П.В. С#. Сборник рецептов. - СПб.: БХВ-Петербург, 2007. - 432 с.

5.Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Алгоритмы. Построение и анализ, 2-е изнание. - М.: Издательский дом «Вильямс», 2005 - 1296 с.

6.Уотсон, Карли, Нейтел, Кристиан, Педерсен, Якоб Хаммер. Visual C# 2008: базовый курс. - 2009. - 1216 с.

7.Павловская Т.А. C#. Программирование на языке высокого уровня. Учебник для вузов - СПб.: Питер, 2007. - 432 с.

8.Wikipedia - свободная энциклопедия [Электронный ресурс] - 2013 - Режим доступа: #"justify">ПРИЛОЖЕНИЕ А

(обязательное)


Текст класса Guide_of_Equipment.csSystem;System.Collections.Generic;System.Linq;System.Text;System.Collections;WindowsFormsApplication1

{class Guide_of_Equipment : IComparable

{enum name_equipment { Беларусь, Россия, Бельгия, Украина, Голландия }name_equipment country; //Наименование оборудованияstring equipment; //Страна-изготовительint Cost; //СтоимостьDateTime year; //Год изготовленияGuide_of_Equipment() //конструктор по умолчанию

{= "Беларусь";= 0;= DateTime.Now;= name_equipment.Беларусь;

}Guide_of_Equipment(string v_p, DateTime v_o, int n, name_equipment p) //конструктор с параметрами

{= v_p;= v_o;= n;= p;

}string Country

{{ return equipment; }{ equipment = value; }

}int cost

{{ return Cost; }{ Cost = value; }

}DateTime Year

{{ return year; }{ year = value; }

}

//Перегрузки префиксного и постфиксного инкрементовstatic Guide_of_Equipment operator ++(Guide_of_Equipment tr)

{.Cost++;tr;

}static Guide_of_Equipment operator --(Guide_of_Equipment tr)

{.Cost--;tr;

}

//Перегрузки операторов отношения

public static bool operator <(Guide_of_Equipment tr1, Guide_of_Equipment tr2)

{(tr1.year < tr2.year) return true;return false;

}static bool operator >(Guide_of_Equipment tr1, Guide_of_Equipment tr2)

{(tr1.year > tr2.year) return true;

else return false;

}

// //Перегрузка одного из бинарных операторов

public static Guide_of_Equipment operator +(Guide_of_Equipment a, Guide_of_Equipment b)

{_of_Equipment c = new Guide_of_Equipment();.Country = a.Country;.equipment = a.equipment;.year = a.year;.Cost = a.Cost + b.Cost;c;

}int Compare(object k1, object k2)

{f = 0;_of_Equipment tr1 = (Guide_of_Equipment)k1;_of_Equipment tr2 = (Guide_of_Equipment)k2;(tr1.equipment.CompareTo(tr2.equipment) > 0) f = 1;(tr1.equipment.CompareTo(tr2.equipment) < 0) f = -1;f = 0;f;

}static Guide_of_Equipment[] array(Guide_of_Equipment a, params Guide_of_Equipment[] b)

{_of_Equipment[] j = new Guide_of_Equipment[b.Length + 1];[0] = a;(int i = 1; i < j.Length; i++)[i] = b[i - 1];j;

}static Guide_of_Equipment max(Guide_of_Equipment[] a) //cтатический метод, возвращающий максимальный элемент

{_of_Equipment max = a[0];(int i = 1; i < a.Length; i++)(a[i] > max)= a[i];max;

}int CompareTo(object ob) //метод возвращающий результат сравнения обьектов

{

Guide_of_Equipment tmp = (Guide_of_Equipment)ob;(DateTime.Compare(this.year, tmp.year) > 0) return 1;(DateTime.Compare(this.year, tmp.year) < 0) return -1;0;

}ArrayList Out() // метод для вывода через ArrayList

{Get = new ArrayList();.Add(this.equipment);.Add(this.year.ToShortDateString());.Add(this.Cost);.Add(this.country);Get;

}override string ToString()

{year.ToShortDateString() + " ; " + equipment + " ; " + Cost.ToString() + " ; " + country.ToString() + " . ";

}

}

}


Приложение Б

(обязательное)


Текст класса Tree.csSystem;

using System.Collections.Generic;System.Linq;System.Text;WindowsFormsApplication1

{class Tree

{root; //главный узел (закрытое поле)

public Node Root //свойство для доступа к главному узлу дерева

{ get { return root; } set { root = value; } }void Adding(Node node)//добавление узла

{flag = true;current = root;(flag)

{(current == null)

{ root = node; flag = false; }(String.Compare(node.Get_J.equipment.ToString(), current.Get_J.equipment.ToString()) == -1)//если номер меньше следовательно идем налево

{(current.Left == null)

{.Left = node;.Left.Top = current;= false; //меняем значение флага

}

{ current = current.Left; }

}//соответственно на право

{(current.Right == null)

{.Right = node;.Right.Top = current;= false;

}{ current = current.Right; }

}

}

}

//СтекNode search(string equipment, Node r)

{<Node> stack = new Stack<Node>();

{(string.Compare(r.Get_J.equipment.ToString(), equipment) == 0) return r;(r.Left != null) stack.Push(r.Left);(r.Right != null) stack.Push(r.Right);= stack.Pop();

} while (stack.Count > 0);null;

}Node MostRightNode(Node uz)

{(uz.Right != null)MostRightNode(uz.Right);return uz;

}Node MostLeftNode(Node uz)

{(uz.Left != null)MostLeftNode(uz.Left);return uz;

}void ChangeData(Node uz, Guide_of_Equipment j, bool remove, bool search_for_delete)

{(uz != Root && remove == true)

{(uz);(new Node(j));

}

{.Get_J.country = j.country;.Get_J.Cost = j.Cost;.Get_J.equipment = j.equipment;.Get_J.year = j.year;

}

}Node Search(string equipment, bool remove, bool search_for_delete) //метод для поиска элемента, если установлен флаг удаления, то удаляет

{Rezult_Uzel;flag = true;C_Uzel = Root;ret = null;(flag)

{(String.Compare(equipment, C_Uzel.Get_J.equipment.ToString()) == 0) //выходим если нашли

{= false;= C_Uzel;(ret == root) search_for_delete = false;

}if (String.Compare(equipment, C_Uzel.Get_J.equipment.ToString()) < 0) //меньше, следовательно идем налево

{(C_Uzel.Left != null) C_Uzel = C_Uzel.Left;{ flag = false; }

}//иначе направо

{(C_Uzel.Right != null) C_Uzel = C_Uzel.Right;

else { flag = false; }

}

}w = new Find(); //обьект формы поиска для обращения к вспомогательному узлу для запоминания узла находящегося вверху над найденным_Uzel = ret; //найденный узел_Uzel = C_Uzel.Top; //текущим будет тот узел, который расположен над найденным

if (search_for_delete)

{Remove(ret);

}ret; //возвращаем найденный узел

}

private Node Remove(Node ret)

{(ret == null)

{null;

}(ret.Right == null && ret.Left == null)

{(ret == ret.Top.Left) ret.Top.Left = null;ret.Top.Right = null;

}

else

{(ret == ret.Top.Left)

{.Top.Left = ret.Right;(ret.Left == null)

{.Top.Left = ret.Right;

}

{rightBranch = MostRightNode(ret.Top);.Right = ret.Right;

}

}

{.Top.Right = ret.Right;(ret.Right == null)

{.Top.Right = ret.Left;

}

{leftBranch = MostLeftNode(ret.Top);.Left = ret.Left;

}

}

}null;

}

}

}


Приложение В

(обзяательное)


Текст класса Node.csSystem;

using System.Collections.Generic;System.Linq;System.Text;WindowsFormsApplication1

{class Node

{_of_Equipment guide;left, right, top;Node(Guide_of_Equipment guide) //конструктор

{ this.guide = guide; }Node Left // свойство для доступа к узлу

{{ return left; }{ left = value; }

}Node Right //Правее

{ get { return right; } set { right = value; } }Node Top

{ get { return top; } set { top = value; } }

public Guide_of_Equipment Get_J //Возвращает сведения о наименовании оборудования, соответствующему данному узлу

{{ return guide; }

}

}

}


Приложение Г

(обязательное)


Текст класса About.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1

{partial class About : Form

{About()

{();

}void button1_Click(object sender, EventArgs e)

{();

}void About_Load(object sender, EventArgs e)

{

}

}

}


Приложение Д

(обязательное)


Текст класса Change.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Collections;WindowsFormsApplication1

{partial class Change : Form

{_of_Equipment j;u = null;nonNumberEntered = false;Change()

{();

}void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{window = (Main)this.Owner;(e.KeyChar == (char)Keys.Enter)

{(textBox1.Text == window.Tree_Obj.Root.Get_J.equipment.ToString())

{.Show("Это корневой узел, вы можете изменять сведения, но не номер");

textBox2.Enabled = false;

}.Enabled = true;.Enabled = true;(Guide_of_Equipment obj in window.Obj_mas)

{(textBox1.Text == obj.equipment.ToString())

{= obj;str = new ArrayList();= obj.Out();.Text = str[0].ToString();.Text = str[2].ToString();.Text = str[1].ToString();.Text = str[3].ToString();

}

}(j == null)

{ MessageBox.Show("Такого оборудования нет.\n Повторите!", "Ошибка!"); groupBox1.Enabled = false; }

}

}void button1_Click(object sender, EventArgs e)

{window = (Main)this.Owner;

{= window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root);(u == null) throw new NullReferenceException();= new Guide_of_Equipment();.equipment = textBox2.Text;.Cost = int.Parse(textBox3.Text);.year = Convert.ToDateTime(textBox4.Text);.country = (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), textBox5.Text);();

}(NullReferenceException) { MessageBox.Show("Такое оборудование не найдено!", "Ошибка!"); return; }(Exception f) { MessageBox.Show("Тип, что вы ввели не соответствует требуемому типу, пожалуйста повторите.\n" + f.Message + " ","Ошибка!"); return; }.Tree_Obj.ChangeData(u, j, true, true);(int p = 0; p < window.Obj_mas.Count; p++) if (u.Get_J.equipment == window.Obj_mas[p].equipment) window.Obj_mas[p] = j;

}void button2_Click(object sender, EventArgs e)

{();

}

private void textBox3_KeyDown(object sender, KeyEventArgs e)

{= false;(e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)

{(e.KeyCode != Keys.Back)

{= true;

}

}

}void textBox3_KeyPress(object sender, KeyPressEventArgs e)

{(nonNumberEntered == true)

{.Handled = true;

}

}void textBox3_TextChanged(object sender, EventArgs e)

{


}void groupBox1_Enter(object sender, EventArgs e)

{

}

}

}


Приложение Е

(обязательное)


Текст класса Delete.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1

{partial class Delete : Form

{Delete()

{();

}void button1_Click(object sender, EventArgs e)

{(MessageBox.Show("Вы действительно хотите удалить данный элемент элемент?","Внимание!",

MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Cancel);k = true;window = (Main)this.Owner;

{(String.Compare(textBox1.Text, window.Tree_Obj.Root.Get_J.equipment.ToString()) == 0)

MessageBox.Show("Нельзя удалять это наименование оборудования (Корневой узел)!", "Ошибка!");

else

{Rem_Uzel = window.Tree_Obj.Search(textBox1.Text, false, false);(Rem_Uzel == window.Tree_Obj.Root)

{ window.Tree_Obj.Root = null; k = false; }(k)

{(Rem_Uzel.Right == null && Rem_Uzel.Left == null && Rem_Uzel != window.Tree_Obj.Root)

{(Rem_Uzel.Top.Left == Rem_Uzel)

{ Rem_Uzel.Top.Left = null; }if (Rem_Uzel.Top.Right == Rem_Uzel)

{ Rem_Uzel.Top.Right = null; }

}if (Rem_Uzel.Right != null)

{ window.Tree_Obj.Search(Rem_Uzel.Right.Get_J.equipment.ToString(), true, true); }if (Rem_Uzel.Left != null)

{ window.Tree_Obj.Search(Rem_Uzel.Left.Get_J.equipment.ToString(), true, true); }

}.Obj_mas.Remove(Rem_Uzel.Get_J);

}();

}(Exception) { MessageBox.Show("Такое наименование оборудования не найден, пожалуйста повторите.", "Ошибка!"); }

}void button2_Click(object sender, EventArgs e)

{();

}void Delete_Load(object sender, EventArgs e)

{

}

}

}


Приложение Ж

(обязательное)


Текст класса Find.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Collections;WindowsFormsApplication1

{partial class Find : Form

{Node vspom;Find()

{();

}

void button1_Click(object sender, EventArgs e)

{.RowCount = 1;window = (Main)this.Owner;_of_Equipment ar = new Guide_of_Equipment();= new Node(ar);

{Rez = window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root);lal = Rez.Get_J.Out();[0, 0].Value = lal[0];[1, 0].Value = lal[1];[2, 0].Value = lal[2];[3, 0].Value = lal[3];

}(NullReferenceException)

{.Show("Такое наименование оборудования не найдено!", "Ошибка!");

}(FormatException)

{.Show("Цена должна представлять из себя число!", "Ошибка!");

}

}void button2_Click(object sender, EventArgs e)

{();

}void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}void label1_Click(object sender, EventArgs e)

{

}

}

}


Приложение З

(обязательное)


Текст класса Information.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1

{partial class Information : Form

{Information()

{();

}void button1_Click(object sender, EventArgs e)

{();

}void richTextBox1_TextChanged(object sender, EventArgs e)

{

}

}

}


Приложение И

(обязательное)


Текст класса Insert.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1

{partial class Insert : Form

{

public Insert()

{();

}

private void button1_Click(object sender, EventArgs e)

{

{window = (Main)this.Owner;(window.Tree_Obj.search(textBox1.Text, window.Tree_Obj.Root) != null)

{ MessageBox.Show("Такое наименование оборудования уже существует!"); return; }

Guide_of_Equipment j = new Guide_of_Equipment(textBox1.Text, Convert.ToDateTime(textBox2.Text), Convert.ToInt32(textBox3.Text), (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), textBox4.Text));.Obj_mas.Add(j);Adding_Uzel = new Node(j);.Tree_Obj.Adding(Adding_Uzel);();

}(Exception f) { MessageBox.Show("Тип, что вы ввели не соответствует требуемому типу, пожалуйста повторите.\n" + f.Message + "Ошибка!"); }

}void button2_Click(object sender, EventArgs e)

{();

}void groupBox1_Enter(object sender, EventArgs e)

{.Enabled = true;

}

}

}

Приложение К

(обязательное)


Текст класса Main.csSystem;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;System.Collections;System.IO;WindowsFormsApplication1

{partial class Main : Form

{Tree Tree_Obj = new Tree();List<Guide_of_Equipment> Obj_mas = new List<Guide_of_Equipment>();Main()

{();.AllowUserToAddRows = false;

}void поискToolStripMenuItem_Click(object sender, EventArgs e)

{window = new Find();.Owner = this;.Nodes.Clear();.ShowDialog();();

}void визуализацияБинарногоДереваToolStripMenuItem_Click(object sender, EventArgs e)

{.Nodes.Clear();.Visible = true;.Nodes.Add(Tree_Obj.Root.Get_J.equipment);(Tree_Obj.Root.Left != null)

{uz = new TreeNode(Tree_Obj.Root.Left.Get_J.equipment.ToString());.Nodes[0].Nodes.Add(uz);(Tree_Obj.Root.Left, uz);

}(Tree_Obj.Root.Right != null)

{uz = new TreeNode(Tree_Obj.Root.Right.Get_J.equipment.ToString());.Nodes[0].Nodes.Add(uz);(Tree_Obj.Root.Right, uz);

}.ExpandAll();

}void BuildTreeView(Node uzel, TreeNode Parent)

{(uzel.Left != null)

{currentNode = new TreeNode(uzel.Left.Get_J.equipment.ToString());.Nodes.Add(currentNode);(uzel.Left, currentNode);

}(uzel.Right != null)

{currentNode = new TreeNode(uzel.Right.Get_J.equipment.ToString());.Nodes.Add(currentNode);(uzel.Right, currentNode);

}

}void открытьToolStripMenuItem_Click(object sender, EventArgs e)

{(openFileDialog1.ShowDialog() == DialogResult.OK)

{

{[] Lines = File.ReadAllLines(openFileDialog1.FileName, Encoding.Default);i = 0;f = true;(string Line in Lines)

{

{[] vrem = Line.Split(';');year = DateTime.Parse(vrem[0]);_mas.Add(new Guide_of_Equipment(vrem[3], year, Convert.ToInt32(vrem[2]), (Guide_of_Equipment.name_equipment)Enum.Parse(typeof(Guide_of_Equipment.name_equipment), vrem[1])));_Obj.Adding(new Node(Obj_mas[i]));++;

}(Exception ex) { f = false; }

}(!f) MessageBox.Show("Некоторые данные являются некоректными, поэтому они не будут включены в общий поток данн.", "Ошибка!");

if (Lines.Length == 0) throw new Exception();(Obj_mas.Count != 0) MessageBox.Show("Файл считан успешно");

сохранитьToolStripMenuItem.Enabled = true;

вставкаToolStripMenuItem.Enabled = true;

удалениеToolStripMenuItem.Enabled = true;

заменаToolStripMenuItem.Enabled = true;

поискToolStripMenuItem.Enabled = true;

визуализацияБинарногоДереваToolStripMenuItem.Enabled = true;

перегрузкаБинарныхОператоровToolStripMenuItem.Enabled = true;

перегрузкаИнкрементаStripMenuItem.Enabled = true;

перегрузкаОператоровОтношенияToolStripMenuItem.Enabled = true;();

}(Exception) { MessageBox.Show("Файл содержит некоректную информацию либо не содержит информацию вообще!","Ошибка!"); }

}

}void vivod()

{.Visible = true;.RowCount = Obj_mas.Count;(int i = 0; i < Obj_mas.Count; i++)

{

//dataGridView1.Rows.Add();lal = Obj_mas[i].Out();[0, i].Value = lal[3];[1, i].Value = lal[1];[2, i].Value = lal[2];[3, i].Value = lal[0];

}

}void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{(saveFileDialog1.ShowDialog() == DialogResult.OK)

{sr = new StreamWriter(saveFileDialog1.FileName);(int i = 0; i < dataGridView1.RowCount; i++)

{.WriteLine(dataGridView1[0, i].Value + " ; " + dataGridView1[1, i].Value + " ; " + dataGridView1[2, i].Value + " ; " + dataGridView1[3, i].Value + " . ");

}.Close();

}

}void вставкаToolStripMenuItem_Click(object sender, EventArgs e)

{lal = new Insert();.Owner = this;.Nodes.Clear();.ShowDialog();();

}void удалениеToolStripMenuItem_Click(object sender, EventArgs e)

{window = new Delete();.Owner = this;.Nodes.Clear();.ShowDialog();();

}void заменаToolStripMenuItem_Click(object sender, EventArgs e)

{window = new Change();.Owner = this;.Nodes.Clear();.ShowDialog();();

}void обАвтореToolStripMenuItem_Click(object sender, EventArgs e)

{A = new About();.ShowDialog();

}void информацияОПроектеToolStripMenuItem_Click(object sender, EventArgs e)

{I = new Information();.ShowDialog();

}void выходToolStripMenuItem_Click(object sender, EventArgs e)

{.Exit();

}void перегрузкаБинарныхОператоровToolStripMenuItem_Click(object sender, EventArgs e)

{o = new Overload();.label1.Text = "Введите наименования первого оборудования";.label1.Show();.textBox1.Show();

o.label2.Text = "Введите наименования второго оборудования";

o.label2.Show();.textBox2.Show();.button1.Show();.ShowDialog(this);

}void перегрузкаОператоровОтношенияToolStripMenuItem_Click(object sender, EventArgs e)

{o = new Overload();.label1.Text = "Введите наименования первого оборудования";.label1.Show();.textBox1.Show();

o.label2.Text = "Введите наименования второго оборудования";

o.label2.Show();.textBox2.Show();.button3.Show();.ShowDialog(this);

}void перегрузкаИнкрементаToolStripMenuItem_Click(object sender, EventArgs e)

{o = new Overload();.label1.Text = "Введите наименование оборудования:";.label1.Show();.textBox1.Show();.button2.Show();.ShowDialog(this);

}

}

}

Приложение Л

(обязательное)


Текст класса Overload.cs

using System;System.Collections.Generic;System.ComponentModel;System.Data;System.Drawing;System.Linq;System.Text;System.Windows.Forms;WindowsFormsApplication1

{partial class Overload : Form

{Overload()

{();

}void button1_Click(object sender, EventArgs e)

{find1, find2;

{= textBox1.Text; find2 = textBox2.Text;m1 = (Main)this.Owner;j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);j2 = m1.Tree_Obj.search(find2, m1.Tree_Obj.Root);.Show((j1.Get_J + j2.Get_J).ToString());

Close();

}{ MessageBox.Show("Таких наименований оборудования нет.", "Ошибка"); }

}void button4_Click(object sender, EventArgs e)

{();

}void button3_Click(object sender, EventArgs e)

{find1, find2, b;

{= textBox1.Text; find2 = textBox2.Text;m1 = (Main)this.Owner;j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);j2 = m1.Tree_Obj.search(find2, m1.Tree_Obj.Root);(j1.Get_J > j2.Get_J) b = ">";b = "<";.Show(j1.Get_J.equipment + " " + b + " " + j2.Get_J.equipment);

Close();

}{ MessageBox.Show("Таких наименований оборудования нет.", "Ошибка"); }

}void button2_Click(object sender, EventArgs e)

{find1;

{= textBox1.Text;m1 = (Main)this.Owner;j1 = m1.Tree_Obj.search(find1, m1.Tree_Obj.Root);_of_Equipment a = new Guide_of_Equipment(j1.Get_J.Country, j1.Get_J.year, j1.Get_J.cost, j1.Get_J.country);.Show(a++.cost.ToString());

Close();

}{ MessageBox.Show("Такого наименования оборудования нет."); }

}

}

}


Приложение М


Текст исходного файла для тестирования:

.02.2010;Россия;1000;Д-12

.02.2009;Бельгия;1500;У-11

.02.2011;Голландия;1000;ДВ-1

.03.2010;Украина;2000;Л-4

.04.2011;Беларусь;1500;ИЛ-2

.02.2010;Россия;1000;Е-12

.02.2009;Бельгия;1500;У-12

.02.2011;Голландия;1000;ДК-1

.03.2010;Украина;2000;ЛВ-4

.04.2011;Беларусь;1500;Л-2

.10.2010;Россия;1000;ЗЩ-12

.11.2009;Бельгия;1500;ВА-11

.12.2011;Голландия;1000;ВО-1

.09.2010;Украина;2000;ЛФ-4

.08.2011;Беларусь;1500;ЗД-2

.07.2010;Россия;1000;ЕЛ-12

.06.2009;Бельгия;1500;УП-12

.02.2011;Голландия;1000;ЖК-1

.08.2010;Украина;2000;МВ-4

.04.2011;Беларусь;1500;ДЛ-23

.11.2010;Россия;1000;ХБ-1

.11.2009;Бельгия;1500;ВТ-21

.12.2011;Голландия;1000;АО-12

.09.2010;Украина;2000;ЛП-44

.08.2011;Беларусь;1500;УД-23

.07.2010;Россия;1000;ПЛ-02

.06.2009;Бельгия;1500;УЛ-920

.05.2011;Беларусь;1500;ИК-2

.03.2010;Россия;1000;К-12

.03.2009;Бельгия;1500;С-12

.03.2011;Голландия;1000;СК-1

.04.2010;Украина;2000;ПВ-4

.05.2011;Беларусь;1500;ЕЛ-2

.11.2010;Россия;1000;ИЩ-12

.12.2009;Бельгия;1500;ФА-11

.11.2011;Голландия;1000;РО-1

.10.2010;Украина;2000;ЦФ-4

.09.2011;Беларусь;1500;ГД-2

.08.2010;Россия;1000;СЛ-12

.07.2009;Бельгия;1500;ОП-12

.03.2011;Голландия;1000;ОК-1

.09.2010;Украина;2000;ПВ-5

.05.2011;Беларусь;1500;НЛ-3

.12.2010;Россия;1000;ХА-65

.12.2009;Бельгия;1500;ЦТ-51

.11.2011;Голландия;1000;ПО-22

.10.2010;Украина;2000;ЛО-54

.09.2011;Беларусь;1500;ИД-73

08.08.2010;Россия;1000;ЛВ-52

.08.2009;Бельгия;1500;ЩЛ-02


Министерство Образования Республики Беларусь УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ П. О. СУХОГО Факультет авт

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ