Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

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

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Учет основного оборудования на предприятии

Тип Реферат
Предмет Информатика и программирование
Просмотров
572
Размер файла
1 б
Поделиться

Ознакомительный фрагмент работы:

Учет основного оборудования на предприятии

Министерство образования и науки Российской Федерации

Государственное образовательное учреждение высшего профессионального образования

Камская инженерно-экономическая академия

Кафедра А и ИТ

Курсовая работа

по дисциплине «Базы данных»

на тему: «Учет основного оборудования на предприятии»

Выполнил: ст. гр. 1509

Сагындыков Л.Т.

Проверил доцент:

Бахвалова В.С.

Проверил ассистент:

Нуриева Н.П

Набережные челны 2010


Содержание

Введение

Глава 1. Задание

Глава 2. Системный анализ предметной области

Глава 3. Проектирование базы данных

3.1 Проектирование базы данных декомпозиционным методом

3.2 Проектирование базы данных с использованием ER- метода

3.3 Проверка отношений на завершающей фазе проектирования

3.4 Модель базы данных

Глава 4. Выбор субд

Глава 5. Разработка приложения

5.1 Общая схема приложения

5.2 Запросы и макросы, использованные в приложении

5.3 Описание приложения

5.3.1 Функциональные возможности приложения

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

Заключение

Список использованной литературы

Приложение


ВВЕДЕНИЕ

Современный мир информационных технологий трудно представить себе без использования баз данных (БД). Практически все системы в той или иной степени связаны с функциями долговременного хранения и обработки информации. Фактически информация становится фактором, определяющим эффективность любой сферы деятельности. Увеличились информационные потоки и повысились требования к скорости обработки данных. В результате большинство операций не может быть выполнено вручную, они требуют применения наиболее перспективных компьютерных технологий. Любые административные решения требуют четкой и точной оценки ситуации и возможных перспектив ее изменения.

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


ГЛАВА 1. ЗАДАНИЕ

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

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

Отчет по работе должен содержать:

1. Системный анализ предметной области;

2. Последовательность проектирования БД двумя методами (декомпозиционным и ER-методом);

3. Обоснование выбора СУБД;

4. Разработанное приложение для работы с БД, а также общую блок-схему и блок-схему алгоритмов;

5. Инструкцию пользователя для разработанного приложения.


ГЛАВА 2. СИСТЕМНЫЙ АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

Данная БД разработана для учета имеющегося основного оборудования на одном предприятии. При разработке необходимо учесть следующие требования:

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

2. Обрабатывающие оборудования, которые имеют схожие технические характеристики необходимо объединить в кластеры.

3. Каждому обрабатывающему оборудованию необходимо привязать набор инструментов и приспособлений

4. Необходимо иметь возможность получения отчета по всем имеющимся оборудованиям.

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

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

Таким образом, в БД необходимо хранить:

Данные об обрабатывающем оборудовании:

1. Код оборудования (КодОбр)– каждому обрабатывающему оборудованию присваивается уникальный код

2. Марка (МаркаОбр) – определяет технические характеристики обрабатывающего оборудования

3. Габаритные размеры (ГабарОбр) – общий для оборудования одной марки.

4. Наибольшая длина обрабатываемых деталей (ДлДетОбр) - параметр общий для оборудования одной марки. Величина указывается в мм.

5. Наибольший диаметр обрабатываемых деталей (ДиамДетОбр) –параметр общий для оборудования одной марки. Если деталь типа призма, то вместо диаметра указывается наибольший из ширины и высоты. Величина указывается в мм.

6. Пределы частот вращений главного шпинделя (ЧастотОбр) – общий параметр для оборудования одной марки. Величина указывается в мин-1

7. Мощность привода главного движения (МощОбр) – общий параметр для оборудования одной марки. Величина указывается кВт.

8. Стоимость (СтоимОбр) – определяет стоимость приобретения оборудования. Величина указывается в тыс. руб.

9. Дата изготовления (ДатаОбр)- определяет год выпуска обрабатывающего оборудования

Данные об транспортном оборудовании:

1. Код оборудования (КодТр)– каждому транспортному оборудованию присваивается уникальный код

2. Марка (МаркаТр) – определяет технические характеристики транспортного оборудования

3. Скорость перемещения (СкорТр) – общий параметр для одной марки. Величина указывается в м/мин.

4. Габаритные размеры (ГабарТр) – общий параметр для одной марки.

5. Грузоподъемность (ГрузТр)–общий параметр для оборудования одной марки. Величина указывается в кг.

6. Масса транспортного оборудования (МассаТр) – общий параметр для оборудования одной марки. Величина указывается в т.

7. Стоимость (СтоимТр) – определяет стоимость приобретения транспортного оборудования. Величина указывается в тыс. руб.

Данные об инструменте/приспособлении:

1. Код инструмента/приспособления (КодИП) – уникальный номер инструмента/приспособления на предприятии

2. Марка инструмента/приспособления (МаркИП) - определяет технические характеристики инструмента/приспособления

3. Назаначение инструмента/приспособления (НазнИП) – определяет техническое назначение инструмента/приспособления: резец проходной, резец копировальный и т.д.

4. «Инструмент» (ИнсПрисп) – параметр для разделения инструментов и приспособлений, хранимое значение логическое.

Данные об автоматической транспортно накопительно-складской системе (далее просто АТНСС):

1. Код АТНСС (КодАТНСС) – уникальный код автоматической транспотрно-накопительно-складской системы.

2. Пропускная способность (ПропАТНСС)–число перевозимых ед.изделия в час

3. Площадь охватываемая данной АТНСС (ПлощАТНСС) – указывается в м2

Данные о гибком автоматизированном участке (далее просто ГАУ):

1. Код ГАУ (КодГАУ) – каждому ГАУ присваивается уникальный код.

2. Назначение ГАУ (НазнГАУ) – разные участки могут изготавливать одни и те же детали.

3. Площадь, занимаемая ГАУ (ПлощГАУ) – указывается в м2

Данные о гибкой производственной системе (далее просто ГПС):

1. Код ГПС (КодГПС) – каждому ГПС присваивается уникальный код.

2. Назначение ГПС (НазнГПС) –техническая информация о выполняемой работе на ГПС.

3. Наименовние цеха (НаимЦех) – несколько ГПС могут быть привязанык одному цеху.

Данные о кластерах (объединение транспортного оборудования по определенным характеристикам в некотором диапазоне):

1. Код кластера (КодКласт)- уникальный код кластера

2. Частота вращения главного шпинделя (ЧастКласт) - устанавливается для каждого кластера

3. Длина обрабатываемых деталей (ДлинКласт)- устанавливается для каждого кластера

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

5. Процент отклонения (ОтклКласт) – определяет диапазон отклонения параметров в пределах одного кластера

Количественные характеристики

При построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответсвенно. В базе данных будет хранится информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000.

ГЛАВА 3. ПРОЕКТИРОВАНИЕ БАЗЫ ДАННЫХ

3.1 Проектирование базы данных декомпозиционным методом

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

Атрибуты, хранимые в БД:

Код транспортного оборудования (КодТр),

код инструмента/приспособления (КодИП),

код обрабатывающего оборудования (КодОбр),

марка обрабатывающего оборудования (МаркаОбр),

габаритные размеры обрабатывающего оборудования (ГабарОбр),

наибольшая длина обрабатываемых деталей на обрабатывающем оборудовании (ДлДетОбр),

наибольший диаметр обрабатываемых деталей на обрабатывающем оборудовании (ДиамДетОбр),

пределы частот вращений главного шпинделя на обрабатывающем оборудовании (ЧастотОбр),

мощность привода главного движения обрабатывающего оборудования (МощОбр),

стоимость обрабатывающего оборудования (СтоимОбр),

дата изготовления обрабатывающего оборудования (ДатаОбр),

марка транспортного оборудования (МаркаТр),

скорость перемещения транспортного оборудования (СкорТр),

габаритные размеры транспортного оборудования (ГабарТр),

грузоподъемность транспортного оборудования (ГрузТр),

масса транспортного оборудования (МассаТр),

стоимость транспортного оборудования (СтоимТр),

марка инструмента/приспособления (МаркИП),

назначение инструмента/приспособления (НазнИП),

инструмент или приспосбление (ИнсПрисп),

код ГАУ (КодГАУ), назначение ГАУ (НазнГАУ),

площадь, занимаемая ГАУ (ПлощГАУ),

код АТНСС (КодТНС),

пропускная способность АТНСС (ПропТНС),

площадь охватываемая данной АТНСС (ПлощТНС),

код ГПС (КодГПС),

назначение ГПС (НазнГПС),

наименовние цеха (НаимЦех),

код кластера (КодКласт),

частота вращения главного шпинделя в кластере (ЧастКласт),

длина обрабатываемых деталей в кластере (ДлинКласт),

диаметр обрабатываемых деталей в кластере (ДиамКласт),

процент отклонения в кластере (ОтклКласт)

КодТрКодИПКодОбрМаркаОбрГабарОбрДлДетОбрДиамДетОбр

Частот

Обр

Мощ

Обр

Стоим

Обр

11116К202505х11902000400160010120
12116К202505х11902000400160010120
23116К202505х11902000400160010120
2421А645780х2000280080075022150
3521А645780х2000280080075022150
4621А645780х2000280080075022150
573ИРТ1802751х21701652004000251200
583ИРТ1802751х21701652004000251200
6942Н1501240х810650501800480
61052М552445х10005505020004110
ДатаОбр

Марка

Тр

СкорТрГабарТрГрузТрМассаТрСтоимТрМаркИПНазнИП

