31
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ» Факультет прикладної математики Кафедра системного програмування і спеціалізованих комп’ютерних систем «До захисту допущено» Завідувач кафедри __________ В.П. Тарасенко (підпис) “___”_____________2015р. Дипломний проект освітньо-кваліфікаційного рівня “Бакалавр” з напряму підготовки 6.050102 “Комп’ютерна інженерія” на тему: ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ СИСТЕМИ ПІДТРИМКИ ОРГАНІЗАЦІЇ СПОРТИВНИХ ЗМАГАНЬ Виконав: студент 4 курсу, групи КВ-12 Корнєв Ярослав Дмитрович ________ __ (підпис) Керівник ст. викл. Дробязко І.П. ________ __ (підпис) Консультант з нормоконтролю доц., доц., к.т.н. Плахотний М.В. ________ __ (підпис) Рецензент доц., доц. кафедри ОТ ФІОТ, к.т.н. Корнійчук В.І. ________ __

scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ«КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»

Факультет прикладної математики

Кафедра системного програмування і спеціалізованих комп’ютерних систем

«До захисту допущено» Завідувач кафедри

__________ В.П. Тарасенко (підпис)

“___”_____________2015р.

Дипломний проектосвітньо-кваліфікаційного рівня “Бакалавр”

з напряму підготовки 6.050102 “Комп’ютерна інженерія”на тему: ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ СИСТЕМИ ПІДТРИМКИ

ОРГАНІЗАЦІЇ СПОРТИВНИХ ЗМАГАНЬ

Виконав: студент 4 курсу, групи КВ-12Корнєв Ярослав Дмитрович __________

(підпис)

Керівник ст. викл. Дробязко І.П. __________ (підпис)

Консультант з нормоконтролю доц., доц., к.т.н. Плахотний М.В. __________ (підпис)

Рецензент доц., доц. кафедри ОТ ФІОТ, к.т.н. Корнійчук В.І. __________ (підпис)

Засвідчую, що у цьому дипломному проекті немає запозичень з праць інших авторів без відповідних посилань.Студент _____________

(підпис)

Київ – 2015

Page 2: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Національний технічний університет України “Київський політехнічний інститут”

Факультет прикладної математики

Кафедра системного програмування і спеціалізованих комп’ютерних систем

Освітньо-кваліфікаційний рівень “Бакалавр”Напрям підготовки 6.050102 “Комп’ютерна інженерія”

ЗАТВЕРДЖУЮ

Завідувач кафедри__________ В.П.

Тарасенко“___” ___________

2015 р.

З А В Д А Н Н ЯНА ДИПЛОМНИЙ ПРОЕКТ СТУДЕНТУ

Корнєву Ярославу Дмитровичу1. Тема проекту ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ СИСТЕМИ ПІДТРИМКИ ОРГАНІЗАЦІЇ СПОРТИВНИХ ЗМАГАНЬ,керівник проекту Дробязко Ірина Павлівна, старший викладач,затверджені наказом по університету від “19” травня 2015 року № 1039-С2. Строк подання студентом проекту: “11” червня 2015 р.3. Вихідні дані для дипломного проектування: див. Технічне завдання.4. Перелік задач, які потрібно вирішити:

– Провести аналіз існуючих програм для організації змагань.

– Визначити структуру системи та функціональність її компонентів.

– Розробити програмне забезпечення компонентів системи.

– Розробити зручний користувацький інтерфейс.

– Здійснити тестування розробленого програмного забезпечення.

5. Перелік обов’язкового ілюстративного матеріалу:– Програмне забезпечення системи підтримки організації спортивних змагань. Схема

структурна.

– Процедура заповнення бази даних. Схема алгоритму.

– Графічний інтерфейс. Схема структурна.

– Процедура жеребкування. Схема алгоритму.

Page 3: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

6. Консультанти:

Питання Прізвище, ініціали та посада консультанта

Підпис, датазавдання

видавзавданняприйняв

Нормоконтроль Плахотний М.В., доцент7. Дата видачі завдання: “27” жовтня 2014 р.

КАЛЕНДАРНИЙ ПЛАН

№з/п

