Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЕВ-4791

.pdf
Скачиваний:
22
Добавлен:
07.03.2016
Размер:
2.52 Mб
Скачать

За вдалого вилучення з’являється діалогове вікно, яке повідомляє про вдалу процедуру вилучення з бази даних.

Після здійснення будь-яких маніпуляцій з базою даних для оновлення таблиці слід натиснути «Оновити».

Результат аналізу даних має вигляд графіка, в якому показано кількість викладачів за кожним наявним сімейним станом у базі даних. Вікно графіка викликають із меню бара, розділ Правка, меню Аналіз відображається на рис.16.6.

Рис.16.6. Аналіз даних за викликом

Останнє вікно, що викликається з меню бара — розділ Інфо — відображає дані автора створеного програмного продукту (рис.16.7).

Рис.16.7. Дані автора розробника програмного продукту

121

Текст програми importjava.awt.*; importjava.awt.event.*; importjavax.swing.*; importjavax.swing.table.*; importjavax.swing.border.Border;

importjavax.swing.border.EtchedBorder; import java.util.*;

interface MyStrings {

static final String ViewTitle = "Викладачі КНЕУ";

static final String AddTitle = "Доповнення БД викладачів"; static final String AnalizeTitle = "Аналіз даних";

static final String ChangeTitle = "Зміна даних викладача: ";

static final String[] TableTitles = {"ПІБ","Кафедра","РН","Стаж","Сімейний стан"}; static final String[] Simp = {"Одружений/Заміжня", "Неодружений/Незаміжня"}; static final String Delete = "Видалити";

static final String Change = "Змінити"; static final String Refresh = "Оновити"; static final String Add = "Додати"; static final String Clear = "Чистити"; static final String Close = "Закрити";

}

public class GUI {

public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

new ViewFrame().CreateViewFrame();

}

});

}

}

class ViewFrame implements ActionListener,MyStrings { private JFrame viewFrame, changeFrame, addFrame; private JLabel l_pib, l_kaf, l_rn, l_stag, l_simp, label; private JTextField t_pib, t_kaf, t_rn, t_stag, field;; private JComboBox c_simp;

private String pib, kaf, rn, st, sp; ConnectHSQL conn = new ConnectHSQL(); private JTable tables = new JTable(); private Vector<String> coln;

private Vector<Vector> data; private DefaultTableModel model;

private JMenuBar CreateMenu() { JMenu m_file, m_edit, m_info;

JMenuItem it_quit, it_view, it_add, it_delete, it_analize, it_info; JMenuBar menuBar = new JMenuBar();

m_file = new JMenu("Головна"); m_file.setMnemonic(KeyEvent.VK_G); it_quit = new JMenuItem("Вихід"); it_quit.setActionCommand("quit"); it_quit.addActionListener(this); m_file.add(it_quit); menuBar.add(m_file);

m_edit = new JMenu("Правка"); m_edit.setMnemonic(KeyEvent.VK_P);

122

it_add = new JMenuItem("Доповнення"); it_add.setActionCommand(AddTitle); it_add.addActionListener(this); m_edit.add(it_add);

it_analize = new JMenuItem("Аналіз"); it_analize.setActionCommand(AnalizeTitle); it_analize.addActionListener(this); m_edit.add(it_analize); menuBar.add(m_edit);

m_info = new JMenu("Інфо"); m_info.setMnemonic(KeyEvent.VK_I); it_info = new JMenuItem("Інформація"); it_info.setActionCommand("info"); it_info.addActionListener(this); m_info.add(it_info); menuBar.add(m_info);

return menuBar;

}

void CreateViewFrame() { viewFrame = new JFrame(); JPanel panel = new JPanel(); viewFrame.setTitle(ViewTitle);

viewFrame.setJMenuBar(CreateMenu()); viewFrame.getContentPane().add(panel); panel.add(CreateViewPanel()); viewFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); viewFrame.pack();

viewFrame.setLocationRelativeTo(null);

viewFrame.setVisible(true);

viewFrame.setResizable(false);

}

private JPanel CreateViewPanel() { JButton btn_del, btn_ch;

JPanel main, panel, panelBorder; GridBagConstraints c = new GridBagConstraints();; Refresh();

panel = new JPanel(new GridBagLayout()); label = new JLabel("Введіть ПІБ"); c.gridy = 0;

c.gridx = 0; c.gridwidth = 1;

c.insets = new Insets(5,5,5,5); panel.add(label, c);

field = new JTextField(10); c.gridy = 0;

c.gridx = 1; c.gridwidth = 1;

c.insets = new Insets(5,5,5,5); panel.add(field, c);

btn_del = new JButton(Delete); c.gridy = 0;

c.gridx = 2; c.gridwidth = 1;

c.insets = new Insets(5,5,5,5); panel.add(btn_del, c);

btn_ch = new JButton(Change); c.gridy = 0;

c.gridx = 3;

123

c.gridwidth = 1;

c.insets = new Insets(5,5,5,5); panel.add(btn_ch, c);

panelBorder = new JPanel(new BorderLayout());

Border etchedBorder = BorderFactory.createEtchedBorder(EtchedBorder.LOWERED); Border emptyBorder = BorderFactory.createEmptyBorder(10,10,10,10); panel.setBorder(etchedBorder);

panelBorder.setBorder(emptyBorder); panelBorder.add(panel, BorderLayout.CENTER);

main = new JPanel(); main.setLayout(new BorderLayout());

main.add(panelBorder, BorderLayout.PAGE_START); main.add(tables.getTableHeader(), BorderLayout.CENTER); main.add(tables, BorderLayout.PAGE_END);

return main;

}