Инс

Присп

Код

ГАУ

11.05.1991С4057902234х1074500250080020872-20резец копир.да1
11.05.1991С4057902234х10745002500800UNC315-1патроннет1
11.05.19910М9913801900х99025080035035-В92-82резец проход.да1
13.08.19930М9913801900х99025080035035-558-77резец для канавокда2
13.08.1993С42341002530х107450030001000UNC400-2патроннет2
13.08.1993С4057902234х1074500250070020872-20резец копир.да2
11.05.19980М9913801900х990250800300UNC315-2патроннет1
11.05.19980М9913801900х99025080030035-558-77резец для канавокда1
07.01.1988С4057902234х10745002500580UNC250-3патроннет3
20.11.1984С4057902234х10745002500580UNC250-2патроннет3
НазнГАУ

Площ

ГАУ

Код

ТНС

Проп

ТНС

Площ

ТНС

Код

ГПС

Назн

ГПС

Наим

Цех

Код

Класт

Обточка

дет. Колесо

8017001501«Колесо»Дизельный1

Обточка

дет. Колесо

8017001501«Колесо»Дизельный1

Обточка

дет. Колесо

80210003001«Колесо»Дизельный1
Обточка дет. втулку60210003002«Втулка»Дизельный2
Обточка дет. втулку60210003002«Втулка»Дизельный2
Обточка дет. втулку60210003002«Втулка»Дизельный2

Обточка

дет. Колесо

8038002001«Колесо»Дизельный3

Обточка

дет. Колесо

8038002001«Колесо»Дизельный3
Сверление отверстий4038002002«Втулка»Дизельный4

Сверление

отверстий

4038002002«Втулка»Дизельный4
ЧастКластДлинКластДиамКластОтклКласт
1600200040017
1600200040017
1600200040017
750280080017
750280080017
750280080017
400020016517
400020016517
18006505017
18006505017

Проанализируем ФЗ данного отношения:

1. Код обрабатывающего оборудования – уникален и однозначно определяет марку оборудования, стоимость оборудования, дата изготовления оборудования. В тоже время каждое обрабатывающее оборудования однозначно привязано к одному кластеру и одному ГАУ.

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

Таким образом, имеем:

КодОбр ® МаркаОбр;

КодОбр ® СтоимОбр;

КодОбр ® ДатаОбр;

КодОбр ® КодКласт;

КодОбр ® КодГАУ;

МаркаОбр ® ГабарОбр;

МаркаОбр ® ДлДетОбр;

МаркаОбр ® ДиамДетОбр;

МаркаОбр ® ЧастотОбр;

МаркаОбр ® МощОбр;

2. Если известен код транспортного оборудования, то по нему можно определить марку транспортного оборудования, стоимость транспортного оборудования. В тоже время каждое транспортное оборудование привязано к одному АТНСС.

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

Таким образом, имеем:

КодТр ® МаркаТр;

КодТр ® СтоимТр;

КодТр ® КодТНС;

МаркаТр ® СкорТр;

МаркаТр ® ГабарТр;

МаркаТр ® ГрузТр;

МаркаТр ® МассаТр;

3. Код инструмента/приспособления однозначно определяет марку инструмента/приспособления, назначение инструмента/приспособления и определяет инструмент это или приспособление. В тоже время код интрумента/приспособления однозначно определяет оборудование, к которому привязано.

Таким образом, имеем:

КодИП ® МаркИП;

КодИП ® НазнИП;

КодИП ® ИнсПрисп;

КодИП ® КодОбр;

4. Код АТНСС однозначно определяет пропускную способность и площадь, охватываемая данной АТНСС.

Таким образом, имеем:

КодТНС ® ПропТНС;

КодТНС ® ПлощТНС;

5. Код ГАУ однозначно определяет назначение и площадь, занимаемую ГАУ. В тоже время код ГАУ совместно с кодом АТНСС однозначно привязано к одному ГПС. Таким образом, несколько ГАУ и АТНСС могут быть привязано к одному ГПС.

Таким образом, имеем:

КодГАУ ® НазнГАУ;

КодГАУ ® ПлощГАУ;

КодГАУ, КодТНС ® КодГПС;

6. Код ГПС однозначно определяет назначение ГПС и наименование цеха к которому оно привязано.

Таким образом, имеем:

КодГПС ® НазнГПС;

КодГПС ® НаимЦех;

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

Таким образом, имеем:

КодКласт ® ЧастКласт;

КодКласт ® ДлинКласт;

КодКласт ® ДиамКласт;

КодКласт ® ОтклКласт;

С учётом вышесказанного диаграмма ФЗ имеет вид (см. рис.).

R

В данной курсовой работе нет избыточных ФЗ, следовательно, универсальное отношение имеет минимальное покрытие.

Определяем возможные ключи и детерминанты отношения R

Возможный ключ

< КодИП, КодТр >

Детерминант

КодКласт

КодОбр

КодИП

КодТр

МаркаОбр

МаркаТр

КодГАУ

КодТНС

КодГАУ,КодТНС

КодГПС

Учитывая, что не каждый первичный ключ является детерминантом, рассматриваемое универсальное отношение не находится в нормальной форме Бойса – Кодда (НФБК) и требуется декомпозиция универсального отношения.

Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС ® НазнГПС, НаимЦех. В результате получим два отношения R1 и R2.

R1ГПС (КодГПС, НазнГПС, НаимЦех)

Возможный ключДетерминант
<КодГПС><КодГПС>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают):

R2 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)


Возможный ключ

< КодИП, КодТр >

Детерминант

МаркаОбр

КодОбр

КодИП

КодТр

МаркаТр

КодГАУ

КодТНС

КодГАУ,КодТНС

КодКласт

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодКласт® ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт. В результате получим два отношения R3 и R4:

R3Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

Возможный ключДетерминант
<КодКласт><КодКласт>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R4 (КодТр, КодИП, КодОбр, МаркаОбр, ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)


Возможный ключ

< КодИП, КодТр >

Детерминант

МаркаОбр

КодОбр

КодИП

КодТр

МаркаТр

КодГАУ

КодТНС

КодГАУ,КодТНС

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр ® ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр. В результате получим два отношения R5 и R6:

R5МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

Возможный ключДетерминант
<МаркаОбр><МаркаОбр>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R6 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, НазнГАУ, ПлощГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)

Возможный ключ

< КодИП, КодТр >

Детерминант

МаркаТр

КодОбр

КодИП

КодТр

КодГАУ

КодТНС

КодГАУ,КодТНС

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ ® НазнГАУ, ПлощГАУ. В результате получим два отношения R7 и R8:

R7ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

Возможный ключДетерминант
<КодГАУ><КодГАУ>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R8 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, ПропТНС, ПлощТНС, КодГПС, КодКласт)

Возможный ключ

< КодИП, КодТр >

Детерминант

МаркаТр

КодОбр

КодИП

КодТр

КодТНС

КодГАУ,КодТНС

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодТНС ® ПропТНС, ПлощТНС. В результате получим два отношения R9 и R10:

R9ТНС (КодТНС, ПропТНС, ПлощТНС)


Возможный ключДетерминант
<КодТНС><КодТНС>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R10 (КодТр, КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодТНС, КодГПС, КодКласт)

Возможный ключ

< КодИП, КодТр >

Детерминант

МаркаТр

КодОбр

КодИП

КодТр

КодГАУ,КодТНС

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГАУ, КодТНС ® КодГПС. В результате получим три отношения R11,R12 и R13:

R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)


Возможный ключ

< КодГАУ, КодТНС >

Детерминант

<КодГАУ,КодТНС>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R12 (КодТр, МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр, СтоимТр, КодТНС)

Возможный ключ

< КодТр >

Детерминант

МаркаТр

КодТр

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр ® СкроТр, ГабарТр, ГрузТр, МассаТр. В результате получим три отношения R14 и R15:

R14МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)


Возможный ключДетерминант
<МаркаТр><МаркаТр>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R15Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

Возможный ключДетерминант
<КодТр><КодТр>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R13 (КодИП, КодОбр, МаркаОбр, СтоимОбр, ДатаОбр, МаркИП, НазнИП, ИнсПрисп, КодГАУ, КодКласт)


Возможный ключ

< КодИП>

Детерминант

КодОбр

КодИП

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Для проведения декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодОбр ® КодКласт, МаркаОбр, КодГАУ, ДатаОбр, СтоимОбр. В результате получим три отношения R16 иR17:

R16Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

Возможный ключДетерминант
<КодОбр><КодОбр>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

R17Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

Возможный ключДетерминант
<КодИП><КодИП>

Т.е. отношение находится в НФБК и дальнейшая его декомпозиция не требуется (возможный ключ и детерминант совпадают).

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

R1ГПС (КодГПС, НазнГПС, НаимЦех)

R3Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

R5МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

R7ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

R9ТНС (КодТНС, ПропТНС, ПлощТНС)

R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

R14МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

R15Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

R16Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

R17Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

Заполним данными эти отношения:

R1ГПС (КодГПС, НазнГПС, НаимЦех)

КодГПСНазнГПСНаимЦех
1«Колесо»Дизельный
2«Втулка»Дизельный

R3Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт)

КодКластЧастКластДлинКластДиамКластОтклКласт
11600200040017
2750280080017
3400020016517
418006505017