Назва етапів виконання дипломного проекту

Строк виконання етапів

Примітка

1. Вивчення літератури за тематикою проекту 15.11.20142. Розроблення та узгодження технічного завдання 30.11.20143. Аналіз існуючих рішень 05.02.20154. Підготовка матеріалів першого розділу дипломного проекту 15.02.20155. Розроблення програмного забезпечення 15.04.20156. Відлагодження програмного продукту 30.04.20157. Підготовка матеріалів другого розділу дипломного проекту 05.05.20158. Підготовка матеріалів третього розділу дипломного проекту 10.05.20159. Підготовка матеріалів четвертого розділу дипломного

проекту 15.05.2015

10. Підготовка графічної частини дипломного проекту 20.05.201511. Оформлення документації дипломного проекту 23.05.201512. Попередній огляд матеріалів на кафедрі 25.05.2015

Студент _________ Корнєв Я.Д.

Керівник проекту _____________ Дробязко І.П.

Page 4: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

ТЕХНОЛОГІЧНІ ТА ПРОГРАМНІ ЗАСОБИ

Мова програмування Java

Java — об'єктно-орієнтована мова програмування, представлена

компанією Sun Microsystems у 1995 році як основний компонент платформи

Java. Зараз мовою займається компанія Oracle, яка придбала Sun

Microsystems у 2009 році.

Синтаксис мови багато в чому схожий на мови програмування C та C+

+. У офіційній реалізації, Java програми компілюються у байт-код, який при

виконанні інтерпретується віртуальною машиною для конкретної платформи.

Oracle надає компілятор Java та віртуальну машину Java, які

задовольняють специфікації Java Community Process, під ліцензією GNU

General Public License.

Мова значно запозичила синтаксис із мов програмування C і C++.

Зокрема, взято за основу об'єктну модель С++, проте її модифіковано.

Усунуто можливість появи деяких конфліктних ситуацій, що могли

виникнути через помилки програміста, та полегшено сам процес розробки

об'єктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати

програмісти, доручено віртуальній машині. Передусім, Java розроблялась як

платформо-незалежна мова, тому вона має менше низькорівневих

можливостей для роботи з апаратним забезпеченням. За необхідності таких

дій Java дозволяє викликати підпрограми, написані іншими мовами

програмування.

Java вплинула на розвиток J++, що розроблялась компанією Microsoft.

Роботу над J++ було зупинено через судовий позов компанії Sun

Microsystems, оскільки ця мова програмування була модифікацією Java.

Пізніше в новій платформі Microsoft.NET випустило J#, щоб полегшити

міграцію програмістів J++ або Java на нову платформу. З часом нова мова

програмування С# стала основною мовою платформи, перейнявши багато

чого з Java. J# востаннє включалася у версію Microsoft Visual Studio 2005.

Page 5: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Переваги мови Java

 Java дозволяє створювати незалежні від платформи програми шляхом

компіляції в проміжне представлення, яке називається байт-кодом. Багато

попередніх спроб знайти розв’язок проблеми незалежності від платформи

були зроблені за рахунок продуктивності. Інтерпретуючі системи, подібні до

BASIC та Perl, страждають на майже неподоланний дефіцит продуктивності.

Це було враховано при створенні Java. Незважаючи на те, що Java є

інтерпретованою мовою, генерація байт-кодів була ретельно оптимізована в

такий спосіб, щоб одержуваний байт-код можна було легко перекладати в

машинний код, який працює з дуже високою продуктивністю. Виконуючі

системи такого роду не втрачають жодних переваг переносимого коду.

Розподіленість

Мова Java призначена для створення програм, які працюють в

розподіленому середовищі Internet на базі протоколів TCP/IP. Насправді

доступ до ресурсів за допомогою URL відрізняється від доступу к файлу.

Крім того в Java наявний засіб передачі повідомлень в межах внутрішнього

адресного простору. Це дозволяє забезпечити віддалене виконання процедур.

Ці інтерфейси включені у пакет RMI (remote metod invocation). Цей засіб

привносить високий рівень абстракції в програмування для середовища

клієнт/сервер.

Java-програми несуть у собі значний обсяг інформації про типи часу

