Розробка програми "Музеї Дрогобичини"

курсовая работа

1. Огляд літературних джерел

1.1 Обґрунтування вибраної мови програмування

Java (вимовляється Джава; у розмовному варіанті Ява) - обєктно-орієнтована мова програмування, випущена компанією SunMicrosystems у 1995 році як основний компонент платформи Java. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи. Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу обєктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки обєктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. За необхідності таких дій java дозволяє викликати підпрограми, написані іншими мовами програмування.

У створенні мови програмування Java було чотири початкових цілей:

1. Синтаксис мови повинен бути "простим, обєктно-орієнтовним та звичним".

2. Реалізація має бути "безвідмовною та безпечною", а також "високопродуктивною".

3. Повинна зберегтися "незалежність від архітектури та портативність".

4. Мова має бути "динамічною, інтерпретованою та підтримувати мульти-опрацьовування".

Під "незалежністю від архітектури" мається на увазі те, що програма, написана на мові Java, працюватиме на будь-якій підтримуваній апаратній чи системній платформі без змін у початковому коді та перекомпіляції. Цього можна досягти, компілюючи початковий Java код у байт-код, який являє собою спрощені машинні команди. Потім програму можна виконати на будь-якій платформі, що має встановлену віртуальну машину Java, яка інтерпретує байт код у код, пристосований до специфіки конкретної операційної системи і процесора. Зараз віртуальні машини Java існують для більшості процесорів і операційних систем. Стандартні

бібліотеки забезпечують загальний спосіб доступу до таких платформо залежних особливостей, як обробка графіки, багатопотоковість та роботу з мережами. У деяких версіях задля збільшення продуктивності JVM, байт-код можна компілювати у машинний код до або під час виконання програми. Основна перевага використання байт-коду - це портативність. Тим не менш, додаткові витрати на інтерпретацію означають, що інтерпретовані програми будуть майже завжди працювати повільніше, ніж скомпільовані у машинний код, і саме тому Java одержала репутацію "повільної" мови. Швидкість офіційної віртуальної машини Java значно покращилася з моменту випуску ранніх версій, до того ж, деякі випробування показали, що продуктивність JIT компіляторів у порівнянні зі звичайними компіляторами у машинний код майже однакова. Проте ефективність компіляторів не завжди свідчить про швидкість виконання скомпільованого коду, тільки ретельне тестування може виявити справжню ефективність у даній системі.

1.2 Опис методів та алгоритмів вирішення задачі

AWT визначає вікна згідно ієрархії класів, яка з кожним рівнем додає функціональні можливості і специфіку. Два найбільш загальних типу вікон є похідними від типу panel, який користується аплетами, і від типу Frame, який створює стандартне вікно. Багато що з функціональних можливостей цих вікон отримане від їх батьківських класів. Опис ієрархії, що має відношення до цих двох класів, фундаментально для їх розуміння.

Клас Component

Самий верхній в AWT-ієрархії - клас component. Це абстрактний клас, який інкапсулює всі атрибути візуального компоненту. Всі елементи інтерфейсу користувача, які відображені на екрані і взаємодіють з користувачем, - це підкласи component. У класі component визначена більше сотні public-методів, які є відповідальними за управління подіями, такими як введення за допомогою миші і клавіатури, позиціонування і зміна розмірів вікна, перемальовування і т. л. (багато хто з цих методів вже використовувався при створенні аплетів в розділах 19 і 20). Обєкт класу component відповідає за запамятовування поточних квітів переднього плану і фону і вибраного текстового шрифту.

GUI Builder в середовищі IDE дозволяє створити професійний графічний інтерфейс користувача, не вимагаючи глибоких знань щодо законів і правив роботи диспетчерів компоновки. Проектування форм здійснюється шляхом простої вставки елементів в необхідних місцях.

Клас Container

Клас Container є підкласом Component. Він містить додаткові методи, які дозволяють вкладати в нього інші component-обєкти. Усередині класу container можуть зберігатися і його власні обєкти. Це робить Container системою багаторівневого включення. Контейнер відповідає за розміщення (тобто позиціонування) будь-яких компонентів, які він містить. Він робить це за допомогою різних менеджерів компоновки (розміщення)

Клас Panel

Клас Panel - конкретний підклас Container. Він не додає яких-небудь НОВИХ методів. Це ПРОСТО реалізація Класу Container. Про Panel МОЖНА мислити як про конкретний екранний компонент, що рекурсивно вкладається. Panel - суперкласс для Applet. Коли екранний вивід прямує до ап плету, він малюється на поверхні обєкту Panel. По суті, обєкт Panel - це вікно, яке не містить області заголовка, рядка меню і обрамлення. Ось чому, коли аплет виконується всередині браузера, ви не бачите ці елементи. Якщо аплет виконується за допомогою утиліти проглядання аплетів (appletvicwer), то заголовок і обрамлення такого вікна забезпечується самою утилітою.

До Panel-обєкту можна додати інші компоненти за допомогою методу add про (успадкованого з container). Як тільки ці компоненти додані, ви можете позиціонувати і змінювати їх розміри уручну, використовуючи методи setlocaticnf), setsizeo або setsoundso. визначені в Component.

Клас Window