R5МаркаОбраб (МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

МаркаОбрГабарОбрДлДетОбрДиамДетОбрЧастотОбрМощОбр
16К202505х11902000400160010
1А645780х2000280080075022
ИРТ1802751х2170165200400025
2Н1501240х8106505018004
2М552445х10005505020004

R7ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

КодГАУНазнГАУПлощГАУ
1Обточка дет. Колесо80
2Обточка дет. втулку60
3Сверление отверстий40

R9ТНС (КодТНС, ПропТНС, ПлощТНС)

КодТНСПропТНСПлощТНС
1700150
21000300
3800200

R11 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

КодГАУКодТНСКодГПС
111
222
121
131
332

R14МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

МаркаТрСкорТрГабарТрГрузТрМассаТр
С4057902234х10745002500
0М9913801900х990250800
С42341002530х10745003000

R15Транспортное оборудование (КодТр, МаркаТр, СтоимТр, КодТНС)

КодТрМаркаТрСтоимТрКодТНС
1С40578001
20М99133502
3С423410002
4С40577002
50М99133003
6С40575803

R16Обрабатывающее оборудование (КодОбр, МаркаОбр, ДатаОбр, СтоимОбр, КодКласт, КодГАУ)

КодОбрМаркаОбрСтоимОбрДатаОбрКодКластКодГАУ
116К2012011.05.199111
21А6415013.08.199322
3ИРТ180120011.05.199831
42Н1508007.01.198843
52М5511020.11.198443

R17Инструмент/приспособление (КодИП, КодОбр, МаркИП, НазнИП, ИнсПрисп)

КодИПКодОбрМаркИПНазнИПИнсПрисп
1120872-20резец копир.да
21UNC315-1патроннет
3135-В92-82резец проход.да
4235-558-77резец для канавокда
52UNC400-2патроннет
6220872-20резец копир.да
73UNC315-2патроннет
8335-558-77резец для канавокда
94UNC250-3патроннет
105UNC250-2патроннет

3.2 Проектирование базы данных с использованием ER- метода

На первом этапе проектирования определяются сущности и связи между ними. Представляющими интерес сущностями в рассматриваемом случае являются ГАУ, АТНСС, Кластер, Обрабатывающее оборудование, Транспортное оборудование.

Сущности ГАУ (Г) и АТНСС(А) объединены связью «Соединяется». Сущности «Обрабатывающее оборудование»(О) и ГАУ(Г) объединены связью «Входит». Сущности «Транспортное оборудование»(Т) и АТНСС(А) объединены связью «Входит». Сущности «Инструменты, приспособления» (И) и «Обрабатывающее оборудование»(О) объединены связью «Привязаны». Сущности «Обрабатывающее оборудование»(О) и Кластеры(К) объединены связью «Входит». Ролевых сущностей здесь нет.

Составим диаграммы ER– экземпляров:


Каждое ГАУ может связываться с несколькими АТНСС, каждая АТНСС может соединяться с несколькими ГАУ, поэтому степень связи N:М. Класс принадлежности обеих сущностей – обязательный.

Каждое обрабатывающее оборудование может входить только в одно ГАУ, в каждое ГАУ может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

Каждое транспортное оборудование может входить только в одну АТНСС, в каждую АТНСС может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.


Каждый инструмент(приспособление) может привязывается только к одному обрабатывающему оборудованию, каждому оборудованию может быть привязано несколько инструментов(приспособлений), поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

Каждое обрабатывающее оборудование может входить только в один кластер ГАУ, в каждый кластер может входить несколько оборудований, поэтому степень связи N:1. Класс принадлежности обеих сущностей – обязательный.

Составим диаграмму ER– типа:

Ключи сущностей: КодКласт, КодИП, КодОбр, КодГАУ, КодТНС, КодТр.

Переходим к генерации предварительных отношений

Рассмотрим отношения ГАУ – АТНСС. Т.к. степень связи N:М, то требуется три отношения, два из которых для сущностей, в которых первичными ключами являются ключи соответствующих сущностей и одно отношение для связи, где в качестве атрибутов используются ключи обоих сущностей.

R1 ГАУ (КодГАУ, …)

R2 АТНСС (КодТНС, …)

R3 Соединение (КодГАУ, КодТНС, …)

Рассмотрим отношения «Транспортное оборудование»- АТНСС, «Обрабатывающее оборудование» - ГАУ, «Обрабатывающее оборудование» - Кластер, «Инструменты, приспособления» - «Обрабатывающее оборудование». Для каждого отношения справедливо правило генерации отношений №4. Т.к. степень связи N:1 и класс принадлежности N-связной сущности является обязательным, то достаточным является использование двух отношений, по одному - на каждую сущность, в которых первичными ключами являются ключи соответствующих сущностей. Дополнительно ключ 1-связной сущности должен быть добавлен как атрибут в отношение, отводимое N-связной сущности.

R4 Транспортное оборудование (КодТр, КодТНС …)

R5 АТНСС2 (КодТНС, …)

R6 Обрабатывающее оборудование1 (КодОбр, КодГАУ …)

R7 ГАУ2 (КодГау, …)

R8 Обрабатывающее оборудование2 (КодОбр, КодКласт …)

R9 Кластер (КодКласт, …)

R10 Инструменты,приспособления (КодИП, КодОбр …)

R11 Обрабатывающее оборудование3 (КодОбр, …)

Видно, что отношения R5 и R2 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R2.

Видно, что отношения R7 и R1 дублируют друг друга, следовательно одно отношение необходимо исключить из проектного набора. Пусть им будет R1.

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

Видно, что все атрибуты отношения R8, кроме КодКласт, могут быть найдены в отношении R6, следовательно их обоих необходимо заменить отношением, полученным операцией СОЕДИНЕНИЕ над ними:

R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт …)

Распределим оставшиеся атрибуты по отношениям:

R1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

R2 АТНСС (КодТНС, ПропТНС, ПлощТНС)

R3 Содинение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех)

R4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

R9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

R10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

Для проверки нахождения полученных отношений в НФБК построим для каждого отношения диаграммы ФЗ и определим возможные ключи и детерминанты.

R1 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

Возможный ключДетерминант
<КодГАУ><КодГАУ>

Отношение находится в НФБК, декомпозиция не требуется.

R2 АТНСС (КодТНС, ПропТНС, ПлощТНС)

Возможный ключДетерминант
<КодТНС><КодТНС>

Отношение находится в НФБК, декомпозиция не требуется.

R4 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр, СкорТр, ГабарТр, ГрузТр, МассаТр)


Возможный ключДетерминант
<КодТр><КодТр> <МаркаТр>

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R4 разделяем на R13 и R14. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаТр® СкорТр, ГабарТр, ГрузТр, МассаТр.

В результате получим два отношения:

R13 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

Возможный ключДетерминант
<КодТр><КодТр>

Отношение находится в НФБК, декомпозиция не требуется.

R14 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)


Возможный ключДетерминант
<МаркаТр><МаркаТр>

Отношение находится в НФБК, декомпозиция не требуется.

R9 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

Возможный ключДетерминант
<КодКласт><КодКласт>

Отношение находится в НФБК, декомпозиция не требуется.

R10 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

Возможный ключДетерминант
<КодИП><КодИП>

Отношение находится в НФБК, декомпозиция не требуется.