виконання (run-time type information), яка використовується для дозволу

доступу до об’єктів під час роботи програми. Це дозволяє забезпечити

безпечну та оптимальну динамічну компоновку. У такий спосіб досягається

захищеність середовища виконання аплетів.

Доступність інструментарію та ефективність

розробок

Зазначена вище простота програмування на Java є причиною того, що

розробки на Java коштуватимуть дешевше аналогічних на більш потужних

мовах програмування. Цьому ж сприяє і переносимість програм на Java,

Page 6: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

оскільки ліквідуються витрати пов’язані з адаптацією програми на

конкретній платформі. До того ж інтегровані програми-оболонки для

розробки Java програм коштують набагато дешевше, ніж аналогічні продукти

C++, Delphi. А набір інструментарію для пакетної компіляції Java програм

JDK (Java Development Kit) є взагалі безкоштовний. Тому платформу Java

можна рекомендувати як ідеальну для створення некомерційних програмних

продуктів та для навчання.

Перспективи застосування

Програми на Java можуть знайти різне застосування у навчальному

процесі: інтерактивні навчаючі програми (HTML в поєднанні з Java),

програми-тести і особливо ділові ігри. Додаткові переваги можна отримати,

якщо писати ці програми у вигляді аплетів, які ініціалізуються з Web сервера

внутрішньої мережі Intranet. В такий спосіб можна уникнути інсталяції

програми на багатьох комп’ютерах - користувач просто запускає Web-

браузер і загружає потрібну сторінку. Для тестових програм, написаних на

Java з використанням архітектури клієнт/сервер можна підвищити ступінь

конфіденційності. База даних тестових запитань знаходиться на сервері в

каталозі з обмеженим доступом. Коли користувач загружає аплет, він

автоматично підключається до програми-сервера, яка виконується на сервері

і може видавати запитання з бази даних у відповідь на запит користувача. В

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

фізичного доступу до серверу у користувачів.

Бібліотека Swing

Swing — інструментальні засоби для створення графічного інтерфейсу

користувача (GUI) мовою програмування Java. Це частина бібліотеки базових

класів Java (JFC, Java Foundation Classes).

Swing розробляли для забезпечення функціонального набору

програмних компонентів для створення графічного інтерфейсу користувача,

ніж у ранішого інструментарію AWT. Компоненти Swing підтримують

специфічні look-and-feel модулі, що динамічно підключаються. Завдяки ним

Page 7: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

можлива емуляція графічного інтерфейсу платформи (тобто до компоненту

можна динамічно підключити інші, специфічні для даної операційної

системи вигляд і поведінку). Основним недоліком таких компонентів є

відносно повільна робота, хоча останнім часом це не вдалося підтвердити

через зростання потужності персональних комп'ютерів. Позитивна сторона

—— універсальність інтерфейсу створених програм на всіх платформах.

Створення складного GUI за допомогою AWT практично неможливе,

оскільки в AWT немає основних інтерфейсних примітивів. Swing же надає

цей набір і не лише це. Він також робить створення GUI легшим за рахунок

вживання набору кордонів (Borders), що надбудовуються, і менеджерів

розміщення (LayoutManagers).

Практично всі компоненти Swing починаються з літери J: JFrame,

JTable, JMenu, JButton, JTextField, JPanel,JLabel тощо.

Назви всіх компонентів очевидні, і схожі з тими, які використовувалися

в AWT. Наприклад, якщо в AWT в ролі вікна верхнього рівня

використовувалося Frame, в Swing в аналогічній ролі використовується

JFrame.

Другою перевагою Swing є зовнішній вигляд ваших додатків. Це

означає, що зовнішній вигляд може динамічно змінюватися. Додаток може

виглядати як Windows, Unix, або Macintosh програма, або ж може мати

вигляд Java програми.

Кожен Swing-додаток повинен використовувати вікно верхнього рівня.

В більшості випадків - це JFrame. Код після створення JFrame демонструє

використання анонімного внутрішнього класу. Потрібні слухачі подій

WindowListener або WindowAdapter для прийняття подій, коли користувач