private void CreateAddFrame() { addFrame = new JFrame(); addFrame.setTitle(AddTitle);

addFrame.getContentPane().add(CreateAddPanel()); addFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); addFrame.pack();

addFrame.setLocationRelativeTo(null);

addFrame.setVisible(true);

addFrame.setResizable(false);

}

private JPanel CreateAddPanel() { JButton btn_ok, btn_clear; JPanel panel = new JPanel();

panel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); l_pib = new JLabel("Прізвище та ініціали"); c.gridx = 0;

c.gridy = 0; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10); panel.add(l_pib, c);

t_pib = new JTextField(15); c.gridx = 2;

c.gridy = 0; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10);

c.anchor = GridBagConstraints.LINE_START; panel.add(t_pib, c);

l_kaf = new JLabel("Кафедра"); c.gridx = 0;

c.gridy = 1; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10);

c.anchor = GridBagConstraints.LINE_START; panel.add(l_kaf, c);

t_kaf = new JTextField(15); c.gridx = 2;

c.gridy = 1; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_kaf, c);

124

l_rn = new JLabel("Рік народження"); c.gridx = 0;

c.gridy = 2; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_rn, c);

t_rn = new JTextField(4); c.gridx = 2;

c.gridy = 2; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_rn, c);

l_stag = new JLabel("Стаж роботи"); c.gridx = 0;

c.gridy = 3; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_stag, c);

t_stag = new JTextField(4); c.gridx = 2;

c.gridy = 3; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_stag, c);

l_simp = new JLabel("Сімейне положення"); c.gridx = 0;

c.gridy = 4; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_simp, c);

c_simp = new JComboBox(Simp); c.gridx = 2;

c.gridy = 4; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(c_simp, c);

btn_clear = new JButton(Clear); btn_clear.setActionCommand(Clear); c.gridx = 5;

c.gridy = 1;

c.anchor = GridBagConstraints.CENTER; panel.add(btn_clear, c);

btn_ok = new JButton(Add); btn_ok.setActionCommand(Add); c.gridx = 5;

c.gridy = 0;

c.anchor = GridBagConstraints.CENTER; panel.add(btn_ok, c);

btn_clear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {

t_pib.setText(""); t_kaf.setText(""); t_rn.setText(""); t_stag.setText("");

}

});

}

private void CreateChangeFrame() {

125

changeFrame = new JFrame(); changeFrame.add(CreateChangePanel()); changeFrame.setTitle(ChangeTitle + pib);

changeFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); changeFrame.pack();

changeFrame.setLocationRelativeTo(null);

changeFrame.setVisible(true);

changeFrame.setResizable(false);

}

private JPanel CreateChangePanel() { JButton btn_ok, btn_close;

JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); l_pib = new JLabel("Прізвище та ініціали"); c.gridx = 0;

c.gridy = 0; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10); panel.add(l_pib, c);

t_pib = new JTextField(15); t_pib.setText(pib); t_pib.setEditable(false); c.gridx = 2;

c.gridy = 0; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10);

c.anchor = GridBagConstraints.LINE_START; panel.add(t_pib, c);

l_kaf = new JLabel("Кафедра"); c.gridx = 0;

c.gridy = 1; c.gridwidth = 2;

c.insets = new Insets(10,10,10,10);

c.anchor = GridBagConstraints.LINE_START; panel.add(l_kaf, c);

t_kaf = new JTextField(15); t_kaf.setText(kaf);

c.gridx = 2; c.gridy = 1; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_kaf, c);

l_rn = new JLabel("Рік народження"); c.gridx = 0;

c.gridy = 2; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_rn, c);

t_rn = new JTextField(4); t_rn.setText(rn);

c.gridx = 2; c.gridy = 2; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_rn, c);

l_stag = new JLabel("Стаж роботи"); c.gridx = 0;

c.gridy = 3;

126

c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_stag, c);

t_stag = new JTextField(4); t_stag.setText(st);

c.gridx = 2; c.gridy = 3; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(t_stag, c);

l_simp = new JLabel("Сімейне положення"); c.gridx = 0;

c.gridy = 4; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(l_simp, c);

c_simp = new JComboBox(Simp); c_simp.setSelectedItem(sp); c.gridx = 2;

c.gridy = 4; c.gridwidth = 2;

c.anchor = GridBagConstraints.LINE_START; panel.add(c_simp, c);

btn_close = new JButton(Close); btn_close.setActionCommand(Close); c.gridx = 5;

c.gridy = 1;

