вариант №19


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФГБОУ ВО «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ
ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ ЗАОЧНОГО ОБУЧЕНИЯ
КУРСОВАЯ РАБОТА
по дисциплине «Современные системы управления базами данных в автоматизированном производстве»
по теме «Разработка системы создания и управления параметрами металлообрабатывающих станков и комплексов. Сверлильные станки»
Разработала:
студентка группы ТО-142:
___________
принял: ст. преп. кафедры АОМП
__________ Новокщенов С.Л.
1662158414020400000Воронеж 2017
СОДЕРЖАНИЕ
TOC \o "1-3" \h \z \u ЗАДАНИЕ PAGEREF _Toc485132426 \h 3ВВЕДЕНИЕ PAGEREF _Toc485132427 \h 41 ТЕОРЕТИЧЕСКИЙ ВОПРОС: Реляционное исчисление PAGEREF _Toc485132428 \h 52 СРЕДСТВА РЕАЛИЗАЦИИ PAGEREF _Toc485132429 \h 123 АЛГОРИТМ УПРАВЛЯЮЩЕЙ ДАННЫМИ ПРОГРАММЫ PAGEREF _Toc485132430 \h 154 ТЕКСТ ПРОГРАММЫ PAGEREF _Toc485132431 \h 165 ПРИМЕР РАБОТЫ PAGEREF _Toc485132432 \h 20СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ PAGEREF _Toc485132433 \h 22

ЗАДАНИЕРазработать ПО, позволяющее извлекать данные из базы данных, представлять и управлять ими в понятной форме.

ВВЕДЕНИЕПроектирование устройств, машиностроительных конструкций и технологических процессов различного назначения немыслимо без эффективного управления. С появлением электронно-вычислительных машин (ЭВМ) важное значение приобретают системы обработки информации, от которых во многом зависит эффективность работы любого машиностроительного предприятия.
В общем виде такая система должна:
- обеспечивать получение общих и/или детализированных отчетов по итогам работы;
- позволять легко определять тенденции изменения важнейших показателей;
- обеспечивать получение информации, критической по времени, без существенных задержек;
- выполнять точный и полный анализ данных.
Большинство из перечисленных элементов реализованы в современных системах электронного документооборота (PDM), но иногда возникают и повседневные задачи, которые с целью повышения производительности труда, можно решить и самостоятельно, силами своего конструкторского или технологического бюро.
Целью преподавания дисциплины «Современные системы управления базами данных» является получение студентами необходимых навыков для создания и использования собственных систем управления данными вместе с системами автоматизированного проектирования (CAD/CAM/CAE).