Клас Window створює вікно верхнього рівня. Вікно верхнього рівня не міститься в будь-якому іншому обєкті. Воно знаходиться безпосередньо на Робочому столі. Взагалі, ви не створюватимете window-обєкти безпосередньо. Замість цього, ви використовуватимете підклас Window з імям Frame.

Клас Frame

Клас Frame інкапсулює те, що зазвичай представляють як "вікно" 1. Це підклас window і його вікно має рядок заголовка, рядок меню, оздоблення і кути, що змінюють розміри вікна. Якщо ви спробуєте створити в аплеті обєкт типу Frame, то він буде містити повідомлення виду "Warning: Applet Window", яке говорить про те, що вікно було створено аплетом. Це повідомлення попереджає користувачів, що вікно, яке вони бачать, було запущено аплетом, а не програмним забезпеченням, що виконуються на їх компютері.

Для того, що створити головне вікно програми я скористався методом:

JFrame. Основні властивості JFrame:

§ setSize (intnewWidth, intnewHeight) - задає для створюваного вікна;

§ setVisible (booleanvisible) - забезпечує видимість для створюваного вікна;

§ setTitle (StringnewTitle) - задає заголовок для створюваного вікна;

§ setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE) - забезпечує повне закриття програми;

§ setLayout (new layout) - установлює простий менеджер розмітки, що впорядковує всі компоненти.

Клас Button

Кнопки (buttons) зазвичай відомі як невідємна частина будь-якого GUI. Кнопка - найпростіший засіб заманити до засідки дію користувача.

Щоб створити кнопку зробіть наступні кроки:

1. Створіть елемент buttons переважно з міткою, що вказує на її призначення.

2. Вирішіть, де розмістити кнопку на екрані.

3. Відобразіть її на екрані.

Ми можемо створювати кнопки в Java, застосовуючи один з наступних конструкторів:

§ Button (): Створює нову кнопку.

§ Button (string text): Створює нову кнопку с ладанною стрічкою.

Ми використовуєм методи setLabel () и getLabel (),щоб встановити та отримати мітки кнопки відповідно.

Клас Label

Мітка взагалі використовується, щоб вказати призначення (назву) елементу. Так само мітки в GUI вказують призначення інших GUI елементів подібно до textbox, listbox и т.і. Вони не є досяжними для редактування користувачами та взагалі використовуються, щоб вказати призначення інших компонентів на екрані. Наприклад, якщо ми просто розміщуєм textbox на екрані, очікуючи від користувача, коли він введе назву, як користувач може знати, що він вводити в елемент textbox? В такому випадку, якщо б ми використовували мітку "Назва" поруч з textbox, було б дуже просто розуміти мету текстового поля.

Клас Label в Java використовується, щоб створити текстову мітку на екрані. Мітки можуь бути створені з використанням одного з наступних конструкторів:

§ Label (): Створює пусту мітку;

§ Label (String label text): Створює мітку з даним текстом;

§ Label (String labeltext, int alignment): Створює мітку з даним вирівнюванням, де вирівнювання може бути Label. LEFT, Label. RIGHT або Label. CENTER.

1.3 Обґрунтування вибору базового рішення

Eclipse - це розширюване середа розробки (Integrated Development Environment, далі IDE) з відкритим вихідним кодом (далі OpenSource) із застосуванням Java. Проект був запущений в листопаді 2001 року, коли IBM передала вихідний код свого Websphere Studio Workbench вартістю 40 мільйонів доларів на OpenSource і сформувала консорціум Eclipse для управління триваючої розробкою.

Мета створення Eclipse була сформульована таким чином: "розробити багату, повнофункціональну індустріальну платформу комерційної якості для розробки сильно - інтегрованих інструментів". Для досягнення цієї мети консорціум націлений на три головних проекту:

