Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсачь базы данных.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
383.4 Кб
Скачать

4 Физическая модель базы данных

    1. 4.1 Описание выбранной субд

Microsoft Access - система управления базами данных, которую фирма Microsoft неизменно включает в состав профессиональной редакции Microsoft Office. СУБД Access занимает одно из ведущих мест среди систем для проектирования, создания и обработки баз данных.

Достоинства:

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

2. хранит все данные в одном файле, хотя и распределяет их по разным таблицам, как и положено реляционной СУБД. К этим данным относится не только информация в таблицах, но и другие объекты базы данных.

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

4. распространенность, которая обусловлена тем, что Access является продуктом компании Microsoft,

5. постоянно обновляется производителем, поддерживает множество языков,

6. полностью совместим с операционной системой Windows,

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

8. широкие возможности по импорту/экспорту данных в различные форматы, от таблиц Excel и текстовых файлов, до практически любой серверной СУБД через механизм ODBC,

9. Наличие развитых встроенных средств разработки приложений. Большинство приложений, распространяемых среди пользователей, содержит тот или иной объем кода VBA (Visual Basic for Applications),

10.наличие встроенного языка макрокоманд.

Недостатки:

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

2. В ранних версиях (до Access 2003) отсутствуют такие средства как триггеры и хранимые процедуры, что заставляет разработчиков возлагать поддержание бизнес логики БД на клиентскую программу или разрабатывать процедуры с помощью встроенного средства VBA.

3. обладает несложными способами защиты с использованием пароля БД (возможно применения дополнительных мер по защите от несанкционированного доступа с использованием процедур VBA),

4. В вопросах поддержки целостности данных отвечает только моделям БД небольшой и средней сложности.

5. Не распространяется бесплатно.

    1. 4.2 Создание структуры бд в субд ms access

На рисунках ниже представлены разработанные таблицы:

Рисунок 1 - Таблица «Предприятия»

Рисунок 1 - Таблица «Показатели»

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

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

5 Программирование приложения

Последовательность действий

1.Спроектировалась главная форма приложения.

Рисунок 4 - Главная форма приложения

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

Imports System.Data.OleDb

Module Module1

Public conn As OleDbConnection

Public RUB1()

Public RUB2()

Public comparison As String

Public kCom As Integer

Public Sub FillGrid(Grid1 As DataGridView, cmd As String, TableName As String)

Dim c As New OleDbCommand

c.Connection = conn

c.CommandText = cmd

Dim ds As New DataSet

Dim da As New OleDbDataAdapter(c)

da.Fill(ds, TableName)

Grid1.DataSource = ds

Grid1.DataMember = TableName

End Sub

Public Sub FillGrid(Grid1 As DataGridView, cmd As String, TableName As String, s1 As String, s2 As Integer)

Dim c As New OleDbCommand

c.Connection = conn

c.CommandText = cmd

c.Parameters.AddWithValue("Отчетный_периуд", s1)

c.Parameters.AddWithValue("Код предприятия", s2)

Dim ds As New DataSet

Dim da As New OleDbDataAdapter(c)

da.Fill(ds, TableName)

Grid1.DataSource = ds

Grid1.DataMember = TableName

End Sub

End Module

3.Написанны методы кнопок добавления и удаления.

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

Dim s1, s2, s3, s4 As String

Dim r As DialogResult

Form2.ShowDialog()

s1 = Form2.TextBox1.Text

s2 = Val(Form2.TextBox2.Text)

s3 = Val(Form2.TextBox3.Text)

s4 = Form2.TextBox4.Text

r = Form2.DialogResult

Form2.Close()

If r <> Windows.Forms.DialogResult.OK Then

Exit Sub

End If

Dim c As New OleDbCommand

c.Connection = conn

c.CommandText = "insert into Предприятия(Название,Реквизиты,Телефон,Контактное_лицо) values('" & s1 & "','" & s2 & "','" & s3 & "','" & s4 & "')"

c.ExecuteNonQuery()

RefreshGrid()

End Sub

Private Sub RefreshGrid()

FillGrid(Grid1, "select * from Предприятия", "Предприятия")

Grid1.Columns("Код_предприятия").Visible = False

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click

Dim s1, s2, s3, s4, s5, s6 As String

Dim r As DialogResult

Form3.ShowDialog()

s1 = Form3.TextBox1.Text

s2 = Form3.ComboBox1.Text

s3 = Form3.ComboBox2.Text

s4 = Form3.ComboBox3.Text

s6 = Val(Form3.TextBox2.Text)

s5 = Grid1.CurrentRow.Cells("Код_предприятия").Value

r = Form3.DialogResult

Form2.Close()

If r <> Windows.Forms.DialogResult.OK Then

