Расчет заработной платы
Математическая модель:
,
где
– сумма выдачи
– оклад сотрудника;
– количество календарных дней;
– количество отработанных дней;
– премия сотруднику в %;
– подоходный налог в %;
– соц.фонд в %;
– проф.взнос в %;
Математическая модель используется для всех сотрудников.
Данный пример расчета заработной платы сотрудников был выполнен в среде разработки NetBeans IDE 8.1., база данных – MySQL Workbench 6.2
Создание базы данных
1. Создайте новую базу данных в MySQL Workbench. Для этого нажмите в левой области Navigartor, правой кнопкой мыши, после чего выберите Create Scheme.
Смотрите рис.1.1.
Рис.1.1. Создание базы данных
Далее появится следующее окно (рис.1.2), где необходимо ввести название базы данных. После чего нажмите кнопку «Apply».
Рис.1.2. Создание базы данных
В левой области Navigator появится созданная база данных, в которую вы можете добавить таблицы, хранимые процедуры и т.д.
2. Для расчета заработной платы необходимо создать следующие таблицы: Сотрудники, Табель сотрудников, Должности.
3. Для создания таблицы выполните действия, изображенные на рисунке 2.1. Т.е. нужно нажать правой кнопкой мыши по Tables / Create Table
Рис.2.1. Создание таблицы
4. Далее появится окно, в котором вы должны заполнить Название таблицы и ее поля. Создадим таблицу employees. Рис.2.2.
Рис.2.2. Создание полей таблицы
Название поля | Тип данных | Описание |
id_employees | INT | Код сотрудника |
surname | VARCHAR | Фамилия сотрудника |
name | VARCHAR | Имя сотрудника |
date | DATE | Дата поступления |
address | VARCHAR | Адрес сотрудника |
phone | VARCHAR | Телефон сотрудника |
VARCHAR | Почта сотрудника | |
post_id | INT | Код должности сотрудника |
5. Задание: Создайте самостоятельно остальные таблицы с соответствующими названиями posts, grafik. Структура таблиц предоставлена в таблицах 2.2,2.3
Таблица 2.2. Должности сотрудников.
Название поля | Тип данных | Описание |
idposts | INT | Код должности |
post_id | VARCHAR | Фамилия должности |
wage | VARCHAR | Имя должности |
Таблица 2.3. Табель сотрудников.
Название поля | Тип данных | Описание |
idgrafik | INT | Код табеля |
employer_id | VARCHAR | Код сотрудника |
postid | VARCHAR | Код должности |
wtime | TINYINT | Отработанное время |
premia | INT | Премия |
6. Также нужно настроить связи между таблицами. Например, в компании работает какое-то количество сотрудников, каждый из которых имеет свою должность. Мы имеем отношение один ко многим, одна и та же должность может быть у нескольких сотрудников, а у сотрудника может быть только одна должность.
Для того, чтобы установить связи в MySQL сделайте следующее:
· Зайдите в таблицу employees
· Нажмите внизу вкладку Foreign Keys
· Задайте название связи в поле Foreign Key Name
· Выберите поля для создания связи (Рис.2.4)
Рис.2.4. Создание связей между таблицами
· В области справа Foreign Key Options, вы можете задать значения для обновления/удаления записей, т.е. изменив, например фамилию сотрудника, она поменяется и в других связанных таблицах.
· После чего нажмите кнопку «Apply»
7. Самостоятельно создайте связь между таблицами «Табель сотрудников» и «Сотрудники».
Создание приложения на Java
1. Откройте среду разработки NetBeans
2. Создайте новый проект, введите название и нажмите кнопку «Далее» (Рис.2.5)
Рис.2.5. Создание проекта Java
3. Созданный проект появится в области Проекты. Теперь создайте форму JFrame. Для этого нажмите правой кнопкой по пакету своего проекта и выберите «Новый -> Форма JFrame» Рис.2.6.
Рис.2.6. Создание формы
4. В появившемся окне задайте Имя формы (Рис.2.7.) и нажмите кнопку Готово.
Рис.2.7. Создание формы
5. Создайте форму, как показано на рис.2.8. Элементы управления переносятся из Панели.
Рис.2.8. Создание формы
Примечания. Для того чтобы добавить элемент JXDatePicker (дата отображается в виде календаря) выполните следующие действия:
a. Выберите меню Сервис -> Палитра -> Компоненты Swing/AWT
b. Нажмите «Добавить из архива JAR»
c. Выберите путь, где находится ваш NetBeans.
[NETBEANS HOME]\ide\modules\ext и выберите swingx-x.x.x.jar (в зависимости от версии NetBeans)
d. Нажмите Далее и выберите JXDatePicker
e. Далее выберите категорию Элементы управления Swing, где должен появиться этот элемент в палитре
f. Теперь в Палитре появился новый элемент
6. Создайте класс для соединения с базой данных. Для этого добавьте в проект библиотеку
7. Напишите следующий код. Добавьте свою бд, пользователя и пароль MySQL
Создание запроса Select
8. Зайдите во вкладку Источник и наберите следующий код.
9. Добавьте событие на кнопку «Рассчитать» и наберите следующий код.
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try {
Integer ktime = Integer.parseInt(ktimeField.getText());
Integer prof_souz = Integer.parseInt(souzField.getText());
Integer prof_vznos = Integer.parseInt(vznosField.getText());
Integer soc_fond = Integer.parseInt(fondField.getText());
ResultSet rs = connection.select("a.employer_id, a.wtime, a.premia, b.wage,d.surname,d.name", "grafik as a, posts as b, employees as d", "a.postid = b.idposts and a.employer_id = d.id_employees");
DefaultTableModel dtm = new DefaultTableModel();
int i=0;
while(rs.next()){
String id = rs.getString("employer_id");
String surname = rs.getString("surname");
String name = rs.getString("name");
Double oklad = rs.getDouble("wage");
Integer premia = rs.getInt("premia");
Integer wtime = rs.getInt("wtime");
Double a = (oklad / ktime)*wtime;
Double b = (a * premia)/100;
Double k = (a+b);
Double psouz = (k * prof_souz)/100;
Double pvznos = (k * prof_vznos)/100;
Double sfond = (k * soc_fond)/100;
Double c = psouz + pvznos + sfond;
Double wage = k-c;
String row[] = {"№","Сотрудник","Соц.фонд","Проф.союз","Проф.взнос","Начислено" };
dtm.setColumnIdentifiers(row);
dtm.setColumnCount(6);
dtm.setRowCount(i+1);
dtm.setValueAt(i+1, i, 0);
dtm.setValueAt(surname + " " + name, i, 1);
dtm.setValueAt(Math.round(sfond), i, 2);
dtm.setValueAt(Math.round(psouz), i, 3);
dtm.setValueAt(Math.round(pvznos), i, 4);
dtm.setValueAt(Math.round(wage), i, 5);
i++;
}
}
rs.close();
ds.close();
} catch (Exception e) {
}
}
// Примечание: вам необходимо самостоятельно разобраться в данном коде. Ознакомьтесь с мат.моделью,предоставленной в начале.
В представленном коде рассчитанная зарплата нигде не сохраняется. Просто выводится в таблицу на форме.
Задание.