Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Расчет заработной платы и валидация.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
764.46 Кб
Скачать
  1. Создайте класс для соединения с базой данных. Для этого добавьте в проект библиотеку

  2. Напишите следующий код. Добавьте свою бд, пользователя и пароль MySQL

Создание запроса Select

  1. Зайдите во вкладку Источник и наберите следующий код.

  1. Добавьте событие на кнопку «Рассчитать» и наберите следующий код.

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) {

}

}

// Примечание: вам необходимо самостоятельно разобраться в данном коде. Ознакомьтесь с мат.моделью ,предоставленной в начале.

В представленном коде рассчитанная зарплата нигде не сохраняется. Просто выводится в таблицу на форме.

Задание.

  1. Создать еще одну таблицу, где будут сохраняться все данные о зарплате сотрудников за каждый месяц.

  2. Создать отдельно таблицу, где будут храниться налоги на з/п (соц. Фонд и другие)

Примечание. Как получить дату из 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)); // Получение текущего года

  1. DateFormat sysDate = new SimpleDateFormat("yyyy-MM-dd");

String data = sysDate.format(jXDatePicker1.getDate());

Примечание. Как выводить данные запроса из бд в jTable на форме Java.

Вы можете воспользоваться готовой библиотекой rs2xml.jar

Как ею пользоваться:

  1. Добавьте ее в проект, в папку библиотеки. Нажмите правой кнопокй мыши по папке Библиотеки -> Добавить файл Jar/папку

  2. Например:

resultSet = databaseConnection.select("*", "posts", null); jTablePost.setModel(DbUtils.resultSetToTableModel(resultSet));