намагається закрити вікно кнопкою управління вікна (хрестик в правому

верхньому кутку). Є також можливість написати окремий клас, який

розширював би WindowAdapter або успадковував би інтерфейс

WindowListener для закриття вікна.

В даній роботі використовувались наступні компоненти:

JLabel

Page 8: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Мітка (JLabel) – це рядок тексту або зображення, що розміщується в

компоненті. Це один з найпростіших компонентів графічного інтерфейсу. Він

дозволяє задавати вирівнювання тексту (вправо, зліва, по-центру) в середині

компоненту та не має особливих подій, які б асоціювалися з ними.

JButton

 Кнопка генерує подію ActionEvent, коли на неї натискають. Щоб

обробити цю подію в програмі реєструється відповідний обробник

ActionListener, який повинен реалізовувати метод actionPerformed(). Метод

actionPerformed отримує в якості аргумента подію, що відбулася. Крім мітки

на кнопці може бути розміщене зображення. Клас JButton має відповідний

конструктор для задання напису, зображення або обох зразу. Завантаження

зображення здійснює зручний у використанні клас ImageIcon.

JCheckBox

Прапорець (Checkbox) слугує для вибору певної опції. Ви доволі часто

їх зустрічаєте при заповненні різноманітних форм і при користуванні

комп’ютером. Вони мають два стани: вибрано і невибрано (або ввімкнено і

вимкнено). В Swing прапорці реалізовує компонент JCheckBox. При його

створенні необхідно вказати мітку для роз’яснення, що задається в

конструкторі:

bold = new JCheckBox("Bold");

JRadioButton

Радіокнопка — елемент графічного інтерфейсу користувача, що

дозволяє користувачеві вибрати тільки один з елементів набору. Також

застосовується термін перемикач, проте він же часто застосовується і для

прапорців.

Радіокнопки об'єднуються в групи з двох або більше і зображуються

на екрані зазвичай у вигляді круглих отворів, які можуть бути порожні(не

вибрано) або містять точку (обрано). Поряд з кожною радіокнопкою, як

Page 9: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

правило, показані заголовки з описом, що кожен варіант означає. Коли

користувач вибирає котрийсь варіант, то вибір з інших варіантів автоматично

знімається. Вибір варіанту можна зробити, клацнувши кнопкою миші на

радіокнопці або заголовку, а також за допомогою клавіш.

JScrollPane

Для того щоб реалізувати прокручування вмісту існує клас JScrollPane

(Scroll Pane можна перекласти як панель прокрутки). JScrollPane дозволяє в

разі наявності вмісту для прокручування додати вертикальну та

горизонтальну смуги прокрутки (англ. scrollbars), з якими добре знайомий

кожен користувач комп'ютера.

Додавання прокрутки здійснюється доволі просто. Достатньо лише при

створенні екземпляру JScrollPane вказати для якої компоненти потрібні

додати смуги прокрутки. Після чого панель прокрутки додаємо у

відповідний контейнер.

JTabbedPane

За створення вкладок відповідає клас JTabbedPane. Це контейнер з

поміченими вкладками.

Кожна вкладка має ім’я і є звичайним контейнером. Щоб додати

вкладку до JTabbedPane, необхідно викликати метод addTab. Одночасно

показується одна вкладка, всі інші вкладки також завантажені в пам’ять,

тому якщо пам’ять для є критичним ресурсом, то необхідно вжити

відповідних заходів із звільнення пам’яті.

JMenu

Стандартне меню в java реалізоване в класі JMenu. Меню може містити

пункти меню, які можуть містити власні пункти утворюючи підменю. Для

розміщення основного меню в горизонтальну смугу використовується клас

JMenuBar. Рядок меню можна розмістити не тільки зверху вікна, але і знизу і

посередині.

Page 10: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Таким чином спочатку створюється рядок меню:

JMenuBar menuBar = new JMenuBar();

Щоб помістити рядок меню у верхню частину фрейму, пишеться:

frame.SetJMenuBar(menuBar);

Далі залишається заповнити його відповідними пунктами меню. Для

цього для кожного меню створюється свій об’єкт:

JMenu fileMenu=new JMenu(“Файл”);

