Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Otchet5 (1)

.docx
Скачиваний:
11
Добавлен:
29.03.2015
Размер:
74.68 Кб
Скачать

Лабораторная работа №5

«Работа с формами и со сложными типами данных»

Выполнил

студент гр. АСУ-11

Усанин Ф.Н.

Вариант №36

Задача:

С помощью программных средств VBA создать мини-СУБД, используя заданную вариантом структуру данных:

  • ФИО сотрудника кафедры

  • Кафедра: 1,2,3,4,5

  • Должность: 1,2,3,4,5

  • Разряд : 9,10,11,12,13,14,15

  • Занимаемая ставка: 3/2,1,1/2,1/4

  • Должностной оклад

  • Заработная плата

Разработка алгоритма:

Запускается основное меню, в котором предоставлено краткое руководство к пользованию. В меню располагаются две кнопки: «Просмотр» и «Добавить».

Кнопка «Просмотр» предоставляет доступ в меню просмотра базы данных. В данном меню также возможно изменить записи.

Кнопка «Добавить» открывает меню, в котором можно создать новую запись для базы.

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

Интерфейс

Код программы

ModuleWorker

Type Worker

Name As String * 30 'ФИО

Chair As Integer 'Кафедра

Position As Integer 'Должность

Rank As Integer 'Разряд

Rate As String * 3 'Ставка

Pay As Integer 'Оклад

Salary As Integer 'З/пл

End Type

Public Man As Worker

Public Str As Integer

Public q As Integer

Public qs As Integer

Macros5

Sub лаба5()

'Лабораторная работа №5

'Вариант 36

'Студент гр. АСУ-11

'Усанин Ф.Н.

Open "c:\db.txt" For Random Access Read Write Shared As #1 Len = Len(Man)

Dim fso As Object

Set fso = CreateObject("Scripting.FileSystemObject")

fso.CopyFile "c:\db.txt", "c:\dbcopy.txt"

Set fso = Nothing

HelloForm.Show

End Sub

HelloForm

Private Sub CommandButton1_Click()

ShowForm.Show

End Sub

Private Sub CommandButton2_Click()

AddForm.Show

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

Dim quest

quest = MsgBox("Сохранить изменения?", vbYesNo, "Сохрание")

If quest = 6 Then:

Kill "c:\dbcopy.txt"

Exit Sub

If quest = 7 Then:

Close #1

Kill "c:\db.txt"

Name "c:\dbcopy.txt" As "c:\db.txt"

Open "c:\db.txt" For Random Access Read Write Shared As #1 Len = Len(Man)

End Sub

ShowForm

Public Sub modific()

q = qs + Str

Get #1, q, Man

Load ModForm

ModForm.TextBox1.Value = Man.Name

ModForm.ComboBox1.Value = Man.Chair

ModForm.ComboBox2.Value = Man.Position

ModForm.ComboBox3.Value = Man.Rank

ModForm.ComboBox4.Value = Man.Rate

ModForm.TextBox2.Value = Man.Pay

ModForm.TextBox3.Value = Man.Salary

ModForm.Show

Seek #1, Str + 8

End Sub

Private Sub CancelButton_Click()

Seek #1, 1

Unload Me

End Sub

Private Sub CommandButton1_Click()

qs = 1

modific

End Sub

Private Sub CommandButton2_Click()

qs = 2

modific

End Sub

Private Sub CommandButton3_Click()

qs = 3

modific

End Sub

Private Sub CommandButton4_Click()

qs = 4

modific

End Sub

Private Sub CommandButton5_Click()

qs = 5

modific

End Sub

Private Sub CommandButton6_Click()

qs = 6

modific

End Sub

Private Sub CommandButton7_Click()

qs = 7

modific

End Sub

Private Sub CommandButton8_Click()

qs = 8

modific

End Sub

Private Sub NextButton_Click()

Str = Str + 8

For i = 0 To 7

Get #1, , Man

Me.Controls("Label" & 1 + i * 7) = Man.Name

Me.Controls("Label" & 2 + i * 7) = Man.Chair

Me.Controls("Label" & 3 + i * 7) = Man.Position

Me.Controls("Label" & 4 + i * 7) = Man.Rank

