- •Задание: Создайте самостоятельно остальные таблицы с соответствующими названиями posts, grafik. Структура таблиц предоставлена в таблицах 2.2,2.3
- •Самостоятельно создайте связь между таблицами «Табель сотрудников» и «Сотрудники».
- •Создайте класс для соединения с базой данных. Для этого добавьте в проект библиотеку
- •Создать еще одну таблицу, где будут сохраняться все данные о зарплате сотрудников за каждый месяц.
- •Создать отдельно таблицу, где будут храниться налоги на з/п (соц. Фонд и другие)
- •Валидация данных.
Создайте класс для соединения с базой данных. Для этого добавьте в проект библиотеку
Напишите следующий код. Добавьте свою бд, пользователя и пароль MySQL
Создание запроса Select
Зайдите во вкладку Источник и наберите следующий код.
Добавьте событие на кнопку «Рассчитать» и наберите следующий код.
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) {
}
}
// Примечание: вам необходимо самостоятельно разобраться в данном коде. Ознакомьтесь с мат.моделью ,предоставленной в начале.
В представленном коде рассчитанная зарплата нигде не сохраняется. Просто выводится в таблицу на форме.
Задание.
Создать еще одну таблицу, где будут сохраняться все данные о зарплате сотрудников за каждый месяц.
Создать отдельно таблицу, где будут храниться налоги на з/п (соц. Фонд и другие)
Примечание. Как получить дату из jXDatePicker
java.util.Date data = jXDatePicker1.getDate();
Calendar cal = Calendar.getInstance();
cal.setTime(data);
cal.get(Calendar.YEAR); // Получение текущего года
String month = cal.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.forLanguageTag("ru")); //Получение месяца на русском , например, Июнь
String year = String.valueOf(cal.get(Calendar.YEAR)); // Получение текущего года
DateFormat sysDate = new SimpleDateFormat("yyyy-MM-dd");
String data = sysDate.format(jXDatePicker1.getDate());
Примечание. Как выводить данные запроса из бд в jTable на форме Java.
Вы можете воспользоваться готовой библиотекой rs2xml.jar
Как ею пользоваться:
Добавьте ее в проект, в папку библиотеки. Нажмите правой кнопокй мыши по папке Библиотеки -> Добавить файл Jar/папку
Например:
resultSet = databaseConnection.select("*", "posts", null); jTablePost.setModel(DbUtils.resultSetToTableModel(resultSet));