1. Проект The Eclipse (http://www.eclipse.org/eclipse/index.html) безпосередньо Eclipse IDE ("платформи", що містить і виконуючою інструменти Eclipse), інструментів розробки для Java (Java Development Tools, далі JDT) і середовища розробки Plug - In (Plug - In Development Environment, далі PDE), що дозволяють розширювати платформу.

2. Проект Eclipse Tools (http://www.eclipse.org/tools/index.html) має своєю метою створення інструментів для платформи Eclipse (у поточній розробці знаходяться підпроекти створення IDE для Cobol, IDE для C / C + +, а також інструменту для побудови EMF моделей).

3. Проект The Eclipse Technology (http://www.eclipse.org/technology/index.html) відповідальний за технологічні розробки, еволюцію і навчання використанню платформи Eclipse.

Платформа Eclipse в поєднанні з JDT включає багато з можливостей, які включаються в комерційні IDE: редактор з підсвічуванням синтаксису, інкрементальних компіляція коду, потокобезпечна відладчик, навігатор по

класах, менеджери файлів і проектів, а також інтерфейси до стандартних систем контролю вихідних текстів, таким як CVS і ClearCase.

Проект Eclipse являє собою першу настільки потужно підтриману світовим IT - спільнотою спробу створення єдиної відкритої інтегрованої платформи розробки додатків, що володіє надійністю, функціональністю і рівнем якості комерційного продукту. Фактично ця платформа призначена для всього і ні для чого конкретно: вона являє собою основу, що має блочну структуру і інтегруючу інструменти розробки ПО різних виробників для створення додатків на будь-якій мові, з використанням будь-яких технологій і для будь програмної платформи. Навколо проекту Eclipse в даний час сформовано співтовариство найбільших IT - компаній, серед яких Borland, IBM, SAP AG, RedHat та інші.

Також Eclipse пропонує безліч унікальних можливостей, наприклад рефакторінг коду (http://www.refactoring.com), автоматичне оновлення/встановлення коду (за допомогою Менеджера Оновлень), список поточних завдань, налагодження модулів за допомогою JUnit (http://www.junit.org) та інтеграцію з інструментом компоновки Jakarta Ant (http://jakarta. apache.org/ant/index.html).

Незважаючи на велику кількість стандартних можливостей, Eclipse відрізняється від традиційних IDE по ряду особливостей. Напевно найцікавіше в Eclipse те, що вона повністю незалежна від платформи і мови. Крім мов, підтримуваних консорціумом зараз (Java, Cobol, C/C++), ведуться розробки по додаванню в Eclipse підтримки таких мов, як Python, Eiffel, PHP, Ruby, і C#.

Консорціум надає готові виконувані файли для Windows, Linux, Solaris, HP-UX, AIX, QNX і Mac OS X. Великий інтерес в Eclipse являє plug-in архітектура, а також багатий API, що надається PDE, що дозволяє розширювати Eclipse. Додавання підтримки для нового редактора, подання або мови програмування є досить простим, завдяки грамотно розробленим API і великим будівельним блокам, що надаються Eclipse.

Враховуючи сотні проектів по розробці plug-in, що ведуться в даний час, таких індустріальних гігантів як IBM, HP і Rational, що надають ресурси, а також проектних важковаговиків начебто Erich Gamma, що допомагають спрямовувати процес еволюції в потрібне русло - у Eclipse велике майбутнє.

2. Спеціальна частина

2.1 Основні функції програмного продукту

Основними функціями курсової роботи на тему "Музеї Дрогобичини" є:

§ Можливість перегляду інформації про програму та розробника;

§ Доступ до різних частин комплексу музею;

§ Виведення інформації про Музей І. Франка, садибу Франків;

§ Супроводження текстового матеріалу графічними файлами;

§ Ознайомлення з історією та творами І. Франка.

2.2 Структура програмного продукту

Розроблена мною програма має таку структуру:

v Головний пакет Main:

• Клас menu. java, що є головним вікном програми, у якому реалізовані всі основні функції програми, а також розміщене головне меню для звязку з іншими вікнами програми та підключені усі необхідні програмі пакети та бібліотеки;

• Клас about_info. java вікно про програму;

• Клас info_prog. java вікно про розробника.

v Під пакет Main. Autobiography:

• Клас transition_frank. java - вікно переходу між Автобіографією та творчістю;

• Клас art_frank. java - Творчість І. Франка;

• Клас life_frank. java - Автобіографія І. Франка;

• Клас lib_frank. java - Бібліотека (твори) І. Франка.

v Під пакет Main. Paths:

• Клас paths_frank. java - стежки І. Франка;

• Клас lawn_frank. java - Галявина казок;

• Клас museum_frank. java - Музей ім.І. Франка;

• Клас home_frank. java - садиба (дім) сімї Франка.

v Під пакет Main. Village:

• Клас hist_naguev. java - історія с. Нагуєвичі;

• Клас graph_naguev. java - графік роботи Музею;

• Клас route_naguev. java - шлях до Музею.

v Під пакет Main. Gallery:

• Клас home_gallery. java - всі зображення з садиби І. Франка;

• Клас museum_gallery. java - всі зображення з Музею;

v Під пакет (пакет із зображеннями) Main. images: В ньому розміщенні всі зображення які використовуються в програмі.

v Під пакет (пакет із текстом) Main.html: В ньому розміщені документи типу - html для виведення текстової інформації в програмі.

v Катало resources який розміщений в кореневому каталозі програми.

Основні компоненти, які були використані в програмі: JFrame; JLabel; JButton; JPanel; JTextArea; JEditorPane; JMenu;

Менеджери компоновки: GridLayout, FlowLayout.

2.3 Розробка алгоритму

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

UML (англ. Unified Modeling Language) - уніфікована мова моделювання, використовується у парадигмі обєктно-орієнтованого програмування. Є невідємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, називаної UML-моделлю. UML був створений для визначення, візуалізації, проектування й документування в основному програмних систем. UML не є мовою програмування, але в засобах виконання UML-моделей як інтерпретованого коду можлива кодогенерація.

На діаграмі зображено структуру класів програми та перераховані основні методи і атрибути.

Рис.3.3.1 UML діаграма програми "Музеї Дрогобичини"

2.4 Розробка програми

Для реалізації даної програми я використав стандартні компоненти модуля AWT до них відносяться JFrame, JLabel, JButton, JPanel, JTextArea, JEditorPane, JMenu.

Для компоненти JFrame найчастіше використовувалися такі властивості:

JFrame frm =new JFrame (); // Створення вікна (фрейму).

frm. setSize (1000,910); // Задання початкових розмірів вікна.

frm. setResizable (true); // Дозвіл на зміну розміра вікна (true або false).

frm. setTitle ("Назва вікна"); // Задання заголовку вікна.

frm. setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE); // або

frm. setDefaultCloseOperation (JFrame. DISPOSE_ON_CLOSE);

// Спосіб закриття вікна (Exit - повністю закриває програму, Dispose - закриває тільки дане вікно).

frm. setLayout (new FlowLayout ()); // Задання менеджера компоновки.

frm_menu. setLocationRelativeTo (null); // Задання початкового розташування вікна (null - по середині екрану).

frm_menu. setVisible (true); // Вснановлюємо видимість, тим самим показуючи вікно на екрані.

Для компоненти JPanel найчастіше використовувалися такі властивості:

JPanel panel1=new JPanel (); // Створення пеналі.

panel1. setLayout (G_Layout); // Задання менеджера компоновки.

frm. add (panel1); // Додає панель на головне вікно програми;

Для компоненти JLabel найчастіше використовувалися такі властивості:

JLabel label1=new JLabel (); // Створення тексове поле JLabel.

labe1. setFont (font); // Встановлення тексту для текстового поля;

labe1. addMouseListener (new MouseListener () {

public void mouseClicked (MouseEvent e)

{ new Main. Gallery. home_gallery ();

} // Створення обробника події при натисненні на текстове поле.

Для компоненти JButton найчастіше використовувалися такі властивості:

JButton btn2 = new JButton (""); // Створення кнопки.

btn2. setIcon (icon2); // Додає до кнопки іконку.

btn2. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. home_frank ();

}}); // Створення обробника події при натисненні на кнопку.

Для компоненти JTextArea найчастіше використовувалися такі властивості:

JTextArea info_textarea = new JTextArea (30,40); // Створення текстового поля, задання початкових розмірів.

StringBuffer contents = new StringBuffer ();

BufferedReader reader = null;

try { reader = new BufferedReader (new FileReader ("resourcesdovid_inform. txt"));

String text = null;

while ( (text = reader. readLine ())! = null) {

contents. append (text). append (System. getProperty ("line. separator")); }}

catch (FileNotFoundException e1) {

e1. printStackTrace (); }

catch (IOException e1) {

e1. printStackTrace (); } finally {

try { if (reader! = null) {

reader. close (); }}

catch (IOException e1) {

e1. printStackTrace (); }} // Зчитування з документа "dovid_inform. txt" текста та запис його в буфер памяті.

info_textarea. setFont (font);

// Встановлення тексту для текстового поля;

info_textarea. setText (contents. toString ()); // Вставлення з буферу памяті в текстове поле тексту.

info_textarea. setEditable (false); // Задання дозволу на редагування текстового поля.

Для компоненти JEditorPane найчастіше використовувалися такі властивості:

JEditorPane pane1= new JEditorPane (); // Створення компоненти для читання html - документів.

String path1 = "HTML/life_frank.html";

java.net. URL URL = menu. class. getResource (path1);

try { pane1. setPage (URL); }

catch (IOException e1) {} // Знаходження шляху до документа та відкриття його на компоненті JEditorPane.

Для компоненти JMenu найчастіше використовувалися такі властивості:

JMenuBar main_menu = new JMenuBar (); // Створення меню верхнього рівня.

JMenu menu_frank = new JMenu ("Іван Франкo"); // Створення пункту меню.

JMenuItem life_frank = new JMenuItem ("Автобіографія"); // Створення обєкта, що реалізовує пункт меню

life_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Autobiography. life_frank ();

}}); // Створення обробника події при натисненні на кнопку меню.