Me.Controls("Label" & 5 + i * 7) = Man.Rate

Me.Controls("Label" & 6 + i * 7) = Man.Pay

Me.Controls("Label" & 7 + i * 7) = Man.Salary

Next i

End Sub

Private Sub UserForm_Activate()

Str = 0

q = 0

qs = 0

For i = 0 To 7

Get #1, , Man

Me.Controls("Label" & 1 + i * 7) = Man.Name

Me.Controls("Label" & 2 + i * 7) = Man.Chair

Me.Controls("Label" & 3 + i * 7) = Man.Position

Me.Controls("Label" & 4 + i * 7) = Man.Rank

Me.Controls("Label" & 5 + i * 7) = Man.Rate

Me.Controls("Label" & 6 + i * 7) = Man.Pay

Me.Controls("Label" & 7 + i * 7) = Man.Salary

Next i

End Sub

ModForm

Private Sub CancelButton_Click()

Unload Me

End Sub

Private Sub ModButton_Click()

Man.Name = TextBox1

Man.Chair = ComboBox1

Man.Position = ComboBox2

Man.Rank = ComboBox3

Man.Rate = ComboBox4

Man.Pay = TextBox2

Man.Salary = TextBox3

Put #1, q, Man

ShowForm.Controls("Label" & (qs - 1) * 7 + 1) = Man.Name

ShowForm.Controls("Label" & (qs - 1) * 7 + 2) = Man.Chair

ShowForm.Controls("Label" & (qs - 1) * 7 + 3) = Man.Position

ShowForm.Controls("Label" & (qs - 1) * 7 + 4) = Man.Rank

ShowForm.Controls("Label" & (qs - 1) * 7 + 5) = Man.Rate

ShowForm.Controls("Label" & (qs - 1) * 7 + 6) = Man.Pay

ShowForm.Controls("Label" & (qs - 1) * 7 + 7) = Man.Salary

q = 0

Unload Me

End Sub

Private Sub UserForm_Initialize()

'Кафедра

ComboBox1.AddItem 1

ComboBox1.AddItem 2

ComboBox1.AddItem 3

ComboBox1.AddItem 4

ComboBox1.AddItem 5

'Должность

ComboBox2.AddItem 1

ComboBox2.AddItem 2

ComboBox2.AddItem 3

ComboBox2.AddItem 4

ComboBox2.AddItem 5

'Разряд

ComboBox3.AddItem 9

ComboBox3.AddItem 10

ComboBox3.AddItem 11

ComboBox3.AddItem 12

ComboBox3.AddItem 13

ComboBox3.AddItem 14

ComboBox3.AddItem 15

'Ставка

ComboBox4.AddItem "3/2"

ComboBox4.AddItem "1"

ComboBox4.AddItem "1/2"

ComboBox4.AddItem "1/4"

End Sub

AddForm

Private Sub AddButton_Click()

Man.Name = TextBox1

Man.Chair = ComboBox1

Man.Position = ComboBox2

Man.Rank = ComboBox3

Man.Rate = ComboBox4

Man.Pay = TextBox2

Man.Salary = TextBox3

Put #1, Seek(1) - 1, Man

Seek #1, Seek(1) + 1

CancelButton_Click

End Sub

Private Sub CancelButton_Click()

Seek #1, 1

Unload Me

End Sub

Private Sub UserForm_Initialize()

'Кафедра

ComboBox1.AddItem 1

ComboBox1.AddItem 2

ComboBox1.AddItem 3

ComboBox1.AddItem 4

ComboBox1.AddItem 5

'Должность

ComboBox2.AddItem 1

ComboBox2.AddItem 2

ComboBox2.AddItem 3

ComboBox2.AddItem 4

ComboBox2.AddItem 5

'Разряд

ComboBox3.AddItem 9

ComboBox3.AddItem 10

ComboBox3.AddItem 11

ComboBox3.AddItem 12

ComboBox3.AddItem 13

ComboBox3.AddItem 14

ComboBox3.AddItem 15

'Ставка

ComboBox4.AddItem "3/2"

ComboBox4.AddItem "1"

ComboBox4.AddItem "1/2"

ComboBox4.AddItem "1/4"

Do While Not EOF(1)

Get #1, , Man

Loop

End Sub

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