c.anchor = GridBagConstraints.CENTER; panel.add(btn_close, c);

btn_ok = new JButton(Change); btn_ok.setActionCommand(Change); c.gridx = 5;

c.gridy = 0;

c.anchor = GridBagConstraints.CENTER; panel.add(btn_ok, c);

return panel;

}

}

Створення бази даних import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;

public class createDB {

public static void main(String[] args) {

String q = "CREATE TABLE std(pib VARCHAR(50), kaf VARCHAR(40), rn VARCHAR(4), stag VARCHAR(5), simp VARCHAR(30))";

Connection connection = null; try {

Class.forName("org.hsqldb.jdbcDriver");

connection = DriverManager.getConnection("jdbc:hsqldb:file:db/dbname",

"SA", "");

Statement statement = connection.createStatement(); statement.executeUpdate(q); statement.execute("SHUTDOWN");

} catch(Exception e) {

127

System.err.print(e);

}

}

}

Отже, даний програмний продукт виконує всі необхідні маніпуляції із базою даних, а саме: доповнення, вилучення, зміну, вибірку, аналіз даних.

Рекомендована література [3;5-7; 12-15].

128

Тема 17. МЕХАНІЗМ ВИКОРИСТАННЯ ГРАФІЧНИХ СИСТЕМ SWT ТА JFACE

Вивчивши матеріал теми, студенти знатимуть:

зовнішні та внутрішні характеристики SWT й JFace;

визначення основних компонентів SWT;

які параметри використовують при створенні SWT-додатків;

технологію створення SWT-додатка;

шляхи формування системи JFace;

механізм зв’язування даних у програмах;

інструменти Eclipse-плагіна WindowBuilder.

Вивчення матеріалу теми допоможе студентам:

користуватися засобами систем SWT й JFace;

формувати GUI-інтерфейс системою SWT;

створювати SWT-і JFace-додатки;

використовувати XWT-додатки;

опрацювати кілька джерел подій одночасно.

17.1.Навчальні завдання для опрацювання практичної роботи

Мета роботи: закріпити теоретичні знання технології створення графічного інтерфейсу користувача засобами графічних систем SWT і JFace та визначати практичну сутність їх.

План

1.Техніка програмування графічного інтерфейсу користувача засобами графічних сис-

тем SWT й JFace.

2.Динамічне візуальне редагування.

3.Розрізнення обчислення та інтерфейсу користувача.

4.Канонічна форма зв’язування даних.

5.Візуальне програмування та його особливості.

6.Характеристика компонентів JFace.

7.Складні компоненти XWT та їх підтримка.

8.Можливості використання компонентів XWT у багатозадачному оточенні.

17.2.Завдання та технологія виконання лабораторної роботи

Лабораторна робота

«Реалізація віддаленого інтерфейсу користувача»

Мета роботи. Поглибити і закріпити теоретичні знання:

сутності установки реєстру;

створення заглушок і каркасів;

використання віддаленого об’єкта;

створення запитів різноманітної структури;

засобів реалізації сервера і клієнта.

Шляхи досягнення мети.

1.Провести десятихвилинне опитування, з’ясувати рівень засвоєння студентами термінів

іпонять цієї теми.

2.Розробити структуру віддаленого інтерфейсу для конкретної прикладної задачі.

3.Проаналізувати виконання запропонованої викладачем задачі із формуванням віддаленого інтерфейсу.

4.Скласти звіт з лабораторної роботи і захистити його.

Інформаційне забезпечення

1.Перелік завдань для виконання лабораторної роботи.

2.Серверне програмне середовище.

3.Середовище jdk та Eclipse.

129

17.3. Навчальний приклад «Розроблення програмної системи забезпечення дисципліни штатними викладачами»

Об’єктна модель

Об’єктна модель описує структуру об’єктів, що формують систему, їх операції, їх взаємозвязок з іншими обєктами. В об’єктній моделі мають бути відображені поняття й об’єкти реального світу (рис. 17.1).

 

Заявканаперегляд

 

 

Співробітник

запису

БД Викладачі

 

розподілу

 

 

 

 

 

 

 

 

Сформовані

 

Перегляд записув

 

дані про

 

 

викладача

 

базІ даних про

 

 

 

викладача

 

 

 

 

Отримання

Дані про

 

 

викладача

Викладач

 

даних про

 

 

Персональні дані

викладача

 

 

 

 

Внесення даних

 

 

Дані про

про

 

 

забезпечення

 

Дані про

факультети

 

дисциплін

 

дисципліни

 

 

 

 

Дисципліни Факультети

Рис. 17.1. Об’єктна модель задачі

Динамічна модель

Динамічна модель — модель системи, в якій відбуваються зміни через виникнення подій у часі або рух об’єктів у просторі. Динамічну модель зображено на рис. 17.1.

Початок

Отримання нового

запиту

Розподіл по дисциплінах

Перевірка наявності викладача в базі

Перевіркаправильності

даних

Вибірдисципліни

та групи

Внесення даних

про в БД

Кінець

Рис.17.2. Динамічна модель задачі

130