Для знаходження та використання зображень я зробив такі дії:

String path = "images/komp_saduba. jpg";

java.net. URL imgURL = menu. class. getResource (path); // Встановлення шляху до зображення.

ImageIcon icon = new ImageIcon (imgURL);

btn. setIcon (icon); // Використання самого зображення.

2.5 Інструкція користувачу

Для того, щоб відкрити програму потрібно скористатися файлом "Musuem. jar" двічі натиснувши ПКМ (Правої кнопки миші) по іконці. Після запуску програми зявиться головне вікно програми. При запуску програми по замовчуванню відкривається звичайний режим роботи, він виглядає наступним чином:

Рис.2.5.1 (Головне вікно)

При натисканні ПКМ по іконці "Музей ім. Івана Франка" (яка знаходиться в головному вікні) зявиться вікно "Музей Івана Франка" (Рис.2.5.2).

Рис.3.5.2 (Музей Івана Франка)

В центрі вікна "Музей Івана Франка" знаходиться кнопка "Галерея музею" при натисканні по ньому ПКМ відкриється відповідне вікно з усіма зображеннями із музею. (Рис.2.5.3).

Рис.2.5.3 (Галерея Музею)

При натисканні ПКМ по іконці "Садиба І. Франка" (яка знаходиться в головному вікні) зявиться вікно "Садиба Івана Франка" (Рис.3.5.4).

Рис.2.5.4 (Садиба Івана Франка)

В центрі вікна "Садиба І. Франка" знаходиться кнопка "Галерея садиби" при натисканні по ньому ПКМ відкриється відповідне вікно з усіма зображеннями із садиби. (Рис.2.5.5).

Рис.2.5.5 (Галерея садиби)

При натисканні ПКМ по іконці "Галявина казок" (яка знаходиться в головному вікні) зявиться вікно "Галявина казок" (Рис.2.5.6).

Рис.2.5.6 (Галявина казок)

