Зміст
Зміст
Постановка задачі
Розробити базу даних (БД) за учбовою темою "Зарплата", передбачивши в ній декілька таблиць, що звязані між собою відношенням “один до багатьох”, форми для введення даних, звіти для виведення даних та запит щодо зарплати жінок. Відкриття форм, звітів та запиту оформити через кнопкові форми. Розрахункові поля забезпечити макросами або процедурами. Звіт побудувати групуванням за одним з полів і сортуванням за іншим полем.
Структура бази даних
Серед довідкових таблиць зупинимось на двох: "Посади" та "Працівники". Передбачимо ще таблицю облікового характеру "Зарплата". Нехай ці таблиці містять поля та повязані між собою так, як це зображено на наступній схемі, де символом позначено ключове поле:
ПОСАДИ
Посада
Назва
ТарифЗаГодину | ПРАЦІВНИКИ
ТабНомер
Прізвище
Імя
По-батькові
Стать
ДатаНародження
Посада
ЗАРПЛАТА
ТабНомер
КількістьГодин
СумаНарахована
Податок
ВнесокПФ
ВнесокФССбр
ВнесокФССл
СумаНаРуки
Рис. - Структура БД "Зарплата"
Нехай типи полів та їх розмір(максимальна кількість символів для даних поля) будуть такими:
Табл. - Основні параметри структури таблиць
Таблиця | Поле | Тип | Розмір
ПОСАДА | Посада | текстовий | 3
Назва | текстовий | 40
ТарифЗаГодину | грошовий
ПРАЦІВНИКИ | ТабНомер | текстовий | 4
Прізвище | текстовий | 16
Імя | текстовий | 12
По-батькові | текстовий | 16
Стать | текстовий, "Ч" або "Ж" | 1
ДатаНародження | дата
Посада | текстовий | 3
ЗАРПЛАТА | ТабНомер | текстовий | 4
КількістьГодин | числовий, цілий
СумаНарахована | грошовий
Податок | грошовий
ВнесокПФ | грошовий
ВнесокФССбр | грошовий
ВнесокФССл | грошовий
СумаНаРуки | грошовий
В деяких рядках не вказаний розмір, тому що у MS Access він визначається автоматично. Наприклад, розмір поля типу дата дорівнює 8.
Припустимо такі правила обчислення розрахункових полів, вказуючи перед ними назву відповідної таблиці:
ЗАРПЛАТА.СумаНарахована – загальна сума нарахованої зарплати. Обчислюється добутком кількості відпрацьованих годин та тарифу оплати праці за годину.
ЗАРПЛАТА.Податок – прибутковий податок. Обчислюється за підсумовуючою шкалою в залежності від суми нарахованої зарплати, далі позначимо її через S (грн.), а саме, спочатку відкидаємо дробову частину S (тобто копійки), позначаємо результат через S, далі податок накопичується обчисленням процентів з урахуванням інтервалу, до якого належить S:
Табл. - Шкала нарахування прибуткового податку
Інтервал, до якого належить S | %
[0;17] | 0
(17;85] | 10
(85;170] | 15
(170;1020] | 20
(1020;1700] | 30
(1700;) | 40
ЗАРПЛАТА.ВнесокПФ – внесок в песійний фонд. Обчислюється за шкалою в залежності від суми нарахованої зарплати S (грн.):
Табл. - Шкала нарахування внесків у пенсійний фонд
Інтервал, до якого належить S | Внесок, грн.
[0;150] | S*1%
(150;1600] | S*2%
(1600; ) | 32
ЗАРПЛАТА.ВнесокФССбр – внесок у фонд соціального страхування по безробіттю - обчислюється за шкалою в залежності від суми нарахованої зарплати S (грн.):
Табл. - Шкала нарахування внесків у фонд соціального страхування по безробіттю
Інтервал, до якого належить S | Внесок, грн.
[0;1600] | S*0.5%
(1600; ) | 8
ЗАРПЛАТА.ВнесокФССл – внесок у фонд соціального страхування по непрацездатності - обчислюється за шкалою в залежності від суми нарахованої зарплати S (грн.):
Табл. - Шкала нарахування внесків у фонд соціального страхування по непрацездатності
Інтервал, до якого належить S | Внесок, грн.
[0;150] | S*0.25%
(150;1600] | S*0.5%
(1600; ) | 8
ЗАРПЛАТА.СумаНаРуки - заробітна плата, яку працівник отримує через касу. Обчислюється як різниця між загальною нарахованою зарплатою S та сумою податків і внесків.
Побудова звіту здійснюється групуванням за полем Посада та сортуванням за полем Прізвище.
Розвязання задачі
Побудова алгоритмів
Загальна сума нарахованої зарплати обчислюється добутком, тобто:
ЗАРПЛАТА.СумаНарахована = ЗАРПЛАТА.КількістьГодин* ПОСАДИ.ТарифЗаГодину
Якщо позначити функцію, що відокремлює цілу частину, через int, функцію, що знаходить максимум серед двох чисел, через max, функцію, що знаходить мінімум серед двох чисел, через min, то алгоритм знаходження податку P буде таким:
S = int(S) |
(1)
P = min(85-17,max(S-17,0))*10/100 +
min(170-85,max(S-85,0))*15/100 +
min(1020-170,max(S-170,0))*20/100 +
min(1700-1020,max(S-1020,0))*30/100 +
max(S-1700,0)*40/100 |
(2)
Алгоритм знаходження внесків у пенсійний фонд і фонд соціального страхування - відповідно Впф , Вфссбр , Вфссл - буде таким:
Якщо S <= 150
то Впф =S*1/100
інакше Впф =min(S*2/100,32)
КінецьЯкщо
Вфссбр =min(S*0.5/100,8)
Якщо S <= 150
то Вфссл =S*0.25/100
інакше Вфссл =min(S*0.5/100,8)
КінецьЯкщо
Якщо позначити через iif функцію, яка знаходить значення в залежності від значень умови (істина або хибність), то алгоритми для знаходження внесків Впф, Вфссл перепишуться більш компактно:
Впф = iif( S <= 150 , S*1/100 , min(S*2/100,32)) |
(3)
Вфссл = iif( S <= 150 , S*0.25/100 , min(S*0.5/100,8)) | (4)
Що стосується реалізації алгоритму в середовищі MS Access, то необхідно відмітити відсутність там функцій знаходження максимуму та мінімуму декількох чисел. Це означає, що дані функції необхідно самостійно побудувати. Їх вигляд у мові VBA такий:
Private Function max(a, b)
max = iif(a >= b, a, b)
End Function |
(5)
Private Function min(a, b)
min = iif(a >= b, b, a)
End Function |
(6)
Зауваження: визначені вище функції max та min за своєю назвою (але не за своїм змістом!) є в середовищі MS Access – це функції знаходження максимального(мінімального) значення виразу, який обчислюється на множині даних записів таблиць.
Побудова нової бази даних
Запуск MS Access здійснюється або через меню персонального компютера, або, якщо це можливо, через піктограму на робочому столі Windows. Нижче () показаний вигляд першого вікна MS Access:
Рис. - Перше діалогове вікно MS Access
У цьому вікні необхідно визначитись: будувати нову базу даних або відкрити вже існуючу. У свою чергу побудова нової бази даних може здійснюватись безпосередньо користувачем (радіокнопка Новая база данных) або за допомогою майстра (радіокнопка Запуск мастера). Якщо база даних вже існує, то необхідно вибрати її із списку останніх БД, що були в роботі, або вибрати рядок Другие файлы… та знайти базу даних, використовуючи стандартне вікно відкриття файлу Windows. В останньому випадку або у випадку побудови нової бази даних необхідно вказати пристрій, папку та назву файлу бази