Exit Sub

End If

Dim c As New OleDbCommand

c.Connection = conn

c.CommandText = "insert into Показатели(Код_предприятия,Название,Важность,Единица_измерения,Отчетный_периуд,Значение) values('" & s5 & "','" & s1 & "','" & s2 & "','" & s3 & "','" & s4 & "','" & s6 & "')"

c.ExecuteNonQuery()

RefreshGrid2()

End Sub

Private Sub RefreshGrid2()

Dim k As Integer

k = Grid1.CurrentRow.Cells("Код_предприятия").Value

FillGrid(Grid2, "select * from Показатели where Код_предприятия = " & k, "Показатели")

Grid2.Columns("Код_предприятия").Visible = False

Grid2.Columns("Код_показателя").Visible = False

End Sub

4.Написанны классы форм Добавления.

Public Class Form2

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Me.DialogResult = Windows.Forms.DialogResult.OK

Me.Close()

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

Me.DialogResult = Windows.Forms.DialogResult.Abort

Me.Close()

End Sub

Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Me.AcceptButton = Button1

Me.CancelButton = Button2

End Sub

End Class

5.Подготовленна форма отслеживания динамики показателей.

Рисунок 5 - Форма отслеживания динамики показателей

6.Решена задача отслеживания динамики показателей.

Public Class Form4

Const USDtoRUB = 22000

Const EURtoRUB = 24000

Public Sub Form4_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Label10.Text = ""

Label4.Text = ""

Label6.Text = ""

Label8.Text = ""

Label10.Text = ""

Dim k As Integer

Dim Summ1 As Integer = 0

Dim Summ2 As Integer = 0

k = Form1.Grid1.CurrentRow.Cells("Код_предприятия").Value

FillGrid(Grid1, "select * from Показатели where Отчетный_периуд = ? AND Код_предприятия = ? ", "Показатели", "Первое полугодие", k)

Grid1.Columns("Код_предприятия").Visible = False

Grid1.Columns("Код_показателя").Visible = False

Grid1.Columns("Отчетный_периуд").Visible = False

FillGrid(Grid2, "select * from Показатели where Отчетный_периуд = ? AND Код_предприятия = ? ", "Показатели", "Второе полугодие", k)

Grid2.Columns("Код_предприятия").Visible = False

Grid2.Columns("Код_показателя").Visible = False

Grid2.Columns("Отчетный_периуд").Visible = False

ReDim RUB1(Grid1.Rows.Count - 1)

ReDim RUB2(Grid2.Rows.Count - 1)

mass(Grid1, RUB1)

mass(Grid2, RUB2)

For i As Integer = 0 To RUB1.Length - 1

Summ1 = Summ1 + RUB1(i)

Next

For i As Integer = 0 To RUB2.Length - 1

Summ2 = Summ2 + RUB2(i)

Next

Label8.Text = Summ2 - Summ1

End Sub

Private Sub Grid1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Grid1.CellContentClick

Label10.Text = "отсутствует одно из значений показателя"

Dim k As Integer

If e.RowIndex = -1 Then

mass(Grid1, RUB1)

End If

k = e.RowIndex

If k <> -1 Then

Label4.Text = RUB1(k)

comparison = Grid1.Item("Название", k).Value

For Row As Integer = 0 To Grid2.Rows.Count - 1

If Grid2.Item("Название", Row).Value = comparison Then

Label10.Text = RUB2(Row) - RUB1(k)

End If

Next

End If

End Sub

Private Sub Grid2_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles Grid2.CellContentClick

Label10.Text = "отсутствует одно из значений показателя"

Dim k As Integer

k = e.RowIndex

If e.RowIndex = -1 Then

mass(Grid2, RUB2)

End If

If k <> -1 Then

Label6.Text = RUB2(k)

comparison = Grid2.Item("Название", k).Value

For Row As Integer = 0 To Grid1.Rows.Count - 1

If Grid1.Item("Название", Row).Value = comparison Then

Label10.Text = RUB2(k) - RUB1(Row)

End If

Next

End If

End Sub

Private Sub mass(Grid As DataGridView, mass() As Object)

For Row As Integer = 0 To Grid.Rows.Count - 1

If Grid.Item("Единица_измерения", Row).Value = "USD" Then

mass(Row) = Grid.Item("Значение", Row).Value * USDtoRUB

End If

If Grid.Item("Единица_измерения", Row).Value = "RUB" Then

mass(Row) = Grid.Item("Значение", Row).Value

End If

If Grid.Item("Единица_измерения", Row).Value = "EUR" Then

mass(Row) = Grid.Item("Значение", Row).Value * EURtoRUB

End If

Next

End Sub

End Class

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]