При натисканні ПКМ по іконці "Стежки І. Франка" (яка знаходиться в головному вікні) зявиться вікно "Стежки І. Франка" (Рис.2.5.7).

Рис.2.5.7 (Галявина казок)

При натисканні ПКМ по іконці "Іван Франко" (яка знаходиться в головному вікні) зявиться вікно "Іван Франко"

При натисканні ПКМ на кнопці "Автобіографія" відкриється відповідне вікно з автобіографією письменника. При натисканні ПКМ на кнопці "Творчість" відкриється відповідне вікно з відомими творами письменника

З вікна "Творчість Івана Франка" натиснувши ПКМ на кнопку "Більше Літератури" можна перейти в вікно "Бібліотека музею" з Інтернет посиланнями на твори Івана Франка.

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

Ш Вкаладка Музей:

· Музей>Комплекс музею (Рис.2.5.2).

· Музей>Комплекс садиби (Рис.2.5.4).

· Музей>Галявина казок (Рис.2.5.6).

· Музей>Стежки І. Франка (Рис.2.5.7).

· Музей>Бібліотека.

· Музей>Вихід - закриття програми і всіх вікон.

Ш Вкладка Іван Франко:

· Іван Франко>Автобіографі.

· Іван Франко>Творчість.

Ш Вкаладка Галерея зображень:

· Галерея зображень>Галерея музею.

· Галерея зображень>Галерея садиби.

Ш Вкладка Місце знаходження:

· Місце знаходження>с. Нагуєвичі (с. Івана Франка) >Історія - відкриває вікно з історією створення с. Нагуєвичі.

· Місце знаходження>с. Нагуєвичі (с. Івана Франка) >Маршут - відкриває вікно з маршутом з міста Львова до с. Нагуєвичі.

· Місце знаходження>с. Нагуєвичі (с. Івана Франка) >Графік роботи - відкриває вікно з графіком роботи музею

Ш Вкладка Допомога:

· Допомога>Про програму

· Допомога>Про розробника

2.6 Результати тестування

Курсова робота "Музеї Дрогобичини" тестувалася на компютері з характеристиками:

Процесор: AMD Athlon 64 X2 4400+ 2.32GHz

Память: 2.0 GB RAM

HDD: 250 Гбайт.

Відеокарта: NVIDIA Geforce 9600GT 1Gb

Також програма тестувалася на компютері з наступними характеристиками:

Процесор: Intel Atom 1.6 GHz

Память: 1.0 Gb RAM

HDD: 80 Гбайт

Відеокарта: Integrated 64 Mb

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

Всі функції працюють коректно.

Загальний обєм програми: 5.12 Mb (разом з графікою та веб-сторінками).

Розмір *. jar файлу: 2.41 Mb.

Висновок

В курсовій роботі була розроблена програма по ознайомленню з одним із музеїв Дрогобичини, музеєм ім. Івана Франка.

Повна реалізація була здійснена на мові Java, середовище розробки Eclipce. Середовищем функціонування програми є ОС Microsoft Windows

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

При розробці були врівноважені функціональність та простота використання інтерфейсу програми, а також, враховані всі поставлені завдання і створені необхідні функції.

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

Програма не є привязаною до конкретних локальних дисків дисків, що дозволяє її коректне перенесення на довільний ПК.

Програма не вимагає підключення до всесвітньої мережі Інтернет, тому що використовує статичні веб-сторінки.

Користувач має можливість перевірити знання за допомогою тестування.

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

Список використаної літератури

1. Нотон П. JAVA: Справ. руководство: Пер. с англ. /Под ред.А. Тихонова. - М.: БИНОМ: Восточ. Кн. Компания, 1996: Восточ. Кн. Компания. - 447с. - (Club Computer)

2. Патрик Нотон, Герберт Шилдт Полный справочник по Java. - McGraw-Hill, 1997, Издательство "Диалектика", 1997

3. ДэвидФлэнэген Java in a Nutshell. - OReilly & Associates, Inc., 1997, Издательскаягруппа BHV, Киев, 1998

4. Ренеган Э. Дж. (мл.) 1001 адрес WEB для программистов: Новейший путеводитель программиста по ресурсам World Wide Web: Пер. с англ. - Минск: Попурри, 1997. - 512с. ил.

5. Сокольский М.В. Все об Intranet и Internet. - М.: Элиот, 1998. - 254с. ил.

6. Чен М.С. и др. Программирование на JAVA: 1001 совет: Наиболее полное руководство по Java и Visual J++: Пер. с англ. /Чен М.С., Грифис С.В., Изи Э.Ф. - Минск: Попурри, 1997. - 640с. ил. + Прил. (1диск.)

Додаток

Файл menu. java:

package Main;

import java. awt. FlowLayout;

import java. awt. Font;

import java. awt. GridLayout;

import java. awt. event. ActionEvent;

import java. awt. event. ActionListener;

import javax. swing. *;

public class menu implements ActionListener {

menu () {

final JFrame frm_menu=new JFrame ();

frm_menu. setSize (1000,910);

frm_menu. setResizable (true);

frm_menu. setTitle ("Музей ім. Івана Франка");

frm_menu. setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);

frm_menu. setLayout (new FlowLayout ());

GridLayout G_Layout = new GridLayout (4,4,4,5);

JPanel panel1=new JPanel ();

panel1. setLayout (G_Layout);

String path2 = "images/komp_saduba. jpg";

java.net. URL imgURL2 = menu. class. getResource (path2);

ImageIcon icon2 = new ImageIcon (imgURL2);

// Кнопка "садиба І. Франка"

JButton btn2 = new JButton ("");

btn2. setIcon (icon2);

frm_menu. add (btn2);

panel1. add (btn2);

btn2. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. home_frank ();

}});