JMenu editMenu=new JMenu(“Редагувати”);

JDBC драйвер

Java DataBase Connectivity — прикладний програмний інтерфейс Java,

який визначає методи, за допомогою яких програмне забезпечення на Java

здійснює доступ до бази даних. JDBC — це платформо-незалежний

промисловий стандарт взаємодії Java-застосунків з різноманітними СУБД,

реалізований у вигляді пакета java.sql, що входить до складу Java SE.

В основі JDBC лежить концепція так званих драйверів, що дозволяють

отримувати з'єднання з базою даних по спеціально описанному URL.

Драйвери можуть завантажуватись динамічно, тобто під час роботи

програми. Завантажившись, драйвер сам реєструє себе й викликається

автоматично, коли програма вимагає URL, що містить протокол, за який

драйвер відповідає.

JDBC API містить два основні типи інтерфейсів: перший — для

розробників застосунків і другий (нижчого рівня) — для розробників

драйверів.

З'єднання з базою даних описується класом, що реалізує інтерфейс

java.sql.Connection.

Page 11: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Маючи з'єднання з базою даних, можна створювати об'єкти типу

Statement, використовувані для здійснення запитів до бази даних

мовою SQL.

Існують такі види типів Statement, що відрізняються своїм призначенням:

java.sql.Statement — Statement загального призначення;

java.sql.PreparedStatement — Statement, що слугує для

здійснення запитів, котрі містять підставні параметри (позначаються

символом '?' у тілі запиту);

java.sql.CallableStatement — Statement, призначений для

виклику збережених процедур.

Клас java.sql.ResultSet дозволяє легко обробляти результати запитів.

Основні кроки, які потрібно виконати, щоб опрацювати SQL запит

мовою Java:

Зареєструвати JDBC-драйвер

Сформувати JDBC-URL-рядок для отримання з’єднання

з базою.

Отримати Connection

Сформувати SQL запит

Виконання та обробка SQL-запиту

Закрити отримані сполуки (ResultSet, Statament,

Connection)

Розглянемо дані кроки більш детально на прикладі роботи з MySql.

1) Реєстрація JDBC драйвера

Для реєстрації драйвера повинні бути:

JAR-файл з драйвером повинен бути підключений в CLASSPATH.

Повинна бути відома назва класу драйвера, який має бути

підключено.

Після підключення JAR-файлу потрібно зареєструвати драйвер:

String driver="org.gjt.mm.mysql.Driver";

Page 12: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

try{

Class.forName(driver).newInstance();

DriverManager.registerDriver(

(Driver)Class.forName(driver).newInstance());

} catch(Exception e)

{

System.out.println("Exception while register

driver: "+e);

}

2) Формування JDBC URL рядка

У найбільш загальному випадку, цей рядок має вигляд:

jdbc: id_бази: параметри

У випадку MySql, рядок має вигляд:

jdbc: mysql :/ / хост / база? user = користувач

3) Отримання Connection

Для отримання Connection необхідно викликати

DriverManager.getConnection () і передати у вигляді параметрів login,

password та jdbc-url:

String url="jdbc:mysql://127.0.0.1/GENERAL?

user=root";

String user="";

String password="";

Connection c=null;

try{

c=DriverManager.getConnection(url,user,password);

} catch(SQLException e)

{

System.out.println("Exception getting

connection: "+e);

}

4) Формування SQL запиту

Page 13: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

На даному етапі необхідно сформувати звичайну SQL команду,

наприклад:

String str="SELECT * FROM MYTABLE";

String str="INSERT INTO MYTABLE (NAME,CNT) VALUES ('"

+name+"',"+cnt+"')";

5) Виконання та обробка SQL запиту

Для виконання запиту необхідно у Connection отримати Statement і

викликати один з його методів в залежності від типу запиту:public int executeUpdate(String sql) throws SQLException

Застосовується для SQL команд INSERT, UPDATE або DELETE.

Повертає кількість рядків, над якими виконалася операція.public ResultSet executeQuery(String sql) throws

SQLException

Застосовується для SQL команди SELECT. Повертає ResultSet, з якого

можна отримати інформацію. public boolean execute(String sql) throws SQLException