1 ТЕОРЕТИЧЕСКИЙ ВОПРОС: Реляционное исчислениеПредположим, что мы работаем с базой данных, обладающей схемой СОТРУДНИКИ (СОТР_НОМ, СОТР_ИМЯ, СОТР_ЗАРП, ОТД_НОМ) и ОТДЕЛЫ (ОТД_НОМ, ОТД_КОЛ, ОТД_НАЧ), и хотим узнать имена и номера сотрудников, являющихся начальниками отделов с количеством сотрудников больше 50.
Если бы для формулировки такого запроса использовалась реляционная алгебра, то мы получили бы алгебраическое выражение, которое читалось бы, например, следующим образом:
выполнить соединение отношений СОТРУДНИКИ и ОТДЕЛЫ по условию СОТР_НОМ = ОТД_НАЧ;
ограничить полученное отношение по условию ОТД_КОЛ > 50;
спроецировать результат предыдущей операции на атрибут СОТР_ИМЯ, СОТР_НОМ.
Мы четко сформулировали последовательность шагов выполнения запроса, каждый из которых соответствует одной реляционной операции. Если же сформулировать тот же запрос с использованием реляционного исчисления, которому посвящается этот раздел, то мы получили бы формулу, которую можно было бы прочитать, например, следующим образом: Выдать СОТР_ИМЯ и СОТР_НОМ для сотрудников таких, что существует отдел с таким же значением ОТД_НАЧ и значением ОТД_КОЛ большим 50.
Во второй формулировке мы указали лишь характеристики результирующего отношения, но ничего не сказали о способе его формирования.
В этом случае система должна сама решить, какие операции и в каком порядке нужно выполнить над отношениями СОТРУДНИКИ и ОТДЕЛЫ. Обычно говорят, что алгебраическая формулировка является процедурной, т.е. задающей правила выполнения запроса, а логическая - описательной (или декларативной), поскольку она всего лишь описывает свойства желаемого результата. Как мы указывали в начале лекции, на самом деле эти два механизма эквивалентны и существуют не очень сложные правила преобразования одного формализма в другой.
Кортежные переменные и правильно построенные формулыРеляционное исчисление является прикладной ветвью формального механизма исчисления предикатов первого порядка. Базисными понятиями исчисления являются понятие переменной с определенной для нее областью допустимых значений и понятие правильно построенной формулы, опирающейся на переменные, предикаты и кванторы.
В зависимости от того, что является областью определения переменной, различаются исчисление кортежей и исчисление доменов. В исчислении кортежей областями определения переменных являются отношения базы данных, т.е. допустимым значением каждой переменной является кортеж некоторого отношения. В исчислении доменов областями определения переменных являются домены, на которых определены атрибуты отношений базы данных, т.е. допустимым значением каждой переменной является значение некоторого домена. Мы рассмотрим более подробно исчисление кортежей, а в конце лекции коротко опишем особенности исчисления доменов.
В отличие от раздела, посвященного реляционной алгебре, в этом разделе нам не удастся избежать использования некоторого конкретного синтаксиса, который мы, тем не менее, формально определять не будем. Необходимые синтаксические конструкции будут вводиться по мере необходимости. В совокупности, используемый синтаксис близок, но не полностью совпадает с синтаксисом языка баз данных QUEL, который долгое время являлся основным языком СУБД Ingres.
Для определения кортежной переменной используется оператор RANGE. Например, для того, чтобы определить переменную СОТРУДНИК, областью определения которой является отношение СОТРУДНИКИ, нужно употребить конструкцию
RANGE СОТРУДНИК IS СОТРУДНИКИ
Как мы уже говорили, из этого определения следует, что в любой момент времени переменная СОТРУДНИК представляет некоторый кортеж отношения СОТРУДНИКИ. При использовании кортежных переменных в формулах можно ссылаться на значение атрибута переменной (это аналогично тому, как, например, при программировании на языке Си можно сослаться на значение поля структурной переменной). Например, для того, чтобы сослаться на значение атрибута СОТР_ИМЯ переменной СОТРУДНИК, нужно употребить конструкцию СОТРУДНИК.СОТР_ИМЯ.
Правильно построенные формулы (WFF - Well-Formed Formula) служат для выражения условий, накладываемых на кортежные переменные. Основой WFF являются простые сравнения (comparison), представляющие собой операции сравнения скалярных значений (значений атрибутов переменных или литерально заданных констант).
Например, конструкция "СОТРУДНИК.СОТР_НОМ = 140" является простым сравнением. По определению, простое сравнение является WFF, а WFF, заключенная в круглые скобки, является простым сравнением.
Более сложные варианты WFF строятся с помощью логических связок NOT, AND, OR и IF ... THEN. Так, если form - WFF, а comp - простое сравнение, то NOT form, comp AND form, comp OR form и IF comp THEN form являются WFF.
Наконец, допускается построение WFF с помощью кванторов. Если form - это WFF, в которой участвует переменная var, то конструкции EXISTS var (form) и FORALL var (form) представляют wff.
Переменные, входящие в WFF, могут быть свободными или связанными. Все переменные, входящие в WFF, при построении которой не использовались кванторы, являются свободными. Фактически, это означает, что если для какого-то набора значений свободных кортежных переменных при вычислении WFF получено значение true, то эти значения кортежных переменных могут входить в результирующее отношение. Если же имя переменной использовано сразу после квантора при построении WFF вида EXISTS var (form) или FORALL var (form), то в этой WFF и во всех WFF, построенных с ее участием, var - это связанная переменная. Это означает, что такая переменная не видна за пределами минимальной WFF, связавшей эту переменную. При вычислении значения такой WFF используется не одно значение связанной переменной, а вся ее область определения.
Пусть СОТР1 и СОТР2 - две кортежные переменные, определенные на отношении СОТРУДНИКИ. Тогда, WFF EXISTS СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП) для текущего кортежа переменной СОТР1 принимает значение true в том и только в том случае, если во всем отношении СОТРУДНИКИ найдется кортеж (связанный с переменной СОТР2) такой, что значение его атрибута СОТР_ЗАРП удовлетворяет внутреннему условию сравнения. WFF FORALL СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП) для текущего кортежа переменной СОТР1 принимает значение true в том и только в том случае, если для всех кортежей отношения СОТРУДНИКИ (связанных с переменной СОТР2) значения атрибута СОТР_ЗАРП удовлетворяют условию сравнения.
На самом деле, правильнее говорить не о свободных и связанных переменных, а о свободных и связанных вхождениях переменных. Легко видеть, что если переменная var является связанной в WFF form, то во всех WFF, включающих данную, может использоваться имя переменной var, которая может быть свободной или связанной, но в любом случае не имеет никакого отношения к вхождению переменной var в WFF form. Вот пример:
EXISTS СОТР2 (СОТР1.СОТР_ОТД_НОМ = СОТР2.СОТР_ОТД_НОМ) AND
FORALL СОТР2 (СОТР1.СОТР_ЗАРП > СОТР2.СОТР_ЗАРП)
Здесь мы имеем два связанных вхождения переменной СОТР2 с совершенно разным смыслом.
Целевые списки и выражения реляционного исчисленияИтак, WFF обеспечивают средства формулировки условия выборки из отношений БД. Чтобы можно было использовать исчисление для реальной работы с БД, требуется еще один компонент, который определяет набор и имена столбцов результирующего отношения. Этот компонент называется целевым списком (target_list).
Целевой список строится из целевых элементов, каждый из которых может иметь следующий вид:
var.attr, где var - имя свободной переменной соответствующей WFF, а attr - имя атрибута отношения, на котором определена переменная var;
var, что эквивалентно наличию подсписка var.attr1, var.attr2, ..., var.attrn, где attr1, attr2, ..., attrn включает имена всех атрибутов определяющего отношения;
new_name = var.attr; new_name - новое имя соответствующего атрибута результирующего отношения.
Последний вариант требуется в тех случаях, когда в WFF используются несколько свободных переменных с одинаковой областью определения.
Выражением реляционного исчисления кортежей называется конструкция вида target_list WHERE wff. Значением выражения является отношение, тело которого определяется WFF, а набор атрибутов и их имена - целевым списком.
Реляционное исчисление доменовВ исчислении доменов областью определения переменных являются не отношения, а домены. Применительно к базе данных СОТРУДНИКИ-ОТДЕЛЫ можно говорить, например, о доменных переменных ИМЯ (значения - допустимые имена) или НОСОТР (значения - допустимые номера сотрудников).
Основным формальным отличием исчисления доменов от исчисления кортежей является наличие дополнительного набора предикатов, позволяющих выражать так называемые условия членства. Если R - это n-арное отношение с атрибутами a1, a2, ..., an, то условие членства имеет вид
R (ai1:vi1, ai2:vi2, ..., aim:vim) (m <= n),
где vij - это либо литерально задаваемая константа, либо имя кортежной переменной. Условие членства принимает значение true в том и только в том случае, если в отношении R существует кортеж, содержащий указанные значения указанных атрибутов. Если vij - константа, то на атрибут aij задается жесткое условие, не зависящее от текущих значений доменных переменных; если же vij - имя доменной переменной, то условие членства может принимать разные значения при разных значениях этой переменной.
Во всех остальных отношениях формулы и выражения исчисления доменов выглядят похожими на формулы и выражения исчисления кортежей. В частности, конечно, различаются свободные и связанные вхождения доменных переменных.
Для примера сформулируем с использованием исчисления доменов запрос "Выдать номера и имена сотрудников, не получающих минимальную заработную плату" (будем считать для простоты, что мы определили доменные переменные, имена которых совпадают с именами атрибутов отношения СОТРУДНИКИ, а в случае, когда требуется несколько доменных переменных, определенных на одном домене, мы будем добавлять в конце имени цифры): СОТР_НОМ, СОТР_ИМЯ WHERE EXISTS СОТР_ЗАРП1 (СОТРУДНИКИ (СОТР_ЗАРП1) AND
СОТРУДНИКИ (СОТР_НОМ, СОТР_ИМЯ, СОТР_ЗАРП) AND
СОТР_ЗАРП > СОТР_ЗАРП1)
Реляционное исчисление доменов является основой большинства языков запросов, основанных на использовании форм. В частности, на этом исчислении базировался известный язык Query-by-Example, который был первым (и наиболее интересным) языком в семействе языков, основанных на табличных формах.

2 СРЕДСТВА РЕАЛИЗАЦИИДля реализации базовых функций предлагаемого приложения используем среду Microsoft Visual Basic (рис. 2).

Рисунок №2 - Интерфейс Microsoft Visual Basic
Visual Basic.NET — объектно-ориентированный язык программирования, который можно рассматривать как очередной виток эволюции Visual Basic (VB), реализованный на платформе Microsoft .NET. VB.NET не имеет обратной совместимости с более ранней версией (Visual Basic 6.0).
Visual Basic .NET является одним из самых эффективных инструментов для ускоренного создания приложений в операционной системе Microsoft Windows и интернета. Visual Basic.NET идеально подходит как для разработчиков, уже работающих на языке Visual Basic, так и для тех, кто хочет создавать приложения с использованием платформы Microsoft .NET. В составе Visual Basic .NET поставляется мощная интегрированная среда разработки c усовершенствованными визуальными конструкторами, которая позволяет создавать приложения за короткое время.
Программа, написанная на VisualBasic.NET, хранится в проекте, визуальная часть приложения создается на форме (рис. №3).

Рисунок №3 - Окно конструктора формы
Форма  является основным объектом графического интерфейса (окно приложения), на её основе мы будем создавать интерфейс для пользователя.
Интерфейс предлагаемого приложения показан на рис. №4.