R12 Обрабатывающее оборудование (КодОбр, КодГАУ, КодКласт, МаркаОбр, ДатаОбр, СтоимОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

Возможный ключДетерминант
<КодОбр>

<КодОбр>

<МаркаОбр>

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R12 разделяем на R15 и R16. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: МаркаОбр® ГабарОбр, ДлДетОбр, ДиамДетОбр, ЧастотОбр, МощОбр.

В результате получим два отношения:

R15 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

Возможный ключДетерминант
<КодОбр><КодОбр>

Отношение находится в НФБК, декомпозиция не требуется.

R16 МаркаОбраб(МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

Возможный ключДетерминант
<МаркаОбр><МаркаОбр>

Отношение находится в НФБК, декомпозиция не требуется.

R3 Соединение (КодГАУ, КодТНС, КодГПС, НазнГПС, НаимЦех)

Возможный ключДетерминант
<КодГАУ, КодТНС>

<КодГАУ, КодТНС >

<КодГПС>

Т.к. возможный ключ не является детерминантом, необходима дальнейшая декомпозиция. Отношение R3 разделяем на R17 и R18. Для декомпозиции по правилу «цепочек» используем крайнюю правую ФЗ: КодГПС® НазнГПС, НаимЦех.

В результате получим два отношения:

R17 ГПС (КодГПС, НазнГПС, НаимЦех)

Возможный ключДетерминант
<КодГПС><КодГПС>

Отношение находится в НФБК, декомпозиция не требуется.

R18 Соединение (КодГАУ, КодТНС, КодГПС)

Возможный ключ

< КодГАУ, КодТНС >

Детерминант

<КодГАУ,КодТНС>

Отношение находится в НФБК, декомпозиция не требуется.

3.3 Проверка отношений на завершающей фазе проектирования

Результирующий набор отношений:

R1 Инструменты,приспособления (КодИП, КодОбр,МаркИП, НазнИП, ИнсПрисп)

R2 Обрабатывающее оборудование (КодОбр, МаркаОбр, КодКласт, КодГАУ, ДатаОбр, СтоимОбр)

R3 Транспортное оборудование (КодТр, КодТНС, МаркаТр, СтоимТр)

R4 МаркаОбраб(МаркаОбр, ГабарОбр, ДлДетОбр,ДиамДетОбр, ЧастотОбр, МощОбр)

R5 МаркаТрансп (МаркаТр, СкорТр, ГабарТр, ГрузТр, МассаТр)

R6 Кластер (КодКласт, ЧастКласт, ДлинКласт, ДиамКласт,ОтклКласт )

R7 ГАУ (КодГАУ, НазнГАУ, ПлощГАУ)

R8 АТНСС (КодТНС, ПропТНС, ПлощТНС)

R9 ГПС (КодГПС, НазнГПС, НаимЦех)

R10 ГАУ-ТНС (КодГАУ, КодТНС, КодГПС)

Проведем проверку:

1. Одна и та же ФЗ не содержится более чем в одном отношении.

2. Нет отношений, все атрибуты в которых могут быть найдены в другом отношении проектного набора, либо в отношении, полученном из других отношений проектного набора с помощью серии операций СОЕДИНЕНИЕ. Т.е. отсутствуют избыточные отношения.

3. Набор ФЗ, полученный в результате проектирования декомпозиционным методом совпадает с набором, присутствующим в минимальном покрытии, полученным перед началом декомпозиции.

3.4 Модель базы данных

При построении модели базы данных за основу выбран набор нормализованных отношений, полученный в результате проектирования ER-методом. Модель представлена на рисунке ниже. Предполагается, что количество обрабатывающего и транспортного оборудования на предприятии не более 1000 ед. и 500 ед. соответственно. В базе данных будет храниться информация о 5000 обрабатывающих и 2000 транспортных оборудованиях. Число ГАУ будет равно 200, ГПС - 30, а АТНСС – 70. Число используемых инструментов/приспособлений – 10000. Предполагается, что число кластеров будет не более 10000.


Инструменты, приспособленияКлючевое полеТип и длинаИмя поля
+Длинное целоеКодИП
Длинное целоеКодОбр
Строковый (20)МаркИП
Строковый (50)НазнИП
ЛогическийИнсПрисп
Обрабатывающее оборудованиеКлючевое полеТип и длинаИмя поля
+Длинное целоеКодОбр
Строковый (20)МаркаОбр
Длинное целоеКодКласт
ЦелоеКодГАУ
Дата/ВремяДатаОбр
Длинное целоеСтоимОбр
Транспортное оборудованиеКлючевое полеТип и длинаИмя поля
+Длинное целоеКодТр
Строковый (20)МаркаТр
ЦелоеКодТНС
Длинное целоеСтоимТр
МаркаОбрабКлючевое полеТип и длинаИмя поля
+Строковый (20)МаркаОбр
Строковый (20)ГабарОбр
Длинное целоеДлДетОбр
Длинное целоеДиамДетОбр
Длинное целоеЧастотОбр
Длинное целоеМощОбр
МаркаТранспКлючевое полеТип и длинаИмя поля
+Строковый (20)МаркаТр
Длинное целоеСкорТр
Строковый (20)ГабарТр
Длинное целоеГрузТр
Длинное целоеМассаТр
КластерКлючевое полеТип и длинаИмя поля
+Длинное целоеКодКласт
Длинное целоеЧастКласт
Длинное целоеДлинКласт
Длинное целоеДиамКласт
ЦелоеОтклКласт
ГАУКлючевое полеТип и длинаИмя поля
+ЦелоеКодГАУ
Строковый (50)НазнГАУ
Длинное целоеПлощГАУ
АТНССКлючевое полеТип и длинаИмя поля
+ЦелоеКодТНС
Длинное целоеПропТНС
Длинное целоеПлощТНС
ГПСКлючевое полеТип и длинаИмя поля
+ЦелоеКодГПС
Строковый (50)НазнГПС
Строковый (50)НаимЦех
ГАУ-ТНСКлючевое полеТип и длинаИмя поля
+ЦелоеКодГАУ
+ЦелоеКодТНС
ЦелоеКодГПС

Расчет необходимого дискового пространства для хранения БД:

Инструменты,приспособления:

2+2+20+50+2=76 байт

Х 10000=742,2 Кбайт

Обрабатывающее оборудование:

2+20+2+1+8+2=35 байт

Х1000 = 34,2 Кбайт


Транспортное оборудование:

2+20+1+2=15 байт

Х500 = 7,3 Кбайт

МаркаОбраб:

20+20+2+2+2+2 = 48 байт

Х5000 = 234,4 Кбайт

МаркаТрансп:

20+2+20+2+2 = 46 байт

Х2000 = 89,8 Кбайт

Кластер:

2+2+2+2+1= 9 байт

Х10000 = 87,8 Кбайт

ГАУ:

1+50+2= 53 байт

Х200 = 10,4 Кбайт

АТНСС:

1+2+2= 5 байт

Х70 = 0,3 байт


ГПС:

1+50+50 = 101 байт

Х30 = 2,9 байт

ГАУ-ТНС:

1+1+1 = 3 байт

Х70Х200 = 41,0 Кбайт

Всего:

742,2+34,2+7,3+ 234,4+89,8+87,8+10,4+0,3+2,9+41,0 = 1250 Кбайт


ГЛАВА 4. ВЫБОР СУБД

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

Т.к. разработчик данной БД одновременно является и заказчиком, то было принято решение использовать для реализации данного курсового проекта СУБД MSAccess2003. Хотя эта СУБД и не является самой мощной и функционально насыщенной (к примеру СУБД MSSQLSERVERпредоставляет мощные средства резервного копирования, репликации и восстановления), но тем не менее полностью удовлетворяет требованиям данного курсового проекта. Кроме того, можно использовать встроенные функции MSAccess2003 для создания форм и отчетов, не прибегая к использованию каких-либо языков программирования, что значительно сокращает время разработки интерфейса пользователя.

ГЛАВА 5. РАЗРАБОТКА ПРИЛОЖЕНИЯ

5.1 Общая схема приложения

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

По схеме видно, что приложение содержит 1 главную форму и 11 подчиненных, а также 2 отчета.

Т.к. пользователями БД являются в первую очередь инженера производственных участков, то внимание при разработке приложения было уделено таким функциям, как проверка повторяющихся табельных номеров, автоматическое создание кластеров, проверка наличия связей при удалении (например если к ГАУ привязано оборудование, то удаление ГАУ некорректно!). Кроме того, были разработаны отчеты по всему оборудованию на предприятии( обрабатывающему и транспортному с группировкой по марке оборудования и с указанием общей стоимости оборудования на предприятии. Также предусмотрена возможность получения списка оборудования, которое может заменить вышедшее из строя.

5.2 Запросы и макросы, использованные в приложении

Рассмотрим описание используемых макрогрупп в БД.

1. Макрогруппа Добавление

Содержит макросы «Ввод оборудования», «Ввод марки оборудования», «Ввод транспорта», « Ввод марки транспорта», «Ввод инструмента», «Ввод ГПС», «Ввод ГАУ», «Ввод ТНС», обеспечивающие ввод новой записи в соответсвющую таблицу. При этом в каждом макросе обеспечивается проверка ввода значения в каждое поле записи и проверка повторяющегося табельного номера новой записи.

В макросе «Ввод оборудования» предусмотрено автоматическое распознование кластера, к которому следует отнести новое оборудование.

Макрос «Ввод Кластера» предназначен для ввода новой записи в таблицу «Кластер», вызывается он из макроса «Ввод оборудования» в случае если новому оборудованию не соответствует ни один из кластеров.

2. Макрогруппа Удаление

Содержит в себе макросы « Удаление оборудования», « Удаление марки оборудования», «Удаление транспорта», « Удаление марки транспорта», «Удаление инструмента», «Удаление ГПС», «Удаление ГАУ», «Удаление ГПС», «Удаление ТНС», «Удаление Кластера» которые используются для удаления записи в соответствующей таблице по введенному табельному номеру. В каждом макросе обеспечивается проверка ввода пустого табельного номера.

3. Макрогруппа autoexec

Содержит в себе макрос для автоматического запуска главной формы при открытии БД.

4. Макрогруппа Главная

Содержит в себе макрос “Выход”, который выполняет действие - закрытие БД.

5. Макрогруппа Обновление – макрос «ГПС» обеспечивает обновление списка транспортного оборудования в форме «Содержимое ГПС», макрос «Замена» обеспечивает обновление списка заменяющего оборудования в форме «Замена оборудования».

6. Макрогруппа Открыть – выполняется из главной формы и содержит следующий макросы:

- Открыть Обр . Открытие формы «Обрабатывающее оборудование»

- Открыть Тр. Открытие формы «Транспортное оборудование»

- Открыть МаркаОбр. Открытие формы «Марка обрабатывающего оборудования»

- Открыть МаркаТр. Открытие формы «Марки транспортного оборудования»

- Открыть Кластер. Открытие формы «Кластер»

- Открыть ИП. Открытие формы «Инструменты, приспособления»

- Открыть ГПС. Открытие формы «ГПС»

- Открыть ГПСдоб. Открытие формы «ГПС-добавление»

- Открыть ГАУ. Открытие формы «ГАУ»

- Открыть ТНС. Открытие формы «АТНСС»

- Открыть замену. Открытие формы «Замена оборудования»

- Открыть отчет. Открытие отчета «Обрабатывающее оборудование»

- Открыть отчетТр. Открытие отчета «Транспортное оборудование»

Листинг программного кода макросов приведен в приложении.

Кроме макросов в приложении использованы 17 запросов, созданных при помощи встроенного конструктора запросов Access.

1. Запрос ДЛ,Диам,Част по Марке

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

2. Запрос №Кластера по Марке

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

3. Запрос №Кластеров Проверка

Определяет число записей в запросе Запрос №Кластера по Марке.

4. ЗАПРОС Обрабатывающее оборудование

Объединяет две таблицы: Обрабатывающее оборудование и Марка обрабатывающего оборудования.

5. ЗАПРОС Транспортного оборудование

Объединяет две таблицы: Транспортное оборудование и Марка транспортного оборудования.

6. ЗапросМАХ№Кластера

Определяет максимальный табельный номер в таблице «Кластер»

7. ЗапросЧислоТНС

Определяет число записей в таблице «АТНСС». Необходимо для запроса ЗапросГауПолностьюСвязанные

8. ЗапросОбр

Определяет марку обрабатывающего оборудования вышедшего из строя для формы «Замена оборудования»

9. ЗапросТр

Определяет марку транспортного оборудования вышедшего из строя для формы «Замена оборудования»

10. ЗапросЗамены Обр

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

11. ЗапросЗамены Тр

Используя запрос ЗапросТр формирует список обрабатывающего оборудования, способное заменить вышедшее из строя.

12. ЗапросГауСвязанные

Для кажого ГАУ определяет число связей с АТНСС. Необходимо для формы «Содержимое ГПС» , для добавления новой записи.

13. ЗапросГауПолностьюСвязанные

Определяет список ГАУ, связанных с каждым АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи.

14. Запрос ГАУ свободных

Определяет список ГАУ, которых могут образовывать связь хоть с одной АТНСС. Необходимо для формы «Содержимое ГПС», для добавления новой записи

15. Запрос для ГПС содержимого Подчиненный

Определяет список АТНСС связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи.

16. Запрос для ГПС содержимого

Определяет список АТНСС не связанных с выбранным ГАУ в форме «Содержимое ГПС» при добавлении новой записи.

17. ЗАПРОС ГАУ и АТНСС

Формирует список связанных ГАУ и АТНСС. Необходимо для формы «Содержимое ГПС»

5.3 Описание приложения

5.3.1 Функциональные возможности приложения

При помощи разработанного приложения можно:

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

2. Добавлять/изменять записи, характеризующие транспортное оборудование, марку транспортного оборудования.

3. Добавлять/изменять записи, характеризующие ГАУ.

4. Добавлять/изменять записи, характеризующие АТНСС.

5. Добавлять/изменять записи, характеризующие ГПС.

6. Добавлять/изменять записи, характеризующие Инструменты, приспособления

7. Получать отчет об обрабатывающем оборудовании.

8. Получать отчет об транспортном оборудовании.

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

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

После запуска БД (файл «БД.mdb») на экране появится Главная форма приложения, имеющая вид:

На ней расположены несколько групп кнопок.

Кнопка “Марки обрабатывающего оборудования” вызывает форму для изменения маркировок обрабатывающего оборудования. При нажатии левой кнопки мыши открывается следующая форма:


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

Для того чтобы добавить новую марку необходимо в нижней части окна корректно ввести все атрибуты новой марки и нажать кнопку «Добавить новую марку оборудования». Добавление марки оборудования уже существующей в списке запрещено!

Для того чтобы удалить марку необходимо в правой-нижней части окна выбрать из списка удаляемую марку и нажать кнопку «Удалить марку из списка». Внимание удаление марки оборудования используемой каким-то оборудованием запрещено!

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

Внимание! Изменение атрибута «Марка оборудования» запрещено!

Кнопка “Обрабатывающее оборудование” вызывает форму для изменения списка обрабатывающего оборудования. При нажатии левой кнопки мыши открывается форма:


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

Внимание! Изменение атрибутов касающихся марки оборудования, атрибута «№ кластера» и «Табельный номер» запрещено! («Габариты», «L», «D», «Частота», «Мощность»)

Кнопка “ГАУ” предназначена для изменения списка ГАУ. При нажатии левой кнопки мыши открывается форма:

Эта форма аналогична предыдущей. Добавление, изменение и удаление выполняется аналогично. Добавление ГАУ с уже существующим в списке табельным номером запрещено! Удаление ГАУ, к которому привязано оборудование запрещено! Изменение атрибута «Табельный номер» запрещено!

Кнопку“ Кластеры” предназначена для просмотра и удаления. При нажатии левой кнопки мыши открывается форма:

Добавление и изменение записей в этой форме запрещены. Удаление выполняется также как и в предыдущих формах. Удаление кластера, к которому привязано какое-то оборудование запрещено!

Кнопка “Инструменты и приспособления” предназначена для изменения списка инструментов/приспособлений:

Добавление, изменение и удаление выполняется стандартно. Добавление Инструмента/приспособления с уже существующим в списке табельным номером запрещено! Изменение атрибута «Табельный номер» запрещено!

Кнопка “Марки транспортного оборудования” предназначена для изменения списка маркировок транспортного оборудования:

Добавление, изменение и удаление записей аналогично. Добавление марки оборудования уже существующей в списке запрещено! Удаление марки оборудования используемой каким-то оборудованием запрещено! Изменение атрибута «Марка оборудования» запрещено!

Кнопка “Транспортное оборудование” предназначена для изменения списка транспортного оборудования:

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

Внимание! Изменение атрибутов касающихся марки оборудования и «Табельный номер» запрещено! («Скорость», «Габариты», «Грузоподъемность», «Вес»)

Кнопка “АТНСС” предназначены для изменения списка АТНСС.

Добавление, изменение и удаление выполняется аналогично. Добавление АТНСС с уже существующим в списке табельным номером запрещено! Изменение атрибута «Табельный номер» запрещено!

Кнопка “ГПС” предназначены для изменения списка ГПС

Добавление новой связи выполняется в пустом окне. Внимание! Вначале необходимо выбрать связываемое ГАУ, а затем АТНСС.

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

Кнопка “Отчет по оборудования” предназначена для вывода отчета по транспортному или обрабатывающему оборудованию в зависимости от сделанного выбора в окне-запросе:

Отчет по обрабатывающему оборудованию:

Этот отчет можно распечатать нажав правой клавишей на отчете и выбрав дейстивие «Печать…»

Кнопка “Замена оборудования” предназначена для вывода списка оборудования, способного заменить вышедшее из строя:

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

По нажатии кнопки “Выход” происходит закрытие БД.

ЗАКЛЮЧЕНИЕ

В результате выполнения курсовой работы была изучена методика проектирования БД, изучены декомпозиционный и ER-методы проектирования БД, а также рассмотрены такие аспекты как системный анализ предметной области и критерии выбора СУБД.

В соответствии с методикой, применяя вышеназванные методы, была разработана БД учета основного оборудования на предприятии, а также приложение для работы с ней в среде MS Access 2003.


СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.А.Ю. Гончаров Самоучитель Access 2003, Москва 2004

2.И.А.Ахмадеев, А.Х.Хайруллин, С.Ю.Юрасов Базы данных, Наб.Челны 2004

3. Конспект лекций по БД, 2010 год

4. А.С. Марков, К.Ю. Лисовский Базы Данных. Введение в теорию и методологию. Москва, 2004


ПРИЛОЖЕНИЕ.

Листинг программного кода:

Форма «Главная»

Private Sub КнВыход_Click()

On Error GoTo Главная_Выход_Err

DoCmd.Quit acPrompt

Главная_Выход_Exit:

Exit Sub

Главная_Выход_Err:

MsgBox Error$

Resume Главная_Выход_Exit

End Sub

Private Sub Кнопка11_Click()

On Error GoTo Открыть_Открыть_ИП_Err

DoCmd.OpenForm "Инструменты,приспособления", acNormal, "", "", , acNormal

Открыть_Открыть_ИП_Exit:

Exit Sub

Открыть_Открыть_ИП_Err:

MsgBoxError$

Resume Открыть_Открыть_ИП_Exit

End Sub

Private Sub Кнопка12_Click()

IfMsgBox("Открыть отчет по обрабатывающему оборудованию?", vbYesNo, "Отчет") = vbYesThen

DoCmd.OpenReport"Обрабатывающее оборудование", acViewPreview, "", "", acNormal

Else

DoCmd.OpenReport"Транспортное оборудование", acViewPreview, "", "", acNormal

End If

End Sub

Private Sub Кнопка14_Click()

On Error GoTo Открыть_Открыть_МаркаОбр_Err

DoCmd.OpenForm "Марка обрабатывающего оборудования", acNormal, "", "", , acNormal

Открыть_Открыть_МаркаОбр_Exit:

Exit Sub

Открыть_Открыть_МаркаОбр_Err:

MsgBox Error$

Resume Открыть_Открыть_МаркаОбр_Exit

End Sub

Private Sub Кнопка15_Click()

On Error GoTo Открыть_Открыть_МаркаТр_Err

DoCmd.OpenForm "Маркатранспортногооборудования", acNormal, "", "", , acNormal

Открыть_Открыть_МаркаТр_Exit:

Exit Sub

Открыть_Открыть_МаркаТр_Err:

MsgBoxError$

ResumeОткрыть_Открыть_МаркаТр_Exit

EndSub

Private Sub Кнопка16_Click()

On Error GoTo Открыть_Открыть_ГПСдоб_Err

DoCmd.OpenForm "ГПС", acNormal, "", "", , acNormal

Открыть_Открыть_ГПСдоб_Exit:

Exit Sub

Открыть_Открыть_ГПСдоб_Err:

MsgBox Error$

ResumeОткрыть_Открыть_ГПСдоб_Exit

End Sub

Private Sub Кнопка17_Click()

On Error GoTo Открыть_Открыть_Кластер_Err

DoCmd.OpenForm "Кластер", acNormal, "", "", , acNormal

Открыть_Открыть_Кластер_Exit:

Exit Sub

Открыть_Открыть_Кластер_Err:

MsgBox Error$

Resume Открыть_Открыть_Кластер_Exit

End Sub

Private Sub Кнопка27_Click()

On Error GoTo Открыть_Открыть_замену_Err

DoCmd.OpenForm "Замена оборудования", acNormal, "", "", , acNormal

Открыть_Открыть_замену_Exit:

Exit Sub

Открыть_Открыть_замену_Err:

MsgBox Error$

Resume Открыть_Открыть_замену_Exit

End Sub

Private Sub Кнопка3_Click()

On Error GoTo Открыть_Открыть_Обр_Err

DoCmd.OpenForm "Обрабатывающееоборудование", acNormal, "", "", , acNormal

Открыть_Открыть_Обр_Exit:

Exit Sub

Открыть_Открыть_Обр_Err:

MsgBoxError$

Resume Открыть_Открыть_Обр_Exit

End Sub

Private Sub Кнопка7_Click()

On Error GoTo Открыть_Открыть_ГАУ_Err

DoCmd.OpenForm "ГАУ", acNormal, "", "", , acNormal

Открыть_Открыть_ГАУ_Exit:

Exit Sub

Открыть_Открыть_ГАУ_Err:

MsgBox Error$

Resume Открыть_Открыть_ГАУ_Exit

End Sub

Private Sub Кнопка8_Click()

On Error GoTo Открыть_Открыть_ТНС_Err

DoCmd.OpenForm "АТНСС", acNormal, "", "", , acNormal

Открыть_Открыть_ТНС_Exit:

Exit Sub

Открыть_Открыть_ТНС_Err:

MsgBox Error$

Resume Открыть_Открыть_ТНС_Exit

End Sub

Private Sub Кнопка4_Click()

On Error GoTo Открыть_Открыть_Тр_Err

DoCmd.OpenForm "Транспортноеоборудование", acNormal, "", "", , acNormal

Открыть_Открыть_Тр_Exit:

Exit Sub

Открыть_Открыть_Тр_Err:

MsgBox Error$

Resume Открыть_Открыть_Тр_Exit

End Sub

Private Sub Кнопка9_Click()

On Error GoTo Открыть_Открыть_ГПС_Err

DoCmd.OpenForm "ГПС-добавление", acNormal, "", "", , acNormal

Открыть_Открыть_ГПС_Exit:

Exit Sub

Открыть_Открыть_ГПС_Err:

MsgBox Error$

Resume Открыть_Открыть_ГПС_Exit

End Sub

Форма «АТНСС»

Private Sub Кнопка34_Click()

On Error GoTo Добавление_Ввод_ТНС_Err

With CodeContextObject

If (Eval("(Forms!Атнсс![ТНС] Is Null) Or (Forms!Атнсс![Пропуск] Is Null) Or (Forms!Атнсс![Площ] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового АТНСС."

Exit Sub

End If

DoCmd.GoToControl "КодТНС"

DoCmd.FindRecord Val(Forms!Атнсс!ТНС), acEntire, False, , True, acCurrent, True

If (Val(Forms!Атнсс!ТНС) = Forms!Атнсс!КодТНС) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеАТНСС", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеАТНСС", acNewRec

Forms!ДобавлениеАТНСС!КодТНС= Forms!Атнсс!ТНС

Forms!ДобавлениеАТНСС!ПропТНС = Forms!Атнсс!Пропуск

Forms!ДобавлениеАТНСС!ПлощТНС = Forms!Атнсс!Площ

DoCmd.Close acForm, "ДобавлениеАТНСС"

DoCmd.Requery ""

DoCmd.Requery "ТНСУдаления"

End With

Добавление_Ввод_ТНС_Exit:

Exit Sub

Добавление_Ввод_ТНС_Err:

DoCmd.Close acForm, "ДобавлениеАТНСС"

'MsgBox Error$

Resume Добавление_Ввод_ТНС_Exit

End Sub

Private Sub Кнопка41_Click()

On Error GoTo Удаление_Удаление_ТНС_Err

If (Eval("Forms!Атнсс!ТНСУдаленияIs Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление АТНСС."

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеАТНСС", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеАТНСС", False

'DoCmd.GoToControl "[КодТНС]"

DoCmd.FindRecord Forms!Атнсс!ТНСУдаления, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеАТНСС"

DoCmd.Requery ""

DoCmd.Requery "ТНСУдаления"

Forms!Атнсс!ТНСУдаления = ""

Удаление_Удаление_ТНС_Exit:

Exit Sub

Удаление_Удаление_ТНС_Err:

DoCmd.Close acForm, "ДобавлениеАТНСС"

m = MsgBox("Удаление невозможно так как имеется транспортное оборудование, привязанные к данному ГАУ!", vbExclamation, "Удаление ГАУ")

'MsgBox Error$

Resume Удаление_Удаление_ТНС_Exit

End Sub

Форма«ГАУ»

Private Sub Кнопка34_Click()

On Error GoTo Добавление_Ввод_ГАУ_Err

With CodeContextObject

If (Eval("(Forms!Гау![ГАУ] Is Null) Or (Forms!Гау![Назн] Is Null) Or (Forms!Гау![Площ] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового ГАУ."

Exit Sub

End If

DoCmd.GoToControl "КодГАУ"

DoCmd.FindRecord Val(Forms!Гау![Гау]), acStart, False, , True, acCurrent, True

If (Val(Forms!Гау![Гау]) = (Forms!Гау![КодГАУ])) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеГАУ", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеГАУ", acNewRec

Forms!ДобавлениеГАУ!КодГАУ= Forms!Гау!Гау

Forms!ДобавлениеГАУ!НазнГАУ = Forms!Гау!Назн

Forms!ДобавлениеГАУ!ПлощадьГАУ = Forms!Гау!Площ

DoCmd.CloseacForm, "ДобавлениеГАУ"

DoCmd.Requery""

DoCmd.Requery"ГАУУдаления"

EndWith

Добавление_Ввод_ГАУ_Exit:

Exit Sub

Добавление_Ввод_ГАУ_Err:

DoCmd.Close acForm, "ДобавлениеГАУ"

'MsgBox Error$

Resume Добавление_Ввод_ГАУ_Exit

End Sub

Private Sub Кнопка41_Click()

On Error GoTo Удаление_Удаление_ГАУ_Err

If (Eval("Forms!Гау!ГАУУдаленияIs Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление ГАУ."

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеГАУ", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеГАУ", False

DoCmd.GoToControl "[КодГАУ]"

DoCmd.FindRecord Forms!Гау!ГАУУдаления, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеГАУ"

DoCmd.Requery ""

DoCmd.Requery "ГАУУдаления"

Forms!Гау!ГАУУдаления = ""

Удаление_Удаление_ГАУ_Exit:

Exit Sub

Удаление_Удаление_ГАУ_Err:

DoCmd.Close acForm, "ДобавлениеГАУ"

m = MsgBox("Удаление невозможно так как имеется обрабатывающее оборудование, привязанные к данному ГАУ!", vbExclamation, "Удаление ГАУ")

MsgBox Error$

Resume Удаление_Удаление_ГАУ_Exit

End Sub

Форма «Содержание ГПС»

Private Sub КодГАУ_Dirty(Cancel As Integer)

On Error GoTo Обновление_Err

КодТНС.Locked = False

DoCmd.Requery "КодТНС"

Обновление_Exit:

Exit Sub

Обновление_Err:

MsgBox Error$

Resume Обновление_Exit

End Sub

Private Sub КодТНС_Dirty(Cancel As Integer)

DoCmd.Requery "КодГау"

End Sub

Private Sub КодТНС_GotFocus()

If КодГАУ.Value > 0 Then Else m = MsgBox("ВведитевначалетабельныйномерГАУ!", vbInformation, "Внимание"): КодТНС.Locked = True

End Sub

Форма«ГПС»

Private Sub Кнопка34_Click()

On Error GoTo Добавление_Ввод_ГПС_Err

With CodeContextObject

If (Eval("(Forms![ГПС-добавление]![ГПС] Is Null) Or (Forms![ГПС-добавление]![Назн] Is Null) Or (Forms![ГПС-добавление]![Цех] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового ГПС."

Exit Sub

End If

DoCmd.GoToControl "КодГПС"

DoCmd.FindRecord Val(Forms![ГПС-добавление]!ГПС), acEntire, False, , True, acCurrent, True

If (Val(Forms![ГПС-добавление]!ГПС) = Forms![ГПС-добавление]!КодГПС) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеГПС", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеГПС", acNewRec

Forms!ДобавлениеГПС!КодГПС= Forms![ГПС-добавление]!ГПС

Forms!ДобавлениеГПС!НазнГПС = Forms![ГПС-добавление]!Назн

Forms!ДобавлениеГПС!НаимЦех = Forms![ГПС-добавление]!Цех

DoCmd.Close acForm, "ДобавлениеГПС"

DoCmd.Requery ""

DoCmd.Requery "ГПСУдаления"

End With

Добавление_Ввод_ГПС_Exit:

Exit Sub

Добавление_Ввод_ГПС_Err:

DoCmd.Close acForm, "ДобавлениеГПС"

MsgBox Error$

Resume Добавление_Ввод_ГПС_Exit

End Sub

Private Sub Кнопка41_Click()

On Error GoTo Удаление_Удаление_ГПС_Err

If (Eval("Forms![ГПС-добавление]!ГПСУдаленияIs Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление ГПС."

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеГПС", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеГПС", False

DoCmd.FindRecord Forms![ГПС-добавление]!ГПСУдаления, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеГПС"

DoCmd.Requery ""

DoCmd.Requery "ГПСУдаления"

Forms![ГПС-добавление]!ГПСУдаления = ""

Удаление_Удаление_ГПС_Exit:

Exit Sub

Удаление_Удаление_ГПС_Err:

DoCmd.Close acForm, "ДобавлениеГПС"

m = MsgBox("Удаление невозможно так как имеются ГАУ или АТНСС, привязанные к данному ГПС!", vbExclamation, "Удаление ГПС")

MsgBox Error$

Resume Удаление_Удаление_ГПС_Exit

End Sub

Форма «Инструменты и приспособления»

Private Sub КнМарка_Click()

On Error GoTo Добавление_Ввод_инструмента_Err

With CodeContextObject

If (Eval("(Forms![Инструменты,приспособления]![Код] Is Null) Or (Forms![Инструменты,приспособления]![Обр] Is Null) Or (Forms![Инструменты,приспособления]![Марка] Is Null) Or (Forms![Инструменты,приспособления]![Назн] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового инструмента/приспособления."

Exit Sub

End If

DoCmd.GoToControl "КодИП"

DoCmd.FindRecord Val(Forms![Инструменты,приспособления]!Код), acEntire, False, , True, acCurrent, True

If (Val(Forms![Инструменты,приспособления]!Код) = Forms![Инструменты,приспособления]!КодИП) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеИП", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеИП", acNewRec

Forms!ДобавлениеИП!КодИП= Forms![Инструменты,приспособления]!Код

Forms!ДобавлениеИП!КодОбр = Forms![Инструменты,приспособления]!Обр

Forms!ДобавлениеИП!МаркИП = Forms![Инструменты,приспособления]!Марка

Forms!ДобавлениеИП!НазнИП = Forms![Инструменты,приспособления]!Назн

Forms!ДобавлениеИП!ИнсПрисп = Forms![Инструменты,приспособления]!ИП

DoCmd.Close acForm, "ДобавлениеИП"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

End With

Добавление_Ввод_инструмента_Exit:

Exit Sub

Добавление_Ввод_инструмента_Err:

DoCmd.Close acForm, "ДобавлениеИП"

'MsgBox Error$

Resume Добавление_Ввод_инструмента_Exit

End Sub

Private Sub Кнопка58_Click()

On Error GoTo Удаление_Удаление_инструмента_Err

If (Eval("Forms![Инструменты,приспособления]!КодУдаления Is Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление инструмента/приспособления."

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеИП", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеИП", False

DoCmd.FindRecord Forms![Инструменты,приспособления]!КодУдаления, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеИП"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

Forms![Инструменты,приспособления]!КодУдаления = ""

Удаление_Удаление_инструмента_Exit:

Exit Sub

Удаление_Удаление_инструмента_Err:

DoCmd.Close acForm, "ДобавлениеИП"

m = MsgBox("Неизвестная ошибка. Удаление невозможно", vbExclamation, "Удаление инструмента или приспособления")

MsgBox Error$

Resume Удаление_Удаление_инструмента_Exit

End Sub

Форма«Кластер»

Private Sub Кнопка33_Click()

On Error GoTo Удаление_Удаление_кластера_Err

If (Eval("Forms!Кластер!КодIs Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление кластера"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеКластер", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеКластер", False

DoCmd.GoToControl "[КодКласт]"

DoCmd.FindRecord Forms!Кластер!Код, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеКластер"

DoCmd.Requery ""

DoCmd.Requery "Код"

Forms!Кластер!Код = ""

Удаление_Удаление_кластера_Exit:

Exit Sub

Удаление_Удаление_кластера_Err:

DoCmd.Close acForm, "ДобавлениеКластер"

m = MsgBox("Удаление кластера невозможно так как имеется оборудование, привязанное к данному кластеру!", vbExclamation, "Удаление кластера")

'MsgBox Error$

Resume Удаление_Удаление_кластера_Exit

End Sub

Форма «Марка обрабатывающего оборудования»

Private Sub КнМарка_Click()

On Error GoTo Добавление_Ввод_марки_оборудования_Err

With CodeContextObject

If (Eval("(Forms![Марка обрабатывающего оборудования]![Марка] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Габарит] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Длина] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Диаметр] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Частота] Is Null) Or (Forms![Марка обрабатывающего оборудования]![Мощность] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление новой марки оборудования"

Exit Sub

End If

DoCmd.GoToControl "МаркаОбр"

DoCmd.FindRecord Val(Forms![Маркаобрабатывающегооборудования]!Марка), acEntire, False, , True, acCurrent, True

If (Forms![Марка обрабатывающего оборудования]!Марка = Forms![Марка обрабатывающего оборудования]!МаркаОбр) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеМаркиОбр", acNormal, "", "", , acIcon

DoCmd.GoToRecord acForm, "ДобавлениеМаркиОбр", acNewRec

Forms!ДобавлениеМаркиОбр!МаркаОбр= Forms![Маркаобрабатывающегооборудования]!Марка

Forms!ДобавлениеМаркиОбр!ГабарОбр = Forms![Марка обрабатывающего оборудования]!Габарит

Forms!ДобавлениеМаркиОбр!ДлДетОбр = Forms![Марка обрабатывающего оборудования]!Длина

Forms!ДобавлениеМаркиОбр!ДиамДетОбр = Forms![Марка обрабатывающего оборудования]!Диаметр

Forms!ДобавлениеМаркиОбр!ЧастотОбр = Forms![Марка обрабатывающего оборудования]!Частота

Forms!ДобавлениеМаркиОбр!МощОбр = Forms![Марка обрабатывающего оборудования]!Мощность

DoCmd.Close acForm, "ДобавлениеМаркиОбр"

DoCmd.Requery ""

DoCmd.Requery "МаркаУдаление"

End With

Добавление_Ввод_марки_оборудования_Exit:

Exit Sub

Добавление_Ввод_марки_оборудования_Err:

DoCmd.Close acForm, "ДобавлениеМаркиОбр"

MsgBox Error$

Resume Добавление_Ввод_марки_оборудования_Exit

End Sub

Private Sub Кнопка58_Click()

On Error GoTo Удаление_Удаление_марки_оборудования_Err

If (Eval("Forms![Марка обрабатывающего оборудования]!МаркаУдаление Is Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление марки оборудования"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеМаркиОбр", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеМаркиОбр", False

DoCmd.GoToControl "[МаркаОбр]"

DoCmd.FindRecord Forms![Маркаобрабатывающегооборудования]!МаркаУдаление, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеМаркиОбр"

DoCmd.Requery ""

DoCmd.Requery "МаркаУдаление"

Forms![Марка обрабатывающего оборудования]!МаркаУдаление = ""

End

Удаление_Удаление_марки_оборудования_Exit:

Exit Sub

Удаление_Удаление_марки_оборудования_Err:

DoCmd.Close acForm, "ДобавлениеМаркиОбр"

m = MsgBox("Удаление невозможно так как имеется оборудование использующее эту марку!", vbExclamation, "Удаление марки оборудования")

'MsgBox Error$

Resume Удаление_Удаление_марки_оборудования_Exit

End Sub

Форма «Марка транспортного оборудования»

Private Sub КнДобавить_Click()

On Error GoTo Добавление_Ввод_марки_транспорта_Err

With CodeContextObject

If (Eval("(Forms![Марка транспортного оборудования]![Марка] Is Null) Or (Forms![Марка транспортного оборудования]![Скорость] Is Null) Or (Forms![Марка транспортного оборудования]![Габарит] Is Null) Or (Forms![Марка транспортного оборудования]![Груз] Is Null) Or (Forms![Марка транспортного оборудования]![Вес] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление новой марки оборудования"

Exit Sub

End If

DoCmd.GoToControl "МаркаТр"

DoCmd.FindRecord Val(Forms![Маркатранспортногооборудования]!Марка), acEntire, False, , True, acCurrent, True

If (Forms![Марка транспортного оборудования]!Марка = Forms![Марка транспортного оборудования]!МаркаТр) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеМаркиТр", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеМаркиТр", acNewRec

Forms!ДобавлениеМаркиТр!МаркаТр= Forms![Маркатранспортногооборудования]!Марка

Forms!ДобавлениеМаркиТр!СкорТр = Forms![Марка транспортного оборудования]!Скорость

Forms!ДобавлениеМаркиТр!ГабарТр = Forms![Марка транспортного оборудования]!Габарит

Forms!ДобавлениеМаркиТр!ГрузТр = Forms![Марка транспортного оборудования]!Груз

Forms!ДобавлениеМаркиТр!МассаТр = Forms![Марка транспортного оборудования]!Вес

DoCmd.Close acForm, "ДобавлениеМаркиТр"

DoCmd.Requery ""

DoCmd.Requery "МаркаУдаление"

End With

Добавление_Ввод_марки_транспорта_Exit:

Exit Sub

Добавление_Ввод_марки_транспорта_Err:

DoCmd.Close acForm, "ДобавлениеМаркиТр"

MsgBox Error$

Resume Добавление_Ввод_марки_транспорта_Exit

End Sub

Private Sub Кнопка33_Click()

On Error GoTo Удаление_Удаление_марки_транспорта_Err

If (Eval("Forms![Марка транспортного оборудования]!МаркаУдаление Is Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление марки оборудования"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеМаркиТр", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеМаркиТр", False

'DoCmd.GoToControl "[МаркаТр]"

DoCmd.FindRecord Forms![Маркатранспортногооборудования]!МаркаУдаление, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеМаркиТр"

DoCmd.Requery ""

DoCmd.Requery "МаркаУдаление"

Forms![Марка транспортного оборудования]!МаркаУдаление = ""

Удаление_Удаление_марки_транспорта_Exit:

Exit Sub

Удаление_Удаление_марки_транспорта_Err:

DoCmd.Close acForm, "ДобавлениеМаркиТр"

m = MsgBox("Удаление невозможно так как имеется оборудование использующее эту марку!", vbExclamation, "Удаление марки оборудования")

MsgBox Error$

Resume Удаление_Удаление_марки_транспорта_Exit

End Sub

Форма «Обрабатывающее оборудование»

Private Sub КнДобавить_Click()

On Error GoTo Добавление_Ввод_оборудования_Err

With CodeContextObject

If (Eval("(Forms![Обрабатывающее оборудование]![Марка] Is Null) Or (Forms![Обрабатывающее оборудование]![Гау] Is Null) Or (Forms![Обрабатывающее оборудование]![Дата] Is Null) Or (Forms![Обрабатывающее оборудование]![Стоим] Is Null) Or (Forms![Обрабатывающее оборудование]![Код] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового оборудования"

Exit Sub

End If

DoCmd.GoToControl "КодОбр"

DoCmd.FindRecord Val(Forms![Обрабатывающееоборудование]!Код), acEntire, False, , True, acCurrent, True

If (Val(Forms![Обрабатывающее оборудование]!Код) = Forms![Обрабатывающее оборудование]!КодОбр) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеОбр", acNormal, "", "", , acHidden

DoCmd.OpenForm "Запрос№КластеровПроверка", acNormal, "", "", , acHidden

DoCmd.OpenForm "Запрос№КластерапоМарке", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеОбр", acNewRec

If (Forms![Запрос№КластеровПроверка]!CountКодКласт= 0) Then

DoCmd.OpenForm "ДобавлениеКластер", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеКластер", acNewRec

DoCmd.OpenForm "ФормаЗапросМАХ№Кластера", acNormal, "", "", , acHidden

Forms!ДобавлениеКластер!КодКласт = Forms!ФормаЗапросМАХ№Кластера!MaxКодКласт + 1

Forms!ДобавлениеОбр!КодКласт = Forms!ФормаЗапросМАХ№Кластера!MaxКодКласт + 1

DoCmd.Close acForm, "ФормаЗапросМАХ№Кластера"

DoCmd.OpenForm "ФормаЗапросДЛ,Диам,ЧастМарке", acNormal, "", "",, acHidden

Forms!ДобавлениеКластер!ЧастКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ЧастотОбр

Forms!ДобавлениеКластер!ДлинКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ДлДетОбр

Forms!ДобавлениеКластер!ДиамКласт = Forms![ФормаЗапросДЛ,Диам,ЧастМарке]!ДиамДетОбр

Forms!ДобавлениеКластер!ОтклКласт = 17

DoCmd.Close acForm, "ФормаЗапросДЛ,Диам,ЧастМарке"

DoCmd.Close acForm, "ДобавлениеКластер"

End If

If (Forms![Запрос №Кластеров Проверка]!CountКодКласт = 1) Then

Forms!ДобавлениеОбр!КодКласт = Forms![Запрос №Кластера по Марке]!КодКласт

End If

DoCmd.Close acForm, "Запрос №Кластеров Проверка"

DoCmd.Close acForm, "Запрос №Кластера по Марке"

Forms!ДобавлениеОбр!КодОбр = Forms![Обрабатывающее оборудование]!Код

Forms!ДобавлениеОбр!МаркаОбр = Forms![Обрабатывающее оборудование]!Марка

Forms!ДобавлениеОбр!ДатаОбр = Forms![Обрабатывающее оборудование]!Дата

Forms!ДобавлениеОбр!СтоимОбр = Forms![Обрабатывающее оборудование]!Стоим

Forms!ДобавлениеОбр!КодГАУ = Forms![Обрабатывающее оборудование]!Гау

DoCmd.Close acForm, "ДобавлениеОбр"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

End With

Добавление_Ввод_оборудования_Exit:

Exit Sub

Добавление_Ввод_оборудования_Err:

DoCmd.Close acForm, "ФормаЗапросМАХ№Кластера"

DoCmd.Close acForm, "ФормаЗапросДЛ,Диам,ЧастМарке"

DoCmd.Close acForm, "ДобавлениеКластер"

DoCmd.Close acForm, "Запрос №Кластеров Проверка"

DoCmd.Close acForm, "Запрос №Кластера по Марке"

DoCmd.Close acForm, "ДобавлениеОбр"

MsgBox Error$

Resume Добавление_Ввод_оборудования_Exit

End Sub

Private Sub Кнопка33_Click()

On Error GoTo Удаление_Удаление_оборудования_Err

If (Eval("Forms![Обрабатывающее оборудование]!КодУдаления Is Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление оборудования"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеОбр", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеОбр", False

DoCmd.GoToControl "[КодОбр]"

DoCmd.FindRecord Forms![Обрабатывающееоборудование]!КодУдаления, acEntire, False, , True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеОбр"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

Forms![Обрабатывающее оборудование]!КодУдаления = ""

Удаление_Удаление_оборудования_Exit:

Exit Sub

Удаление_Удаление_оборудования_Err:

DoCmd.Close acForm, "ДобавлениеОбр"

m = MsgBox("Удаление невозможно так как имеются инструменты или приспособления, привязанные к данному оборудованию!", vbExclamation, "Удаление оборудования")

Resume Удаление_Удаление_оборудования_Exit

End Sub

Форма «Транспортного оборудования»

Private Sub КнДобавить_Click()

On Error GoTo Добавление_Ввод_транспорта_Err

With CodeContextObject

If (Eval("(Forms![Транспортное оборудование]![Марка] Is Null) Or (Forms![Транспортное оборудование]![Атнсс] Is Null) Or (Forms![Транспортное оборудование]![Код] Is Null) Or (Forms![Транспортное оборудование]![Стоим] Is Null)")) Then

MsgBox "Введены не все данные!", vbExclamation, "Добавление нового оборудования"

Exit Sub

End If

DoCmd.GoToControl "КодТр"

DoCmd.FindRecord Val(Forms![Транспортноеоборудование]!Код), acEntire, False, , True, acCurrent, True

If (Val(Forms![Транспортное оборудование]!Код) = Forms![Транспортное оборудование]!КодТр) Then

Beep

MsgBox "Такой номер уже существует!", vbExclamation, "Ошибка"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеТр", acNormal, "", "", , acHidden

DoCmd.GoToRecord acForm, "ДобавлениеТр", acNewRec

Forms!ДобавлениеТр!КодТр= Forms![Транспортноеоборудование]!Код

Forms!ДобавлениеТр!МаркаТр = Forms![Транспортное оборудование]!Марка

Forms!ДобавлениеТр!КодТНС = Forms![Транспортное оборудование]!Атнсс

Forms!ДобавлениеТр!СтоимТр = Forms![Транспортное оборудование]!Стоим

DoCmd.Close acForm, "ДобавлениеТр"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

End With

Добавление_Ввод_транспорта_Exit:

Exit Sub

Добавление_Ввод_транспорта_Err:

DoCmd.Close acForm, "ДобавлениеТр"

'MsgBox Error$

Resume Добавление_Ввод_транспорта_Exit

End Sub

Private Sub Кнопка33_Click()

On Error GoTo Удаление_Удаление_транспорта_Err

If (Eval("Forms![Транспортное оборудование]!КодУдаления Is Null")) Then

MsgBox "Введены не все данные!", vbExclamation, "Удаление оборудования"

Exit Sub

End If

DoCmd.OpenForm "ДобавлениеТр", acNormal, "", "", , acHidden

DoCmd.SelectObject acForm, "ДобавлениеТр", False

DoCmd.GoToControl "[КодТр]"

DoCmd.FindRecord Forms![Транспортноеоборудование]!КодУдаления, acEntire, False, True, acCurrent, False

DoCmd.RunCommand acCmdDeleteRecord

DoCmd.Close acForm, "ДобавлениеТр"

DoCmd.Requery ""

DoCmd.Requery "КодУдаления"

Forms![Транспортное оборудование]!КодУдаления = ""

Удаление_Удаление_транспорта_Exit:

Exit Sub

Удаление_Удаление_транспорта_Err:

DoCmd.Close acForm, "ДобавлениеТр"

m = MsgBox("Неизвестная ошибка. Удаление невозможно!", vbExclamation, "Удаление оборудования")

''MsgBox Error$

Resume Удаление_Удаление_транспорта_Exit

End Sub

Форма «Замена оборудования»

Private Sub Кнопка6_Click()

If [Forms]![Отчет]![Flag].Value = Null Then m = MsgBox("Введите табельный номер", vbExclamation, "Ошибка"): Exit Sub

If [Forms]![Отчет]![Flag].Value = 1 Then

ЗапросОбр

Else

ЗапросТр

End If

End Sub

Private Sub Список0_Click()

DoCmd.Requery "Table"

End Sub

Private Sub Флажок4_Click()

If Флажок4.Value Then

[Список0].RowSource = "Обрабатывающее оборудование"

Table.SourceObject = "Запрос.ЗапросЗамены Обр"

Else

[Список0].RowSource = "Транспортное оборудование"

Table.SourceObject = "Запрос.ЗапросЗамены Тр"

End If

[Список0].Value = Null

End Sub


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Тгу им. Г. Р. Державина
Реферат сделан досрочно, преподавателю понравилось, я тоже в восторге. Спасибо Татьяне за ...
star star star star star
РЭУ им.Плеханово
Альберт хороший исполнитель, сделал реферат очень быстро, вечером заказала, утром уже все ...
star star star star star
ФЭК
Маринаааа, спасибо вам огромное! Вы профессионал своего дела! Рекомендую всем ✌🏽😎
star star star star star

Последние размещённые задания

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

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно