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

Задание 5. Хранение данных и расчет заработной платы

Запустите Visual Basic, выберите тип создаваемого приложения Standart.exe.

Щ елкните на появившемся изображении формы. Перейдите в окно свойств и выберите шрифт (Font) Arial 11, жирный. Затем измените в окне свойств формы имя “Form1” на “Начисление заработной платы”.

Добавьте в форму метку Label1, пять окон редактирования TextBox1  TextBox5 и четыре кнопки

Command1  Command4.

Разместите элементы на форме так, как это представлено на рисунке и установите для них указанные в таблице

Объект

Свойство

Значения

Form1

Caption

Начисление заработной платы

Label1

Caption

Ф.И.О. Тар.ст. Часы Стаж

Text1

Text

1

Text2

Text

Ничего

Text3

Text

Ничего

Text4

Text

Ничего

Text5

Text

Ничего

Text6

Text

Ничего

Text6

MultiLine

True

Text6

ScrolBars

Vertical

Command1

Caption

Выход

Command2

Caption

Добавит запись №

Command3

Caption

Просмотр БД

Command4

Caption

Зарплата

Затем, в самом начале модуля формы впишите код, определяющий общедоступные переменные и структуру записи Rabotnik.

Option Explicit 'Общедоступные переменные

Dim FRec As Rabotnik 'Объявление записи типа Rabotnik

Dim ZpN, i As Integer 'Объявление целочисленной переменной

Private Type Rabotnik 'Структура записи

Id As Integer 'Номер записи

FIO As String * 30 'Ф.И.О. (Максимум 30 символов)

TrSt As Double 'Тарифная ставка

RbCh As Double 'Отработан. часы

StRb As Double 'Надбавка

End Type 'Конец объявления структуры

В конечном итоге форма программы будет иметь следующий вид.

Двойным щелчком на кнопке Command1 откройте окно кода для ввода операторов программы. Между строками Sub и End Sub введите оператор End.

Private Sub Command1_Click()

End

End Sub

После этой процедуры напишите текст процедуры SaveRecord.

Sub SaveRecord() 'Процедура записи в файл

ZpN = Val(Text1.Text)

'******************************* Открытие файла для чтения

Open "D:\DataZrp.txt" For Random As #1 Len = Len(FRec)

FRec.ID = ZpN 'Добавляем № в состав записи

FRec.FIO = Text2.Text 'Добавляем Ф.И.О. в запись

FRec.TrSt = Text3.Text 'Добавляем размер тарифной ставки

FRec.RbCh = Text4.Text 'Добавляем число отработанных часов

FRec.StRb = Text5.Text 'Добавляем коэффициент надбавки (%)

Put #1, ZpN, FRec 'Запись в файл

Close #1 'Закрытие файла

End Sub 'Закрытие процедуры

Двойным щелчком кнопки “Добавить запись №” (Command2), создайте процедуру вызова процедуры Call SaveRecord:

Private Sub Command2_Click()

Call SaveRecord

End Sub

Вслед за этим кодом поместите текст процедуры чтения строки ReadRecord().

Sub ReadRecord() ' Процедура чтения строки

Dim Srk As String ' Строковая переменная

'****************************************** Открытие файла

Open "E:\DataZrp.txt" For Random As #1 Len = Len(FRec)

ZpN = 1 ' Запись №1

Do While Not EOF(1) ' Выполнять до обнаружения EOF(1)

Get #1, ZpN, FRec ' Чтение текста записи из файла

If EOF(1) = True Then ' Проверка наличия конца файла

GoTo q ' Безусловный переход к метке q

Else ' Иначе формируем строку

Srk = Srk + Str(FRec.ID) + vbTab + FRec.FIO + _

vbTab + Str(FRec.TrSt) + vbTab + " " + _

Str(FRec.RbCh) + vbTab + " " + _

Str(FRec.StRb) + vbTab + vbCrLf

ZpN = ZpN + 1 ' Увеличение номера записи на 1

End If ' Конец If

'**********************************************************

Loop ' Конец цикла Do While Not EOF(1)

q: ' Метка

Text6.Text = Srk + vbCrLf + vbTab + _

"Конец файла" ' Вывод строки в Text6.Text

Close #1 ' Закрытие файла №1

End Sub ' Закрытие процедуры

Двойным щелчком кнопки “Просмотр БД” (Command3), создайте процедуру вызова процедуры Call ReadRecord:

Private Sub Command3_Click()

Call ReadRecord

End Sub

Далее, двойным щелчком кнопки “Зарплата” (Command4) создайте заготовку этой процедуры и впишите в нее следующий код:

Private Sub Command4_Click() 'Заголовок процедуры

Dim Srk As String 'Строковая переменная

Dim ST, NS, ZP, N, TS As Double 'Действительные переменные

Dim SJ, DH, K1, K2 As Double 'Действительные переменные

'****************************************** Открытие файла

Open "D:\DataZrp.txt" For Random As #1 Len = Len(FRec)

ZpN = 1 'Запись № 1

'**************************************** Заголовок строки

Srk = vbCrLf + _

" Pасчет заработной платы" + vbCrLf + _

" ===============================" + vbCrLf + vbCrLf

Do While Not EOF(1) 'Выполнять до обнаружения EOF(1)

Get #1, ZpN, FRec 'Чтение текста записи из файла

If EOF(1) = True Then 'Проверка наличия конца файла

GoTo q 'Безусловный переход к метке q

Else 'Иначе формируем строку

'****************************************** Оплата по дням

TS = FRec.TrSt 'Тарифная ставка

DH = FRec.RbCh 'Отработано часов

ST = (TS * DH) / 162 'Оплата отработанных часов

'**************************************** Надбавка за стаж

SJ = FRec.StRb ' Стаж работы

If SJ <= 5 Then ' Если стаж работы <= 5 лет то

K1 = 0

ElseIf 5 < SJ <= 10 Then ' Если стаж работы от 5 до 10 лет

K1 = 0.05

ElseIf 10 < SJ <= 20 Then ' Если стаж от 10 до 20 лет

K1 = 0.1

Else ' Иначе

K1 = 0.25

End If ' Конец If

NS = ST * K1 ' Величина надбавки за стаж

'**************************************** Вычитаемый налог

If (NS + ST) <= 2500 Then ' Если стаж и оклад <= 2500 то

K2 = 0.12

Else ' Иначе

K2 = 0.2

End If ' Конец If

N = (ST + NS) * K2 ' Величина налога

ZP = ST + NS – N ' Итого

Srk = Srk + " " + Str(FRec.ID) + vbTab + FRec.FIO + _

vbCrLf + _

" ***************************** " + vbCrLf + _

" Тар.Ставка" + vbTab + Format(TS, "0.00") + vbCrLf + _

" Отр.часы " + vbTab + Format(DH, "0") + vbCrLf + _

" Оплачено " + vbTab + Format(ST, "0.00") + vbCrLf + _

" За стаж " + vbTab + Format(NS, "0.00") + vbCrLf + _

" Налог " + vbTab + Format(N, "0.00") + vbCrLf + _

" Итого " + vbTab + Format(ZP, "0.00") + vbCrLf + _

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