Даний метод повертає true / false – виконався / не виконався запит.

Застосовується в тих випадках, коли SQL запит повертає кілька ResultSet.

Для їх отримання використовується getMoreResults ().

Page 14: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

ОПИС СИСТЕМИ

Загальна структура системи

Система підтримки організації спортивних змагань містить наступні

основні програмні компоненти:

- Стартовий модуль (діалогове вікно)

- Модуль графічного інтерфейсу

- Модуль для роботи з базою даних

- Модуль відслідковування бою

- Модуль жеребкування

- Модуль обробки пар спортсменів

Основний модуль – це модуль графічного інтерфейсу, який

представлений класом Gui.java. Він взаємодіє з іншими модулями та

синхронізує їх роботу.

Клас Gui – це основний клас, який поєднує між собою усі модулі. У

функціях, які реалізовані у даному класі відбувається взаємодія між усіма

допоміжними класами. Також в даному класі реалізовано основне вікно, в

якому працює користувач

В класі Gui реалізовано наступні функції:

createGui() – це функція, в якій присутні інструменти

для взаємодії з користувачем. В ній використовується елементи

бібліотеки Swing, описаний функціонал для кнопок на головному

екрані. Також в ній описані можливості верхнього меню. Через

цю функцію відбувається взаємодія з іншими модулями

програми.

setTable() – функція, яка отримує дані з бази даних та

на їх основі формує таблиці учасників змагань і сортує їх за

категоріями. Згодом сформовані таблиці виводяться на

головному екрані у вкладці «Заявки».

Page 15: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

showPairs() – функція, яка викликається після

завершення процесу жеребкування. Вона формує список з пар

спортсменів та виводить їх на головному екрані. Також вона

забезпечує вибір будь-якої пари для бою.

createPull() – функція, яка на основі вже створених

пар формує турнірні сітки спортсменів та відображає їх на

головному екрані у вкладці «Пуля».

pullUpdate() – функція, яка оновлює турнірні сітки

після кожного завершеного бою і додає туди переможців.

Клас Dialog містить одну функцію DialogWorker(). В ній реалізовані

необхідні інструменті засоби для обрання користувачем типу змагань та

категорії, за якими потрібно сортувати учасників.

В класі SQL_Worker – реалізовані функції для з’єднання, роз’єднання

та роботи з базою даних. Для реалізації даних функцій використовується

JDBC драйвер.

SQL_Parser() – функція, яка під’єднується до бази

даних і заповнює таблицю зі спортсменами. В ній реалізований

парсер, який обробляє дані з документу Microsoft Word, сортує їх

та додає до бази даних. Дані з документу передаються через

конструктор класу SQL_Worker(), і далі SQL_Parser() має до них

доступ. Якщо даних немає або доступ до бази даних заборонено,

дана функція виводить помилку.

SQL_Clear() – функція, яка очищує усі таблиці в базі

даних та готує їх до нових змагань.

SQL_Update() – функція, що надає можливість

редагувати дані в таблицях бази даних.

getQuery() – функція, яка отримує дані з бази даних і

повертає їх у вигляді ResultSet. Запит до бази даних необхідно

передати через параметри даної функції.

setQuery() – функція, що відправляє будь-які запити

до бази даних, крім тих, які повертають результат.

В класі Gereb.java реалізовані функції для жеребкування спортсменів.

Page 16: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Parser() – функція, яка опрацьовує код категорії

учасників та повертає лише тих спортсменів, які входять до

даної категорії.

setGereb() – функція, яка виконує жеребкування

спортсменів з однієї категорії. Вона бере зі списку учасників

довільного спортсмена. Для цього використовуються допоміжні

функції з класу Random. Потім вона обирає ще одного учасника

зі списку та порівнює цих двох спортсменів між собою.

Спортсмени повинні знаходитись в однакових вагових

категоріях, мати однакові спортивні досягнення, бути з різних

спортивних клубів або тренуватись у різних тренерів. Якщо дані

умови виконані, з цих спортсменів формується пара, яка

зберігається в базі даних у таблиці pairs.

getArr() – функція, яка повертає список усіх пар