JLabel label1=new JLabel ();

panel1. add (label1);

String path3 = "images/halayvuna_kazok. jpg";

java.net. URL imgURL3 = menu. class. getResource (path3);

ImageIcon icon3 = new ImageIcon (imgURL3);

// Кнопка "Галявина Казок"

JButton btn3 = new JButton ("");

btn3. setIcon (icon3);

btn3. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. lawn_frank ();

}});

// ------------------------

JLabel label2=new JLabel ();

panel1. add (label2);

// ------------------------

String path = "images/Muzey. jpg";

java.net. URL imgURL = menu. class. getResource (path);

ImageIcon icon = new ImageIcon (imgURL);

// Кнопка "Музей"

JButton btn1 = new JButton ("");

btn1. setIcon (icon);

frm_menu. add (btn1);

panel1. add (btn1);

btn1. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. musuem_frank ();

}});

// ------------------------

JLabel label3=new JLabel ();

panel1. add (label3);

// ------------------------

String path5 = "images/stegku. jpg";

java.net. URL imgURL5 = menu. class. getResource (path5);

ImageIcon icon5 = new ImageIcon (imgURL5);

// Кнопка "Стежки"

JButton btn5 = new JButton ("");

btn5. setIcon (icon5);

frm_menu. add (btn5);

panel1. add (btn5);

btn5. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. paths_frank ();

}});

// ------------------------

JLabel label4=new JLabel ();

panel1. add (label4);

// ------------------------

String path4 = "images/Ivan_Franko. jpg";

java.net. URL imgURL4 = menu. class. getResource (path4);

ImageIcon icon4 = new ImageIcon (imgURL4);

// Кнопка "І. Франко"

JButton btn4 = new JButton ("");

btn4. setIcon (icon4);

frm_menu. add (btn4);

panel1. add (btn4);

btn4. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Autobiography. transition_frank ();

}});

// ------------------------

frm_menu. add (panel1);

// ------------------------

// Головне меню

JMenuBar main_menu = new JMenuBar ();

Font font = new Font ("Verdana", Font. PLAIN,

11);

frm_menu. setJMenuBar (main_menu);

// -------------------------------

// вкладка Музей

JMenu musuem_menu = new JMenu ("Музей");

musuem_menu. setFont (font);

// кнопка компл. музею

JMenuItem musuem_frank = new JMenuItem ("Комплекс музею");

musuem_frank. setFont (font);

musuem_menu. add (musuem_frank);

musuem_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. musuem_frank ();

}});

// кнопка компл. садиби

JMenuItem home_frank = new JMenuItem ("Комплекс садиби");

home_frank. setFont (font);

musuem_menu. add (home_frank);

home_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. home_frank ();

}});

// кнопка галявина казаок

JMenuItem lawn_frank = new JMenuItem ("Галявина казок");

lawn_frank. setFont (font);

musuem_menu. add (lawn_frank);

lawn_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. lawn_frank ();

}});

// кнопка стежки І. Ф.

JMenuItem paths_frank = new JMenuItem ("Стежки І. Франка");

paths_frank. setFont (font);

musuem_menu. add (paths_frank);

paths_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Paths. paths_frank ();

}});

// кнопка бібліотека

JMenuItem lib_frank = new JMenuItem ("Бібліотека");

lib_frank. setFont (font);

musuem_menu. add (lib_frank);

lib_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Autobiography. lib_frank ();

}});

// кнопка вихід

JMenuItem exit_item = new JMenuItem ("ВИХІД");

exit_item. setFont (font);

musuem_menu. add (exit_item);

exit_item. addActionListener (new java. awt. event. ActionListener () {

public void actionPerformed (java. awt. event. ActionEvent e) {

System. exit (0);

}});

// -------------------------------

main_menu. add (musuem_menu);

frm_menu. setJMenuBar (main_menu);

// -------------------------------

// вкладка Іван Франко

JMenu menu_frank = new JMenu ("Іван Франкo");

menu_frank. setFont (font);

// кнопка автобіографія

JMenuItem life_frank = new JMenuItem ("Автобіографія");

life_frank. setFont (font);

menu_frank. add (life_frank);

life_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Autobiography. life_frank ();

}});

// кнопка творчість

JMenuItem art_frank = new JMenuItem ("Творчість");

art_frank. setFont (font);

menu_frank. add (art_frank);

art_frank. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Autobiography. art_frank ();

}});

// ---------------------------

main_menu. add (menu_frank);

frm_menu. setJMenuBar (main_menu);

// ---------------------------

// Вкладка галерея

JMenu galllery_frank = new JMenu ("Галерея зображень");

galllery_frank. setFont (font);

// кнопка галерея музею

JMenuItem musuem_gallery = new JMenuItem ("Галерея музею");

musuem_gallery. setFont (font);

galllery_frank. add (musuem_gallery);

musuem_gallery. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Gallery. musuem_gallery ();

}});

// кнопка галерея садиби

JMenuItem home_gallery = new JMenuItem ("Галерея садиби");

home_gallery. setFont (font);

galllery_frank. add (home_gallery);

home_gallery. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Gallery. home_gallery ();

}});

// -----------------------------------------

main_menu. add (galllery_frank);

frm_menu. setJMenuBar (main_menu);

// ------------------------------------------

// Вкладка місц. знаходження (під меню)

JMenu locate_naguev = new JMenu ("Місце знаходження");

locate_naguev. setFont (font);

// кнопка с. Нагуєвичі (під меню)

JMenu village_menu = new JMenu ("с. Нагуєвичі (с. Івана Франка)");

village_menu. setFont (font);

locate_naguev. add (village_menu);

// кнопка ісоторія с.

JMenuItem hist_naguev = new JMenuItem ("Істоія");

hist_naguev. setFont (font);

village_menu. add (hist_naguev);

hist_naguev. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Village. hist_naguev (); }});

// кнопка маршут до с.

JMenuItem route_naguev = new JMenuItem ("Маршрут");

route_naguev. setFont (font);

village_menu. add (route_naguev);

route_naguev. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Village. route_naguev ();

}});

// кнопка граф. роб.

JMenuItem graph_naguev = new JMenuItem ("Графік роботи");

graph_naguev. setFont (font);

village_menu. add (graph_naguev);

graph_naguev. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. Village. graph_naguev ();

}});

// -----------------------------------------

main_menu. add (locate_naguev);

frm_menu. setJMenuBar (main_menu);

// ------------------------------------------

// Вкладка допомога

JMenu menu_help = new JMenu ("Допомога");

menu_help. setFont (font);

// кнопка довідкова інформація

JMenuItem info_prog_item = new JMenuItem ("Довідкова інформація");

info_prog_item. setFont (font);

menu_help. add (info_prog_item);

info_prog_item. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new Main. info_program ();

}});

// кнопка про розробника

JMenuItem about_info_item = new JMenuItem ("Про розробника");

about_info_item. setFont (font);

menu_help. add (about_info_item);

about_info_item. addActionListener (new ActionListener () {

public void actionPerformed (ActionEvent e) {

new about_info ();

}});

// -------------------------------

main_menu. add (menu_help);

frm_menu. setJMenuBar (main_menu);

// -------------------------------

frm_menu. setLocationRelativeTo (null);

frm_menu. setVisible (true);

}

public static void main (String args []) {

SwingUtilities. invokeLater (new Runnable () {

public void run () {

new menu ();

}}); }

@Override

