Розробка прикладної програми графічного інтерфейсу користувача для чисельного знаходження коренів рівняння методом дихотомії
Автор: Пользователь скрыл имя, 13 Мая 2012 в 16:23, курсовая работа
Описание работы
Мета курсової роботи – це закріплення знань отриманих протягом вивчення курсу ” Об’єктно-орієнтоване програмування ”. У даній курсовій роботі ми використовуємо мову програмування Java й працюємо у середовищі Eclipse. Програма, розроблена в межах даної курсової роботи, дозволяє спростити вирішення рівнянь методом Дихотомії. Вона дає можливість швидко та точно обчислювати задані рівняння та знаходити корені рівняння.
<HEAD> і </HEAD>. Між цими тегами розташовується інформація про документ (назва, ключові слова для пошуку, опису і т.д.). Однак найбільш важливим є назва документу, яку ми бачимо у верхньому рядку вікна браузера та у списках "Избранное (BookMark)". Спеціальні програми-спайдери пошукових систем використовують назву документа для побудови своїх баз даних. Для того, щоб дати назву своєму HTML-документу текст розміщується між тегами <TITLE> та </TITLE>;
3) тіло документу
Третя, головна частина документу - тіло документу. Воно розташовується одразу за заголовком й знаходиться між тегами <BODY> та </BODY>. Перший з них повинен стояти відразу після тегу </HEAD>, а другий - перед тегом </HTML>. Тіло HTML-документа - це місце, де автор розміщує інформацію, відформатовану засобами HTML.
У розділі BODY всі символи табуляції й кінці рядків браузером ігноруються і не впливають на відображення сторінки. Тому перехід на наступний рядок в вихідному тексті HTML-документа не призведе до початку нового рядка в вихідному тексті при відсутності спеціальних тегів. Це правило дуже важливо пам'ятати та не забувати ставити теги, що розділяють рядки, бо у тексті не буде абзаців і його не можна бути прочитати.
Для початку нового рядка використовують тег <BR> (перекл. з англ. break - переривати). Цей тег приводить до відображення браузером подальшого тексту з початку наступного рядка. Закриваючий для нього тег не використовується. Він зручний, коли необхідно писати з нового рядка, без створення нового абзацу. Повторне його використання дозволяє вставляти один чи декілька пустих рядків, змістивши наступний фрагмент тексту вниз сторінки.
Суцільний текст без проміжків читається не дуже легко, його незручно продивлятись та знаходити необхідні місця. Розподілений на абзаци, текст сприймається значно швидше. Для початку нового абзацу використовується тег <P> (англ. paragraph - абзац). Цей тег, крім початку нового рядка, вставляє один пустий рядок. Але багатократне повторення <P>, на відміну від тегу <BR>, не призведе до створення декількох пустих рядків, залишиться один пустий рядок.
Всередині дужок тегу крім його назви можуть розміщуватись також його атрибути (англ. atributes - атрибути). Вони відокремлюються між назвою і між собою пробілами (одним чи декількома), а пишуться у вигляді: ім’я атрибута ="значення". Якщо значення не містить пробілів, то дужки можуть не ставитись, але так робити не рекомендується. Тег <P> може містити атрибут ALIGN, що вирівнює абзац. За умовчанням абзац вирівняний вліво ALIGN="left". Можливе також вирівнювання вправо ALIGN="right" та по центру ALIGN="center".
3 РЕАЛІЗАЦІЯ ПРОГРАМИ ГРАФІЧНОГО ІНТЕРФЕЙСУ
3.1 Аналіз та проектування
На етапі визначення вимог необхідно виконати ескізне проектування інтерфейсу користувача. Інтерфейс користувача передбачає створення вікна, яке містить головне меню, а також таблицю для введення та редагування даних, рядки введення скалярних даних, текстову область для відображення результатів та панель для відображення графіку.
В окремому вікні, яке розкривається за бажанням користувача, повинен відображатись згенерований звіт. Також окреме вікно доцільно створити для отримання довідки.
Основну сутність предметної області представляє клас Equation - знаходження коренів рівняння . Для того, щоб скористатися його функціональністю, необхідно створити похідний клас, у якому визначено конкретний спосіб представлення коефіцієнтів обох наборів точок. У нашому випадку таким класом буде XMLEquation. Він спиратиметься на автоматично згенеровані класи, які представляють структуру XML-документу.
Для представлення головного вікна програми необхідно створити клас на базі JFrame. Він спирається на використання класів бібліотеки javax.swing. Необхідні також візуальні класи для представлення графіку функції (JPanelGraph) та вікон відображення звіту (JFrameReport) та довідки (JFrameHelp). Пізніше до моделі можна додати класи-виключення та інші допоміжні класи.
Наступний етап реалізації - створення додатку графічного інтерфейсу користувача.
Створюємо пакет graphUserInterface. До пакету додаємо візуальний клас JMainFrame, похідний від JFrame. За допомогою візуального редактору додаємо панель (jPanel) у лівій частині фрейму з мінімальними розмірами (PreferredSize) 200 та 10. Для цієї панелі доцільно встановити спосіб компонування BorderLayout. У центральній частині нової панелі розміщуємо контейнер JScrollPane з JTextArea всередині. Редагування властивості Border елементу jScrollPane дозволить у вікні "Java Property Editor" у рядку "Border Type" встановити "Titled" та додати заголовок ("Title") - "Корені".
У верхній частині панелі jPanel розміщуємо щу одну панель (jPanelControls), для якої встановлюємо менеджер компонування null та PreferredSize у 10 та 250. На цій панелі можна розмістити дві пари компонентів JScrollPane+JTable - jScrollPaneF з jTableF та jScrollPaneG з jTableG. Кнопки jButton1, jButton2, jButton3, jButton4 з плюсами та мінусами відповідно використатимуться для зміни кількості рядків таблиць. Для введення та редагування значення додаємо рядок введення jTextFieldEps з відповідною міткою. Кнопки jButton5 та jButton6 дозволять виконати найбільш істотні функції програми.
У центральній частині фрейму пізніше можна буде додати панель для відображення графіку.
Для того, щоб додати головне меню, необхіднй компонент JMenuBar слід обрати за допомогою кнопки "Choose Bean" палітри компонентів. Для включення компоненту його доцільно додати у дерево об'єктів користувацького інтерфейсу ("Java Beans"). Додавати його слід не в основну панель (jContentPane), а безпосередньо у фрейм. У нашому випадку йому можна дати ім'я jMainMenu. Далі за допомогою кнопки "Choose Bean" палітри послідовно додаємо підменю (компоненти типу JMenu) - jMenuFile, jMenuRun та jMenuHelp. Необхідно налаштувати властивість text для того, щоб підменю мали відповідні заголовки.
Окремі позиції меню - це компоненти типу JMenuItem. До jMenuFile ("Файл") додаємо позиції меню з текстами "Новий", "Відкрити", "Зберегти", “Звіт” та "Вихід". У підменю "Робота" включаємо позицію "Знайти корені рівняння". Підменю "Довідка" включає позиції "Допомога" та "Про програму".
Для того, щоб візуальні елементи могли взаємодіяти з XML-документами, до класу JMainFrame слід додати посилання на клас XMLEquation, а також геттер, у тілі якого здійснюється визначення початкових значень from, to та eps:
Наступні дії пов'язані зі створенням моделей таблиць. Створюємо новий класи - FTableModel та GTableModel від базового класу AbstractTableModel.
Для того, щоб забезпечити можливість відображати шапку таблиці, а також, щоб редагувати окремі комірки, слід також перекрити методи getColumnName(), isCellEditable() та setValueAt().
У нашому випадку для реалізації функцій придасться масив заголовків стовпців, посилання на клас XMLEquation, а також поля columnCount та rowCount. Для xmlEquation, columnCount та rowCount доцільно згенерувати геттери та сеттери. (Окрім сеттера для columnCount). Для отримання значень, які відображаються у комірках таблиці, можна безпосередньо звертатись до функцій класу XMLEquation.
Аналогічно можна створити модель для таблиці jTableG. Клас GFuncTableModel матиме такий вигляд:
Обидві моделі можна додати до таблиць шляхом налаштування властивостей. Наприклад, для таблиці jTableF праворуч від імені та значення властивості model натискаємо кнопку "...". З'являється вікно на кшталт "Choose Bean", у якому обираємо клас FTableModel. Аналогічно додаємо GTableModel.
Тепер можна додати функції-оброблювачі подій для кнопок jButton1, jButton2, jButton3 та jButton4. Функції здійснюватимуть додавання та видалення рядків до таблиць. В результаті отримаємо готову програму, із зручним графічним інтерфейсом (рисунок 3.1).
Рисунок 3.1 – Вигляд готової до використання програми
3.3 Посібник користувача програмного забезпечення
Дана програма графічного інтерфейсу застосовується для чисельного знаходження коренів рівняння методом дихотомії . Перш за все треба запустити нашу програму, для цього необхідно відкрити eclipse.exe, після чого виконати команду File/New/Project/JavaProject. У діалоговому вікні вписати ім’я проекту та вибрати директорію (папку) у якій розташована наша програма. Натиснути FINISH. Після імпорту проекту у середовище eclipsе у пакеті graphUserInterface запустити на виконання класс JMainFrame.У результаті ми побачимо( рисунок 3.2):
Рисунок 3.2 – Вигляд готової до використання програми
Далі ми можемо як відкрити раніш створений XML файл, так і задати границі та точки для обчислення саморуч. У першому випадку треба виконати команду Файл/Відкрити, після натиснути «Знайти корені». У другому випадку усі данні задаються користувачем саморуч. У полі «Точність» - задаємо точність (похибку), у полі «Границі розрахунку коренів» - задаємо інтервал у якому буде обчислюватися функція, за допомогою «+» та «-» можна як додати так і прибрати точки якими задається функція. У результаті вирішення рівняння вікно програми, в залежності від введених даних, може мати вигляд такий вигляд (рисунок 3.3):
Рисунок 3.3 – Вигляд програми після вирішання рівняння
Після вирішення рівняння функції, користувач має можливість передивитись та зберегти звіт у html форматі. Для цього требя спочатку згенерувати його. Далі виконати команду файл/зберегти звіт. Після цього файл зі звітом може бути переглянутим у Інтернет - браузері.
4 ТЕСТУВАННЯ ПРОГРАМИ
4.1 Тестування розробленої програми
Відкриваємо необхідний XML документ, або вводимо дані вручну.
В даному випадку ми маємо такі точки функцій f i g представлених на рисунках 4.1 і 4.2:
Рисунок 4.1 – Точки функції f.
Рисунок 4.2 – Точки функції g.
Тиснемо кнопку «знайти корені рівняння». Отримуємо значення кренів(рисунок 4.3):