учасників.

У класі Pair реалізовані функції, що відповідають за обробку пар

спортсменів. В даному класі реалізовані функції setPlayer1() та setPlayer2()

для завдання імен першого і другого спортсмена. Функції setSC1() та setSC2()

задають спортивні клуби для першого та другого спортсменів. Також існують

методи, які повертають усі дані: getPL1(),getPL2(),getSC1(),getSC2().

В класі Game реалізовані функції, які дозволяють начисляти бали під

час бою, підраховувати бали, виявляти переможця. Також в даному класі

описаний таймер, який відраховує час кожного раунду. В підпункті «Бали» є

поле, куди користувач вводить час раунду у хвилинах. Програма переводить

це число в мілісекунди та створює таймер, який відраховує цей час. Коли час

в таймері спливає, програма підраховує кількість балів та виявляє переможця

раунду.

Функції для додавання та віднімання балів:

- PlusPL1Score()

- PlusPL2Score()

- MinusPL1Score()

Page 17: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

- MinusPL1Score()

Для опису таймера використовується функція setRaundTime(). Для

виявлення імені переможця використовується функція getWinner(). Для

виявлення спортивного клубу переможця використовується функція

getClubWinner().

Усі взаємодії між модулями виконуються в головному класі Gui.

Графічний інтерфейс

Перше вікно дозволяє користувачеві зробити вибір типу бою та вагові,

вікові категорії (рис. 3.2.). Ця можливість реалізована в діалоговому вікні.

Далі після натискання кнопки «Обрати» програма переходить на основне

вікно, в якому будуть виконуватись подальші дії. Наступне вікно відображає

таблиці учасників змагань, список пар, турнірні сітки учасників та

інструментальні засоби для керування боєм. Відображення всіх даних

розбито на 3 підгрупи (підпункти меню):

1. Бали

2. Пуля

3. Заявки

В підпункті «Заявки» відображаються відсортовані за категоріями

таблиці учасників змагань . Дані в таблицях можна редагувати. Для цього

реалізовані кнопки «Оновити» над кожною таблицею. В меню «Файл» є

пункт «Очистити поле», який видаляє усі дані з підпункту «Заявки». Для

нового перегляду даних потрібно в меню «Файл» натиснути «Показати

таблиці».

В підпункті «Пуля» зображено турнірні сітки учасників. Вони

з’являються в даному полі після виконання жеребкування. Для цього

потрібно в меню «Жеребкування» натиснути «Почати жеребкування», а

потім - «Відобразити». Також у верхній частині вікна реалізована кнопка

«Редагувати пулю». Вона необхідна для внесення поправок у турнірні сітки.

Page 18: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

У підпункті «Бали» зображені дані двох спортсменів, а саме ім’я та

спортивний клуб (рис. 3.5.). Під іменами реалізовані кнопки для додавання та

віднімання балів під час бою. Цими кнопками користується лише суддя, і їх

не видно на моніторах з даними. У хортингу існують три вирішальних

прийоми:

- Больовий;

- Нокдаун;

- Удушення;

Навпроти цих трьох написів реалізовані кнопки «Stop», які зупиняють

бій і зараховують перемогу спортсмену, що виконав прийом. Існують також

ще 3 простих прийоми:

- Утримання;

- Нокаут;

- Кидок;

Напроти цих прийомів реалізовані кнопки «+» та «-», які додають або

віднімають бали за їх виконання.

У верхній частині вікна також реалізовані три кнопки «Екран1»,

«Екран2» та «Екран 3». З їх допомогою строюються три окремі вікна з

зображенням даних спортсменів, що змагаються, поточний рахунок, номер

раунду та час, який залишився до кінця раунду (рис. 3.6.).

Page 19: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

База даних

База даних повинна бути зручною в користуванні. Вона складається з

двох таблиць. Ці таблиці автоматично створюються в програмі при їх

відсутності. Підключення до бази даних та вибір таблиці також виконується

автоматично.

Перша – це таблиця зі спортсменами, які приймають участь в

змаганнях. Друга – це таблиця з вже готовими парами учасників. Програма

працює з базою даних, використовуючи JDBC драйвер. У даній розробці