Рисунок №4 – Интерфейс разрабатываемого приложения
Данные для просмотра и управления берутся из реляционных таблиц Microsoft Excel, которые имеют следующую структуру (рис. №5).

Рисунок №5
Добавление станка выполняется в диалоге (рис. №6).

Рисунок №6
3 АЛГОРИТМ УПРАВЛЯЮЩЕЙ ДАННЫМИ ПРОГРАММЫ191516019304000
41065453097439Нет
00Нет
3839025835787002952750543242500294132064039750020508068068310Рисунок №7
00Рисунок №7
191516070441530021075657154008Конец
00Конец
42700784647524Введение новыхданных
00Введение новыхданных
4182447461649139604273629701002597154807382Отображениеданных
00Отображениеданных
20391646469039568473101340Да
00Да
6783273721002002844751238457222245033225800Просмотр данных
00Просмотр данных
16068922890862294322549911018459451313082Выбор вида изделия, выбор ГОСТа
00Выбор вида изделия, выбор ГОСТа
166306594986221075654347Начало
00Начало

4 ТЕКСТ ПРОГРАММЫImports System
Imports System.Data.SqlServerCePublic Class Form1
Dim Exc As Object
Dim s, s1, s4, s3, model As String
Dim k, l, j1(1000), m As Integer
Dim m1(1000) As Integer
Dim s5(1000), s6(1000), s7(1000), s8(1000), s9(1000), s10(1000), s11(1000), s12(1000), s13(1000), s14(1000) As String
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load TabPage1.Text = "Техническая характеристика"
TabPage2.Text = "Приспособления"
TabPage3.Text = "Средства автоматизации"
Label4.Text = " "
Label5.Text = " "
Label6.Text = " "
Label7.Text = " "
Label8.Text = " "
Label9.Text = " "
Label10.Text = " "
Label11.Text = " "
If IO.File.Exists("D:\Станки\станки.xlsx") Then
Dim i, j As Integer
i = 1
j = 2
k = 0
m = 1
Exc = CreateObject("Excel.Application")
Exc.Workbooks.Open("D:\Станки\станки.xlsx").Activate()
For j = 1 To 1000
s = Exc.Range("A" + j.ToString).Value
If s <> "" Then
ComboBox1.Items.AddRange(New Object() {s})
k = k + 1
Else
m = m + 1
j1(k) = m
End If
s1 = Exc.Range("B" + j.ToString).Value
If s1 <> "" Then
s5(j) = s1
s6(j) = Exc.Range("C" + j.ToString).Value
s11(j) = Exc.Range("D" + j.ToString).Value
s7(j) = Exc.Range("E" + j.ToString).Value
s12(j) = Exc.Range("F" + j.ToString).Value
s8(j) = Exc.Range("G" + j.ToString).Value
s13(j) = Exc.Range("H" + j.ToString).Value
s9(j) = Exc.Range("i" + j.ToString).Value
s14(j) = Exc.Range("J" + j.ToString).Value
End If Next j
Exc.ActiveWorkbook.Close() Exc.Quit() Exc = Nothing
Else
MsgBox("Файл базы данных не найден.")
Application.Exit() End If
End Sub
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Me.ComboBox2.Items.Clear() Dim j3 As Integer
j3 = 1
Select Case ComboBox1.SelectedIndex
Case 0 : PictureBox1.Load("D:\Станки\Фото\токарный.jpg")
For j3 = 1 To j1(1)
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
Case 1 : PictureBox1.Load("D:\Станки\Фото\фрезерный.jpg")
For j3 = j1(1) + 1 To j1(2) + 1
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
Case 2 : PictureBox1.Load("D:\Станки\Фото\сверлильный.jpg")
For j3 = j1(2) + 1 To j1(3) + 1
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
Case 3 : PictureBox1.Load("D:\Станки\Фото\шлифовальный.jpg")
For j3 = j1(3) + 1 To j1(4) + 1
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
Case 4 : PictureBox1.Load("D:\Станки\Фото\карусельный.jpg")
For j3 = j1(4) + 1 To j1(5) + 1
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
Case 5 : PictureBox1.Load("D:\Станки\Фото\расточной.jpg")
For j3 = j1(5) + 1 To j1(6) + 1
ComboBox2.Items.AddRange(New Object() {s5(j3)})
Label4.Text = s6(j3)
Label5.Text = s7(j3)
Label6.Text = s8(j3)
Label7.Text = s9(j3)
Label8.Text = s11(j3)
Label9.Text = s12(j3)
Label10.Text = s13(j3)
Label11.Text = s14(j3)
Next j3
End Select
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Form2.Show() End Sub

End Class
5 ПРИМЕР РАБОТЫАлгоритм работы с программой выглядит следующим образом:
выбираем тип и конфигурацию станка (рис. №8)

Рисунок №8
просматриваем данные об изделии (рис. №9)

Рисунок №9
Данные об изделии (рис. №10)

Рисунок №10

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВСудов Е.В. Технологии интегрированной логистической поддержки изделий машиностроения / Судов Е.В., Левин А.И., Петров А.В., Чубарова Е.В. – М.: "Информбюро", 2006.
Российская энциклопедия CALS. Авиационно-космическое машиностроение / Под ред. А.Г. Братухина. – М.: ОАО НИЦ АСК, 2008.
Имитационное моделирование: ученик для вузов / Ткаченоков С.В.; под ред. Ткаченоков С.В. – М. 2006 г.
Петров П.К. Моделирование / П.К.Петров. – М.: «Протон» - 2002 г.
Норенков И.П. Информационная поддержка наукоемких изделий (CALS-технологии) / И.П. Норенков, П.К. Кузьмик. — М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.
Колчин А.Ф. Управление жизненным циклом продукции / Колчин А.Ф., Овсянников М.В., Стрекалов А.Ф., Сумароков С.В. – М.: Анахарсис, 2002.
Шабов И.К. Моделирование процессов / Шабов И.К. – 2000 г.
Ховарс Д., Легг С. Конструкторские базы данных /Пер. с англ. Д.Ф. Миронова. – М.: Машиностроение, 1990. – 224 с.: ил.;

Приложенные файлы

  • docx 9505186
    Размер файла: 824 kB Загрузок: 0

Добавить комментарий