Интегрирование подсистем "Деканат" и "Финансы" на программном и информационном уровне, организация передачи данных по личным делам студентов из подсистемы «Деканат» в подсистему «Финансы», страница 3

   NUM_ZACH = ID_ZACH;

End

Else

IF (D_O_B1 IS NULL) then

Begin

   NUM_ZACH = ID_ZACH;

End

Else

IF (ID_DIV1 IS NULL) then

Begin

   NUM_ZACH = ID_ZACH;

End

Else

IF (ID_PROF1 IS NULL) then

Begin

   NUM_ZACH = ID_ZACH;

End

Else

Begin

   UPDATE OR INSERT INTO

   CONTINGENTS(

   ID_FIO,   F_FIO,    I_FIO,   O_FIO,   D_O_B,    ID_CODE,   ID_DIV,

   ID_PROF,    NAME_GROUP,   COURSE,   LAST_DATE,   LAST_USER)

   values(

   GEN_ID(GEN_CONTINGENT,1),   :F_FIO1,   :I_FIO1,   :O_FIO1,

   :D_O_B1,    :ID_CODE1,

   (select ID_DIV from Divisions where CODE_DIV = :ID_DIV1),

   (SELECT FACVAL FROM DEC_FAC WHERE DECVAL = :ID_PROF1),

   :NAME_GROUP1,   :COURSE1,   current_timestamp,

   current_user)

   matching (ID_CODE)

   returning old.id_fio into :id;

   suspend;

end

END^

SET TERM ; ^

3 Пример работы приложения

После запуска приложения нужно подключиться к подсистеме  «Деканат». Сразу после подключения будет выведен список всех студентов.

Рисунок 3.1 Рабочее окно при запуске приложения

Рисунок 3.2 – Рабочее окно после подключения.

После подключения к подсистеме «Деканат» необходимо подключиться к подсистеме «Финансы», чтобы стала возможна передача данных и после выбора личных дел.

Рисунок 3.3 Рабочее окно после подключения ко всем подсистемам

Когда обе подсистемы подключены становиться доступна кнопка, для добавления личных дел в подсистему «Финансы». После передачи данных диалоговое окно сообщает: сколько рядов было добавлено, обновлено а сколько повреждено при передаче.

Рисунок 3.4 Результат передачи данных


Приложение. Код программы

Класс для работы с подсистемой «Финансы»:

public class DBManager {

    Connection connection = null;

    CallableStatement proc = null;

    public DBManager() {

        connect();

    }

    private void connect() {

        try {

            Class.forName("org.firebirdsql.jdbc.FBDriver").newInstance();

            Properties conProperties = new Properties();

            conProperties.put("user", "SERG");

            conProperties.put("password", "278107");

            conProperties.put("charSet", "Cp1251");

            connection =

                    DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/D://JavaDB//finance.gdb",

                    conProperties);

            //addNewStudent();

        } catch (SQLException ex) {

            Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);

        } catch (ClassNotFoundException ex) {

            Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);

        } catch (InstantiationException ex) {

            Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);

        } catch (IllegalAccessException ex) {

            Logger.getLogger(DBManager.class.getName()).log(Level.SEVERE, null, ex);

        }

    }

    public int[] addNewStudent(String[][] s) throws SQLException, ParseException {

        SimpleDateFormat dOB = new SimpleDateFormat("yyyy-MM-dd");

        int aded = 0;

        int edited = 0;

        int wrong = 0;

        for (int i = 0; i < s.length; i++) {

            for (int j = 1; j < 4; j++) {

                s[i][j] = s[i][j].substring(0, 1).toUpperCase()

                        + s[i][j].substring(1).toLowerCase();

                s[i][j].replace("I", "І").replace("i", "і");

            }

            proc = connection.prepareCall("{ call NEW_STUDENT(?,?,?,?,?,?,?,?,?,?) }");