public void actionPerformed (ActionEvent e) {

// TODO Auto-generated method stub }}

Файл about_info. java:

package Main;

import java. awt. Color;

import java. awt. GridLayout;

import java. io. BufferedReader;

import java. io. FileNotFoundException;

import java. io. FileReader;

import java. io. IOException;

import javax. swing. ImageIcon;

import javax. swing. JFrame;

import javax. swing. JLabel;

import javax. swing. JPanel;

import javax. swing. JTextArea;

import javax. swing. SwingUtilities;

public class about_info {

about_info () {

JFrame frm_about = new JFrame ("Про розробника");

frm_about. setSize (600,225);

frm_about. setDefaultCloseOperation (JFrame. DISPOSE_ON_CLOSE);

JPanel panel1 = new JPanel ();

panel1. setLayout (new GridLayout (1,2));

panel1. setBackground (Color. BLACK);

String path = "images/logo. jpg";

java.net. URL imgURL = menu. class. getResource (path);

ImageIcon icon = new ImageIcon (imgURL);

JLabel image1 = new JLabel ("");

image1. setIcon (icon);

frm_about. add (image1);

panel1. add (image1);

JTextArea about_textarea = new JTextArea (20, 20);

StringBuffer contents = new StringBuffer ();

BufferedReader reader = null;

try {

reader = new BufferedReader (new FileReader ("resourcesinfo_prog. txt"));

String text = null;

while ( (text = reader. readLine ())! = null) {

contents. append (text). append (System. getProperty ("line. separator"));

}}

catch (FileNotFoundException e1) {

e1. printStackTrace ();

} catch (IOException e1) {

e1. printStackTrace ();

} finally {

try {

if (reader! = null) {

reader. close ();

}}

catch (IOException e1) {

e1. printStackTrace ();

}}

about_textarea. setText (contents. toString ());

about_textarea. setEditable (false);

panel1. add (about_textarea);

frm_about. add (panel1);

frm_about. setResizable (false);

frm_about. setLocationRelativeTo (null);

frm_about. setVisible (true);

}

public static void main (String args []) {

SwingUtilities. invokeLater (new Runnable () {

public void run () {

new about_info ();

}}); }}

Файл home_frank. java:

package Main. Paths;

import java. awt. Font;

import java. awt. GridLayout;

import java. awt. event. MouseEvent;

import java. awt. event. MouseListener;

import javax. swing. ImageIcon;

import javax. swing. JButton;

import javax. swing. JFrame;

import javax. swing. JLabel;

import javax. swing. JPanel;

import javax. swing. JScrollPane;

import javax. swing. SwingUtilities;

import Main. menu;

public class home_frank {

public home_frank () {

JFrame frm_home = new JFrame ();

GridLayout Layout = new GridLayout (3,3,50,50);

frm_home. setSize (1000,600);

frm_home. setTitle ("Садиба Івана Франка");

frm_home. setDefaultCloseOperation (JFrame. DISPOSE_ON_CLOSE);

Font font = new Font ("Times New Roman", Font. BOLD, 14);

JPanel panel=new JPanel ();

JPanel panel1=new JPanel ();

panel1. setLayout (Layout);

JPanel panelt=new JPanel ();

// База даних картинок

String path = "images/hata_j. jpg";

java.net. URL imgURL1 = menu. class. getResource (path);

ImageIcon icon1 = new ImageIcon (imgURL1);

JButton btn1 = new JButton ("");

btn1. setIcon (icon1);

frm_home. add (btn1);

panel1. add (btn1);

// Пропуск-------------------

JLabel labe1=new JLabel (" >>>Галерея садиби. <<<");

labe1. setFont (font);

labe1. addMouseListener (new MouseListener () {

@Override

public void mouseClicked (MouseEvent e) {

// TODO Auto-generated method stub

new Main. Gallery. home_gallery ();

}

});

panel1. add (labe1);

// --------------------------

String path1 = "images/kuznya. jpg";

java.net. URL imgURL2 = menu. class. getResource (path1);

ImageIcon icon2 = new ImageIcon (imgURL2);

JButton btn2 = new JButton ("");

btn2. setIcon (icon2);

frm_home. add (btn2);

panel1. add (btn2);

// Пропуск-------------------

JLabel labe13=new JLabel ();

panel1. add (labe13);

// --------------------------

String path2 = "images/podv. jpg";

java.net. URL imgURL3 = menu. class. getResource (path2);

ImageIcon icon3 = new ImageIcon (imgURL3);

JButton btn3 = new JButton ("");

btn3. setIcon (icon3);

frm_home. add (btn3);

panel1. add (btn3);

// Пропуск-------------------

JLabel labe14=new JLabel ();

panel1. add (labe14);

// --------------------------

frm_home. setVisible (true);

panel1. add (panelt);

panel. add (panel1);

JScrollPane scrollBar = new JScrollPane (panel,

JScrollPane. VERTICAL_SCROLLBAR_ALWAYS,

JScrollPane. HORIZONTAL_SCROLLBAR_ALWAYS);

frm_home. add (scrollBar);

frm_home. setLocationRelativeTo (null);

frm_home. setVisible (true); }

public static void main (String args []) {

SwingUtilities. invokeLater (new Runnable () {

public void run () {

new home_frank ();

}}); }}

Файл museum_frank. java:

package Main. Paths;

import java. awt. Font;

import java. awt. GridLayout;

import java. awt. event. ActionEvent;

import java. awt. event. ActionListener;

import java. awt. event. MouseEvent;

import java. awt. event. MouseListener;

import javax. swing. ImageIcon;

import javax. swing. JButton;

import javax. swing. JFrame;

import javax. swing. JLabel;

import javax. swing. JPanel;

import javax. swing. JScrollPane;

import javax. swing. SwingUtilities;

import Main. menu;

public class musuem_frank implements ActionListener {

public musuem_frank () {

JFrame frm_musuem=new JFrame ("Музей Івана Франка");

GridLayout experimentLayout = new GridLayout (4,3,1,1);

frm_musuem. setDefaultCloseOperation (JFrame. DISPOSE_ON_CLOSE);

frm_musuem. setSize (900,730);

frm_musuem. setResizable (false);

Font font = new Font ("Times New Roman", Font. BOLD, 14);

JPanel panel=new JPanel ();

JPanel panel1=new JPanel ();

panel1. setLayout (experimentLayout);

JPanel panelt=new JPanel ();

// База даних картинок

String path = "images/2_pov. jpg";

java.net. URL imgURL = menu. class. getResource (path);

ImageIcon icon = new ImageIcon (imgURL);

JButton kart = new JButton ("");

kart. setIcon (icon);

frm_musuem. add (kart);

panel1. add (kart);

String path1 = "images/shodu. jpg";

java.net. URL imgURL1 = menu. class. getResource (path1);

ImageIcon icon1 = new ImageIcon (imgURL1);

JButton kart1 = new JButton ("");

kart1. setIcon (icon1);

frm_musuem. add (kart1);

panel1. add (kart1);

String path2 = "images/1_pov. jpg";

java.net. URL imgURL2 = menu. class. getResource (path2);

ImageIcon icon2 = new ImageIcon (imgURL2);

JButton kart2 = new JButton ("");

kart2. setIcon (icon2);

frm_musuem. add (kart2);

panel1. add (kart2);

// Пропуск---------------------

JLabel label=new JLabel ();

panel1. add (label);

// ----------------------------

String path1p1 = "images/2_pov_1. jpg";

java.net. URL imgURL1p1 = menu. class. getResource (path1p1);

ImageIcon icon1p1 = new ImageIcon (imgURL1p1);

JButton kart1p1 = new JButton ("");

kart1p1. setIcon (icon1p1);

frm_musuem. add (kart1p1);

panel1. add (kart1p1);

// Пропуск---------------------

JLabel label1=new JLabel (" >>>Галерея музею. <<<");

label1. setFont (font);

label1. addMouseListener (new MouseListener () {

@Override

public void mouseClicked (MouseEvent e) {

Делись добром ;)