Otchet5 (1)
.docxЛабораторная работа №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