існують інструменти для додавання, видалення та оновлення даних. Всі

інструменти реалізовані в класі SQL_Worker. Також всі дані, які зберігаються

в БД, можна переглянути в самій програмі.

Перша таблиця sportsmen заповнюється на етапі читання даних з

документу. В таблиці 8 полів (рис. 4.1.):

1. Ідентифікатор спортсмена

2. Дані спортсмена

3. Спортивний клуб, який він представляє

4. Спортивний розряд

5. Вік

6. Вага

7. Дані тренера

8. Стать

В документі заявка оформлена у вигляді таблиці, тому алгоритм

заповнення бази даних має наступний вигляд:

програма відкриває документ із заявкою

проходить по кожній комірці таблиці і зчитує інформацію

зберігає отриману інформацію у буфері.

як тільки один рядок таблиці прочитано, вона зберігає дані з

буфера у базу даних

Page 20: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

очищує буфер

переходить на новий рядок таблиці.

дана процедура повторюється до тих пір, поки таблиця із

заявками не закінчиться.

Дані для другої таблиці формуються на етапі жеребкування. Ця

таблиця має 6 полів :

1. Ідентифікатор пари

2. Гравець №1

3. Гравець №2

4. Спортивний клуб гравця №1

5. Спортивний клуб гравця №2

6. Категорія обох гравців

Утворені під час жеребкування пари спортсменів записуються до

таблиці. Потім програма використовує дані для формування турнірних сіток.

Під час змагань з’являються нові пари. Вони автоматично зберігаються у базі

даних. Коли пара закінчила бій і визначені переможці, вона видаляється з

таблиці pairs. В кінці змагань в даній таблиці не повинно залишитись жодної

пари.

Логіка програми

Основна логіка програми полягає у виконанні процедур сортування та

жеребкування спортсменів. Вона здійснюється за правилами даного виду

спорту. Під час жеребкування враховуються особисті дані спортсмена, а

також його поточний рейтинг.

1. Процес сортування

В діалоговому вікні користувач обирає ті категорії,

які будуть приймати участь у даних змаганнях.

Кожна з категорій отримує свій код (рис. 4.3.).

У коді категорії зберігаються наступні дані:

1. Мінімальний вік категорії

Page 21: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

2. Максимальний вік

3. Мінімальні вага

4. Максимальна вага

Після літери «y» у коді відображені мінімальний та максимальний

вік для даної категорії. Після літери «w» відображена мінімальна та

максимальна вага. Якщо максимального порогу ваги немає, то після коми

залишається пустий рядок. Даний код спрощує процес сортування та

полегшує передачу даних з діалогового вікна у основне вікно, у клас Gui.

Отриманий код передається в основне вікно в клас

Gui.

Функція setTable() реалізує обробку усіх кодів, в

результаті чого програма отримує мінімальний та максимальний

вік категорії, а також мінімальну та максимальну вагу.

На основі цих даних виконується запит до таблиці

sportsmen бази даних.

Отримані з бази даних дані групуються у таблиці та

виводяться на екран в поле «Заявки».

На етапі формування таблиць також враховується стать, адже для

хлопців та дівчат створюються окремі таблиці.

2. Процес жеребкування:

Зі списку учасників обирається довільний спортсмен.

Для цього використовуються допоміжні функції з класу Random.

Обирається ще один учасник зі списку

Порівнюються ці два спортсмени між собою

Умови порівняння:

1. спортсмени повинні знаходитись в однакових вагових

категоріях

2. мати однакові спортивні досягнення (ранг)

3. бути з різних спортивних клубів

4. тренуватись у різних тренерів.

Якщо умови виконані, з цих спортсменів формується

пара, яка зберігається у таблиці pairs бази даних.

Page 22: scs.fpm.kpi.uascs.fpm.kpi.ua/sites/default/files/files/КорнєвЯД.doc  · Web viewНАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ «КИЇВСЬКИЙ

Пункти 1-4 повторюються до тих пір, поки не

досягнуто кінця списку учасників.

При непарній кількості учасників змагань, останній учасник проходить

без пари і записується в таблицю pairs один.