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

Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 11.01.2015
Размер файла 335,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Вінницький національний технічний університет

Кафедра програмного забезпечення

Напрям підготовки 6.050103

Спеціальність «Програмна інженерія»

КУРСОВА РОБОТА

з дисципліни «Алгоритми та структури даних»

на тему:

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

Студента 2 курсу групи 1ПІ-13б

Ставицького Павла

Керівник О.О. Коваленко

м. Вінниця - 2014 рік

АНОТАЦІЯ

Дана курсова робота присвячена розробці програмної системи для вивчення іноземних слів. Дана система передбачає використання мови програмування Java та середовище для розробки Android Studio. Програма включає в себе роботу з базовими алгоритмами та структурами даних, класами та обробку числової інформації. Під час роботи було створено програмне забезпечення, яке відповідає поставленим задачам і призначене для вивчення іноземних слів. В результаті виконання курсової роботи отримано програмний засіб, працездатність і правильність роботи якого перевірено, підготовлена інструкція користувача.Дана робота складається з вступу, трьох розділів та висновку.

Курсова робота містить 33 сторінки, 8 рисунків, і 1 таблицю.

ЗМІСТ

ВСТУП

1. ТЕОРЕТИЧНІ ВІДОМОСТІ ДОСЛІДЖЕННЯ СИСТЕМ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

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

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

1.3 Постановка задачі. Загальні підходи до поставлених завдань

2. АЛГОРИТМИ ТА СТРУКТУРИ ДАНИХ СТВОРЕННЯ СИСТЕМИ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

2.1 Алгоритм побудови інтерфейсу вхідних даних

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

2.3 Алгоритм побудови інтерфейсу вихідних даних

3. РЕАЛІЗАЦІЯ ПРОГРАМИ СТВОРЕННЯ СИСТЕМИ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

3.1 Вибір мови програмування та особливості реалізації

3.2 Реалізація базових алгоритмів

3.3 Реалізація програми

ВИСНОВКИ

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

ВСТУП

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

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

Метою даної курсової роботи є - вивчити теоретичні підходи та отримати практичні навички в створенні програмного забезпечення на прикладі системи для вивчення іноземних слів.

Відповідно меті визначено такі завдання:

- створити програмний додаток, який дозволить забезпечити якісне та ефективне вивчення іноземних слів;

- освоїти базові алгоритми і структури даних;

- проаналізувати особливості мови програмування Java та середовища розробки програмного забезпечення - Android Studio;

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

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

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

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

В третьому розділі реалізована система для вивчення іноземних слів, з використанням базових алгоритмів та структур даних. Крім того обґрунтований вибір мови програмування.

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

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

1. ТЕОРЕТИЧНІ ВІДОМОСТІ ДОСЛІДЖЕННЯ СИСТЕМ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

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

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

Важливою складовою, при вивченні будь-якої мови є - напрацювання словникового запасу. Існують різні способи вивчення іноземних слів. Найрозповсюдженіша з них - звичайне зазубрювання слів. Проте цей спосіб досить неефективний. На вивчення витрачається багато часу, до того ж кількість слів, яку можна запам'ятати - досить мала, адже спрацьовує механізм забування, що зводить нанівець всі зусилля, витрачені на вивчення. Крім того, використовуючи таку методику, в людини швидко пропадає інтерес до вивчення іноземної мови. Існують більш ефективні та результативні методи вивчення іноземних слів.

На сьогоднішній день існує досить багато реалізацій систем для вивчення іноземних слів і всі вони використовують ті чи інші методики.

Гра “Англійська мова - 20.000 слів” (Рис. 1.1). Користувачеві пропонується слово російською мовою та декілька варіантів відповідей іноземною мовою з підказками, у вигляді перекладу, написаному у зворотньому порядку. Така методика дозволяє асоціативно визначати правильну відповідь, тим самим збагачуючи свій словниковий запас.

Недоліком такої методики є те, що засвоєнню кожного слова окремо, приділено недостатньо часу, в результаті чого, велика кількість слів швидко забувається. До того ж, користувачеві надано обмежену кількість слів, а якщо у нього є бажання вивчити конкретне слово, його пошук у додатку спричинить незручності.

Рисунок 1.1 - Фрагмент гри «Англійська мова - 20.000 слів»

Більш ефективним є - вивчення слів, з застосуванням візуальних образів та асоціацій. Людині пропонується іноземне слово, та картинка, яка яскраво його ілюструє. При такому вивченні використовується візуальна пам'ять, що дозволяє легше та ефективніше запам'ятовувати слова. Існують реалізації такої методики, наприклад LinguaLeo (Рис. 1.2).

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

Рисунок 1.2 - Фрагмент додатку «LinguaLeo»

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

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

Базові алгоритми та структури даних - важлива складова, при створенні будь-якого проекту. Вони є потужним інструментом у вирішенні багатьох поставлених задач у розробці програмного забезпечення. Вони дозволяють спростити код програми, оптимізувати його, та зробити більш лаконічним. Існують такі базові алгоритми та структури даних:

Масимв -- впорядкований набір фіксованої кількості однотипних елементів, що зберігаються в послідовно розташованих комірках оперативної пам'яті, мають порядковий номер і спільне ім'я, що надає користуваx, сукупність елементів одного типу даних, впорядкованих за індексами, які зазвичай репрезентовані натуральними числами, що визначають положення елемента в масиві. Масив може бути одновимірним (вектором), та багатовимірним (наприклад, двовимірною таблицею), тобто таким, де індексом є не одне число, а кортеж (сукупність) з декількох чисел, кількість яких збігається з розмірністю масиву [1]. В даній курсовій роботі, динамічний масив використовуєтся для виведення слів в список ListView.

Зв'язаний список -- одна з найважливіших структур даних, в якій елементи лінійно впорядковані, але порядок визначається не номерами елементів, а вказівниками, які входять в склад елементів списку та вказують на наступний за даним елемент (в однозв'язаних або однобічно зв'язаних списках) або на наступний та попередній елементи (в двозв'язаних або двобічно зв'язаних списках). Список має «голову» -- перший елемент та «хвіст» -- останній елемент. Зв'язані списки мають серію переваг порівняно з масивами. Зокрема, в них набагато ефективніше (за час О(1), тобто незалежно від кількості елементів) виконуються процедури додавання та вилучення елементів. Натомість, масиви набагато кращі в операціях, які потребують безпосереднього доступу до кожного елементу, що у випадку зі зв'язаними списками неможливо та потребує послідовного перебору усіх елементів, які передують даному [2]. В даній курсовій роботі, список використовується для виведення слів, для їх перегляду.

Стек -- різновид лінійного списку, структура даних, яка працює за принципом (дисципліною) «останнім прийшов -- першим пішов» (LIFO, англ. last in, first out). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім. Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку -- «магазин», за аналогією з принципом роботи магазину в автоматичній зброї) [3].

Черга -- динамічна структура даних, що працює за принципом «перший прийшов -- перший пішов» (англ. FIFO -- first in, first out). У черги є голова (англ. head) та хвіст (англ. tail). Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові. Така черга повністю аналогічна звичній «базарній» черзі, в якій хто перший встав в неї, той першим буде обслуженим [4].

Двійкове дерево -- структура даних у вигляді дерева, в якому кожна вершина має не більше двох дітей. Зазвичай такі діти називаються правим та лівим. На базі двійкових дерев будуються такі структури, як двійкові дерева пошуку та двійкові купи. Часто виникає необхідність обійти усі вершини дерева для аналізу інформації, що в них знаходиться. Існують декілька порядків такого обходу, кожний з яких має певні властивості, важливі в тих чи інших алгоритмах: прямий (preorder), центрований (inorder) та зворотний (postorder) [5].

АВЛ-дерево -- збалансоване по висоті двійкове дерево пошуку: для кожної його вершини висота її двох піддерев відрізняється не більше ніж на 1. АВЛ -- абревіатура, утворена першими літерами творців (радянських учених) Адельсон-Вельського Георгія Максимовича і Ландіс Євгена Михайловича [6].

Генетичний алгоритм -- це еволюційний алгоритм пошуку, що використовується для вирішення задач оптимізації і моделювання шляхом послідовного підбору, комбінування і варіації шуканих параметрів з використанням механізмів, що нагадують біологічну еволюцію. Особливістю генетичного алгоритму є акцент на використання оператора "схрещення", який виконує операцію рекомбінацію рішень-кандидатів, роль якої аналогічна ролі схрещення в живій природі [7].

База даних (скорочено -- БД) -- впорядкований набір логічно взаємопов'язаних даних, що використовуються спільно та призначені для задоволення інформаційних потреб користувачів. У технічному розумінні включно й система керування БД.

Головне завдання БД -- гарантоване збереження значних обсягів інформації (так звані записи даних) та надання доступу до неї користувачеві або ж прикладній програмі. Таким чином, БД складається з двох частин: збереженої інформації та системи керування нею.

З метою забезпечення ефективності доступу записи даних організовують як множину фактів (елемент даних) [8]. В даній курсовій роботі, бази даних використовуються для зберігання введених або вивчених слів.

Сортування -- це алгоритм, що розв'язує задачу сортування, тобто здійснює впорядкування лінійного списку (масиву) елементів. Для алгоритму сортування (як і для будь-якого іншого сучасного алгоритму) основними характеристиками є: час необхідний на впорядкування n-елементного масиву і додаткова пам'ять необхідна для впорядкування. Крім цих двох характеристик, сортування буває стабільним чи нестабільним, з використанням додаткової інформації про елементи, чи без використання.

Для значної кількості алгоритмів середній і найгірший час впорядкування n-елементного масиву є , це пов'язано з тим, що в них передбачені перестановки елементів, що стоять поряд (різниця між індексами елементів не перевищує деякого заданого числа). Такі алгоритми зазвичай є стабільними, хоча і не ефективними для великих масивів. Інший клас алгоритмів здійснює впорядкування за час . В цих алгоритмах використовується можливість обміну елементів, що знаходяться на будь-якій відстані один від одного [9]. Серед найвідоміших алгоритмів сортування: сортування бульбашкою, сортування вставками, швидке сортування, сортування Шелла.

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

1.3 Постановка задачі. Загальні підходи до поставлених завдань

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

Для здійснення постановки задачі розглянемо основні функціональні частини роботи розроблюваного програмного забезпечення:

- меню. Дана функціональна частина відповідає за вибір режиму вивчення іноземних слів;

- додання слів. Дана функціональна частина відповідає за додання нових іноземних слів та їх перекладу для подальшого вивчення;

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

- повторення слів. Дана функціональна частина відповідає за повторення слів, які попередньо були вивчені;

- навчання. В даній функціональній частині запропонована техніка, за допомогою якої потрібно запам'ятовувати іноземні слова;

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

Алгоритм для вирішення задачі можна описати так:

В меню програми, у користувача є вибір: пройти навчальну програму, за допомогою якої він опанує техніку запам'ятовування іноземних слів. Далі, потрібно ввести слова, які необхідно вивчити. Після того, як було введено та вивчено не менше 15 слів, їх можна перенести в основний режим, для повторення, яке відбуватиметься протягом 4-х днів. Під час повторення, користувачеві надається слово, іноземною мовою та 5 варіантів перекладу українською, серед яких він має обрати 1 правильний. Забезпечено режим зворотнього відтворення україно-англійського подання слів. Якщо користувач обирає неправильний переклад, або не встигає його обрати за відведений час то це слово переноситься в кінець списку. Кожного дня, час відведений на обрання правильної відповіді зменшується. Після того, як слова були повністю вивчені, вони переносяться в загальну базу даних вивчених слів, яку можна переглянути у будь-який час.

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

Детальне порівняння мов програмування наведено в розділі 3.

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, необхідно використовувати Java Development Kit (скорочено JDK) -- безкоштовно розповсюджуваний компанією Oracle Corporation (рашіне Sun Microsystems) додатків на мові Java, який включає в себе компілятор Java (javac), стандартні бібліотеки класів Java, документацію та різноманітні утиліти. Всі сучасні інтегровані середовища розробки додатків на Java, такі як JDeveloper, NetBeans IDE, Eclipse і у тому числі IntelliJ IDEA, на базі якої розроблена Android Studio опираються на сервіси, які представлені в JDK. Тому ці середовища розробки включають в комплект поставки одну з версій JDK, або потребують для своєї коректної роботи попередню інсталяцію Java Development Kit на машині розробника [10].

Важливим, при розробці додатків для операційної системи Android є використання Android Software Development Kit (скорочено SDK), який забезпечує API бібліотеки, для розробки додатків для різних версій операційної системи, а також наявність інструментів для їх збірки, тестування та відлагодження.

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

Таким чином в першому розділі курсової роботи розглянута предметна область та існуючі реалізації, обґрунтований вибір мови програмування та вибір бібліотек, описані базові алгоритми та структури даних, виконана постановка задачі системи для вивчення іноземних слів.

2. АЛГОРИТМИ ТА СТРУКТУРИ ДАНИХ СТВОРЕННЯ СИСТЕМИ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

2.1 Алгоритм побудови інтерфейсу вхідних даних

Вхідний інтерфейс повинен бути побудований у відповідності до методики запам'ятовування іноземних слів. Для того, щоб обрати правильний переклад іноземного слова, користувач повинен натиснути та одну з кнопок, які розміщені на екрані випадковим чином. Детальний вигляд режиму повторення слів наведено в пункті 2.2.

У вікні вхідного інтерфейсу (Рис. 2.1) користувач вводить слова, які він бажає вивчити. Потрібно ввести іноземне слово, та його переклад українською мовою. Після чого, дані переносяться у вікно зі всіма доданими словами. Зрештою, введені слова поміщаються в таблицю бази даних SQLite.

Рисунок 2.1 - Додання нового іноземного слова

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

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

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

На рисунку 2.2 зображено алгоритм користування програмою. Користувач повинен ввести слова для вивчення. Якщо кількість введених слів складає 15 або більше, в нього є можливість перейти до режиму їх повторення. Якщо в режим заздалегідь було перенесено слова, у користувача є можливість одразу перейти до їх повторення. Після того, як слова були повторені протягом 4-х днів, вони переносяться в загальну базу слів, яку можна переглянути в будь-який момент.

Рисунок 2.2 - Загальний алгоритм користування програмою

В режимі для повторення слів, після натиснення кнопки “Розпочати” користувачеві пропонується слово, іноземною мовою, та 5 варіантів відповідей, серед яких лише 1 правильний. Також, забезпечено зворотній спосіб подання слів. Якщо користувач не встигає обрати відповідь за відведений час, який можна побачити в лівому верхньому куті вікна, або обирає неправильну, то слово переноситься в кінець списку. Слова потрібно повторяти не менше, ніж тричі на день, протягом чотирьох днів. Прогрес щоденного проходження режиму повторення можна побачити в правому верхньому куті вікна. На (Рис 2.3), (Рис 2.4) продемонстровано вигляд режиму повторення слів.

Рисунок 2.3 - Режим повторення слів

Рисунок 2.4 - Режим повторення слів, після натиснення кнопки “Розпочати”

В основній частині додатку, було використано такі базові алгоритми та структури даних: динамічний масив, база даних, хеш таблиця.

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

2.3 Алгоритм побудови інтерфейсу вихідних даних

Після того, як користувач вивчив іноземні слова, в нього є можливість переглянути їх у меню “Мої слова” (Рис. 2.6). Також, інтерфейс вихідних даних забезпечено у меню “Додати ” (Рис. 2.5), для перегляду введених слів.

Рисунок 2.5 - Вихідний інтерфейс в меню “Додати”

Рисунок 2.6 - Вихідний інтерфейс в меню “Мої слова”

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

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

алгоритм програма іноземний мова

3. РЕАЛІЗАЦІЯ ПРОГРАМИ СТВОРЕННЯ СИСТЕМИ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

3.1 Вибір мови програмування та особливості реалізації.

Для якісного і об`єктивного вибору мови програмування, потрібно порівняти найбільш актуальні мови програмування. Після цього визначити всі переваги і недоліки кожної з мов програмування. На сучасному розвитку найбільш актуальним і прогресивними мовами програмування є: С++, С# та Java

Таблиця 3.1

Порівняння С++, С#, Java

Особливість

C + +

C #

Java

Автоматичний збір сміття

Ні

Так

Так

Typesafe variadic arguments

Ні

Так

Так

Built-in strings

Ні

Так

Так

Array bounds checking

Ні

Так

Так

Dynamic class loading

Ні

Так

Так

Inner (adaptor) classes

Ні

Ні

Так

Шаблони функцій

Так

Ні

Так

Covariant return types

Так

Ні

Так

Цикл for each

Ні

Так

Так

В таблиці (таб. 3.1) [11] наведено порівняння найбільш актуальних мов програмування на даному етапі розвитку інформаційних технологій. В ній наведено лише відмінні ознаки тієї чи іншої мови програмування. Тому було принято рішення, що Java найбільше підходить для виконання поставленої задачі, адже вона має ряд переваг над іншими мовами. Крім того, за допомогою Java є можливість створення додатків для операційної системи Android.

При створенні Android (операційної системи з відкритим кодом) Google взяла за основу Java. Не зважаючи на те, що операційна система, збудована на ядрі Linux, була написана переважно на C, Android SDK використовує Java для розробки застосунків для платформи Android.

3.2 Реалізація базових алгоритмів

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

1. Вхідний інтерфейс можна розділити на такі елементи:

- ініціалізація змінних

Потрібно ініціалізувати кнопку Button та 2 поля для вводу тексту EditText та створити оброблювач, щоб змусити реагувати кнопку на натиснення, за допомогою методу setOnClickListener():

EditText etForeignWord;

EditText etUkrainianWord;

Button btnOk;

etForeignWord = (EditText) findViewById(R.id.etForeignWord);

etUkrainianWord = (EditText) findViewById(R.id.etUkrainianWord);

btnOk = (Button) findViewById(R.id.btnOk);

btnOk.setOnClickListener(this);

// елементи бібліотек, які були використані

import android.content.Intent;

import android.widget.Button;

import android.widget.EditText;

- зчитування даних, які вводить користувач

Зчитування даних відбувається за допомогою методу getText(). Також, при зчитуванні даних, поля перевіряються на порожність:

if (!etForeignWord.getText().toString().equals("") &&

!etUkrainianWord.getText().toString().equals("")) {…}

- перенос даних в “AddActivity”

Базові алгоритми і структури даних - хеш таблиці. Дані переносяться в іншу активність за домогою об'єкту класу Itent, з використанням хеш таблиць, з використанням методу putExtra():

intent.putExtra("foreignWord", etForeignWord.getText().toString());

intent.putExtra("ukrainianWord", etUkrainianWord.getText().toString());

setResult(RESULT_OK, intent);

finish();

- розміщення даних в базу даних.

Базові алгоритми і структури даних - база даних, хеш таблиці. Застосовується база даних SQLite. Створюється клас, який наслідується від SQLiteOpenHelper. В ньому формується таблиця з полями “id”, “foreignWord”, “UkrainianWord”. Дані розміщуються в базу за допомогою об'єкту класу ContentValues з використанням хеш таблиць.

// створення бази даних

public class DBwordsAdd extends SQLiteOpenHelper {

public DBwordsAdd(Context context) {

super(context, "DBAdd", null, 1);

}

final String LOG_TAG = "myLogs";

@Override

public void onCreate(SQLiteDatabase db) {

Log.d(LOG_TAG, "--- onCreate database ---");

// создаем таблицу с полями

db.execSQL("create table frogtableadd ("

+ "id integer primary key autoincrement,"

+ "foreignword text,"

+ "ukrainianword text" + ");");

}

}

//розміщення елементів в базу даних

String foreignWord = data.getStringExtra("foreignWord");

String ukrainianWord = data.getStringExtra("ukrainianWord");

ContentValues cv = new ContentValues();

SQLiteDatabase dbAdd = dbHelperAdd.getWritableDatabase();

cv.put("foreignword", foreignWord);

cv.put("ukrainianword", ukrainianWord);

// елементи бібліотек, які були використані

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.content.ContentValues;

- видалення слів.

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

int enrtyFDel = data.getIntExtra("entryFDel", 0); // індикатор входу з

DeleteActivity

SQLiteDatabase dbAdd = dbHelperAdd.getWritableDatabase();

if(enrtyFDel==0) {

cv.put("foreignword", foreignWord);

cv.put("ukrainianword", ukrainianWord);

long rowID = dbAdd.insert("frogtableadd", null, cv);

Log.d(LOG_TAG, "row inserted, ID = " + rowID);

words.add(0, foreignWord + " - " + ukrainianWord);

adapter.notifyDataSetChanged();

}

//Елементи бібліотек

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.widget.Toast;

import java.util.ArrayList;

2. Вихідний інтерфейс можна розділити на такі елементи:

- Отримання даних з бази даних

Базові алгоритми і структури даних - база даних. Дані з бази даних отримуються за домогою об'єкту класу Cursor. Доступ її елементів забезпечується методами moveToFirst(), moveToNext():

Cursor c = dbAdd.query("frogtableadd", null, null, null, null, null, null);

if (c.moveToFirst()) {

// визначаємо номера стовбців по імені в виборці

int idColIndex = c.getColumnIndex("id");

int foreignColIndex = c.getColumnIndex("foreignword");

int ukrainianColIndex = c.getColumnIndex("ukrainianword");

do {

words.add(0, c.getString(foreignColIndex) + " - " +

c.getString(ukrainianColIndex));

adapter.notifyDataSetChanged();

} while (c.moveToNext());

//Елементи бібліотек

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

- Виведення даних в ListView

Базові алгоритми і структури даних - динамічний масив, список. Дані виводяться з допомогою ArrayAdapter, в який передаються елементи з динамічного масиву, який реалізований за допомогою колекції ArrayList. Він дозволяє виводити слова в список ListView:

// ініціалізуємо динамічний масив і список ListView

ListView wordList;

wordList = (ListView) findViewById(R.id.wordList);

public static ArrayList<String> words = new ArrayList<String>();

// створюємо adapter

wordList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

adapter = new ArrayAdapter<String>(this,

R.layout.my_list_item, words);

// Прив'яжемо масив через адаптер до ListView

wordList.setAdapter(adapter);

//Виведення елементів в список

words.add(0, c.getString(foreignColIndex) + " - " +

c.getString(ukrainianColIndex));

adapter.notifyDataSetChanged();

// Елементи бібліотек

import android.widget.ArrayAdapter;

import android.widget.ListView;

import java.util.ArrayList;

3.3 Реалізація програми

На прикладі реалізації активностей AddActivity та AddWordsActivity можна продемонструвати роботу базових алгоритмів та структур даних. З AddActivity, нажавши кнопку “Додати нове слово” можна перейти в AddWordsActivity, з якого користувач має змогу ввести нові слова, для вивчення. Ці слова, за допомогою хеш таблиці переносяться в AddActivity, а саме в базу даних. Також, вони виводяться в ListView, використовуючи при цьому динамічний масив та список, для перегляду користувачем введених слів.

AddActivity

// бібліотеки

import android.app.Activity;

import android.content.ContentValues;

import android.content.Context;

import android.content.Intent;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.ArrayAdapter;

import android.widget.Button;

import android.widget.ListView;

import android.widget.Toast;

import java.util.ArrayList;

public class AddActivity extends Activity implements

View.OnClickListener {

// ініціалізація змінних та елементів View

Button btnRead, btnAddNewWord, btnGo, btnBackToStart, btnDelWord;

DBwordsAdd dbHelperAdd;

ListView wordList;

public static ArrayAdapter<String> adapter;

public static ArrayList<String> words = new ArrayList<String>(); // масив,

який використовує адаптер, для виведення слів ListView

public static ArrayList<String> w1 = new ArrayList<String>(); // масиви

для роботи з іноземними словами

public static ArrayList<String> w2 = new ArrayList<String>(); // та їх

перекладами

static Boolean flag = true; // змінна, для першого запуску активності

int entry = 1; // змінна для переходу в GameActivity

// створення активності

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_add);

// створення оброблювача для кнопок

btnRead = (Button) findViewById(R.id.btnRead);

btnRead.setOnClickListener(this);

btnAddNewWord = (Button) findViewById(R.id.btnAddNewWord);

btnAddNewWord.setOnClickListener(this);

btnGo = (Button) findViewById(R.id.btnGo);

btnGo.setOnClickListener(this);

btnBackToStart = (Button) findViewById(R.id.btnBackToStart);

btnBackToStart.setOnClickListener(this);

btnDelWord = (Button) findViewById(R.id.btnDelWord);

btnDelWord.setOnClickListener(this);

// ListView

wordList = (ListView) findViewById(R.id.wordList);

wordList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

adapter = new ArrayAdapter<String>(this,

R.layout.my_list_item, words);

wordList.setAdapter(adapter);

// Підключення до БД

dbHelperAdd = new DBwordsAdd(this);

SQLiteDatabase dbAdd = dbHelperAdd.getWritableDatabase();

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

бази даних

if (flag) {

Cursor c = dbAdd.query("frogtableadd", null, null, null, null, null, null);

if (c.moveToFirst()) {

int idColIndex = c.getColumnIndex("id");

int foreignColIndex = c.getColumnIndex("foreignword");

int ukrainianColIndex = c.getColumnIndex("ukrainianword");

do {

words.add(0, c.getString(foreignColIndex) + " - " +

c.getString(ukrainianColIndex));

adapter.notifyDataSetChanged();

} while (c.moveToNext());

} else

c.close();

flag = false;

}

}

// обробка натиснень

@Override

public void onClick(View v) {

ContentValues cv = new ContentValues();

// підключаємось до БД

SQLiteDatabase dbAdd = dbHelperAdd.getWritableDatabase();

Intent intentAddDial = new Intent(this, AddWordsActivity.class);

Intent intentDelDial = new Intent(this, DeleteActivity.class);

switch (v.getId()) {

case R.id.btnAddNewWord: // перехід до введення слів

startActivityForResult(intentAddDial, 1);

break;

case R.id.btnDelWord: // перехід до введення слів

startActivityForResult(intentDelDial, 1);

break;

case R.id.btnBackToStart: // кнопка back

finish();

break;

case R.id.btnGo: // переміщення слів в ігровий режим

Cursor cGo = dbAdd.query("frogtableadd", null, null, null, null, null,

"RANDOM()");

w1.clear();

w2.clear();

if(cGo.getCount()>=12) {

if (cGo.moveToFirst()) {

int idColIndexGo = cGo.getColumnIndex("id");

int nameColIndexGo = cGo.getColumnIndex("foreignword");

int emailColIndexGo = cGo.getColumnIndex("ukrainianword");

Intent intent = new Intent(this, GameActivity.class);

do {

w1.add(cGo.getString(nameColIndexGo));

w2.add(cGo.getString(emailColIndexGo));

} while (cGo.moveToNext());

intent.putExtra("foreignword", w1);

intent.putExtra("ukrainianword", w2);

intent.putExtra("entry", entry);

startActivity(intent);

} else

int clearCount = dbAdd.delete("frogtableadd", null, null);

words.clear();

adapter.notifyDataSetChanged();

cGo.close();

} else Toast.makeText(this, "Кількість слів не повинна бути меншою за

12", Toast.LENGTH_LONG).show();

break;

default:

break;

}

dbHelperAdd.close();

}

//отримання даних з вікна вводу слів

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data)

{

if (data == null) {return;}

String foreignWord = data.getStringExtra("foreignWord");

String ukrainianWord = data.getStringExtra("ukrainianWord");

int enrtyFDel = data.getIntExtra("entryFDel", 0); // індикатор входу з

DeleteActivity

ContentValues cv = new ContentValues();

SQLiteDatabase dbAdd = dbHelperAdd.getWritableDatabase();

if(enrtyFDel==0) {

cv.put("foreignword", foreignWord);

cv.put("ukrainianword", ukrainianWord);

long rowID = dbAdd.insert("frogtableadd", null, cv);

Log.d(LOG_TAG, "row inserted, ID = " + rowID);

words.add(0, foreignWord + " - " + ukrainianWord);

adapter.notifyDataSetChanged();

}

//видалення слова

String delWord = data.getStringExtra("delWord");

String delTransWord = data.getStringExtra("delTransWord");

int delCount = dbAdd.delete("frogtableadd", "foreignword = " + delWord,

null);

if(words.contains(delWord + " - " + delTransWord)) {

words.remove(delWord + " - " + delTransWord);

adapter.notifyDataSetChanged();

Toast.makeText(this, "Слово видалено", Toast.LENGTH_SHORT).show();

} else if(enrtyFDel==1) Toast.makeText(this, "Слово не знайдено",

Toast.LENGTH_SHORT).show();

}

// база даних

public class DBwordsAdd extends SQLiteOpenHelper {

public DBwordsAdd(Context context) {

super(context, "DBAdd", null, 1);

}

@Override

public void onCreate(SQLiteDatabase db) {

Log.d(LOG_TAG, "--- onCreate database ---");

// создаем таблицу с полями

db.execSQL("create table frogtableadd ("

+ "id integer primary key autoincrement,"

+ "foreignword text,"

+ "ukrainianword text" + ");");

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

}

}

}

AddWordsActivity

// бібліотеки

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;

public class AddWordsActivity extends Activity implements

View.OnClickListener {

// ініціалізація елементів View

EditText etForeignWord;

EditText etUkrainianWord;

Button btnOk;

// створення активності

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_add_words);

etForeignWord = (EditText) findViewById(R.id.etForeignWord);

etUkrainianWord = (EditText) findViewById(R.id.etUkrainianWord);

btnOk = (Button) findViewById(R.id.btnOk);

btnOk.setOnClickListener(this);

}

// обробка натиснень

@Override

public void onClick(View v) {

Intent intent = new Intent();

switch (v.getId()) {

case R.id.btnOk: // перенесення слів в AddActivity

if (!etForeignWord.getText().toString().equals("") &&

!etUkrainianWord.getText().toString().equals("")){

intent.putExtra("foreignWord", etForeignWord.getText().toString());

intent.putExtra("ukrainianWord", etUkrainianWord.getText().toString());

setResult(RESULT_OK, intent);

finish();

Toast.makeText(this, "Додано нове іноземне слово",

Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(this, "Поля вводу не повинні бути порожніми",

}

break;

default:

break;

}

}

}

Таким чином в AddActivity та AddWordsActivity реалізовані вхідний та вихідний інтерфейси, та використані базові алгоритми: база даних, хеш таблиця, список, динамічний масив.

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

ВИСНОВКИ

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

При розробці курсової роботи були використані бібліотечні елементи бібліотек Java Development Kit та Android Software Development Kit.

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

В ході виконання проекту було отримано наступні навички: використання базових алгоритмів та структур даних, робота із візуальним середовищем програмування Android Studio, змінними різних типів, класами та об'єктами.

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

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Масив (структура даних) [Електроний ресурс]

2. Зв'язаний список [Електроний ресурс]

3. Стек [Електроний ресурс]

4. Черга (структура даних) [Електроний ресурс]

5. Двійкове дерево [Електроний ресурс]

6. АВЛ-дерево [Електроний ресурс]

7. Генетичний алгоритм [Електроний ресурс]

8. База даних [Електроний ресурс]

9. Алгоритм сортування [Електроний ресурс]

10. Java Development Kit [Електроний ресурс]

11. Язык D: лучшее от С++, Java, C# [Електроний ресурс]

Размещено на Allbest.ru


Подобные документы

  • Розробка та тестування додатків, які базуються на елементах мови програмування Java, принципи програмування в її середовищі. Вивчення переваг Java-платформи, прикладний програмний інтерфейс та особливості сучасних засобів створення Java-додатків.

    дипломная работа [2,8 M], добавлен 22.06.2011

  • Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.

    курсовая работа [991,4 K], добавлен 06.08.2013

  • Аналіз навігаційних технологій у сучасних AVL системах. Структура системи і вимоги до апаратного забезпечення, розробка алгоритмів функціонування окремих програмних модулів. Вибір мови програмування і СУБД. Тестовий варіант програмного забезпечення.

    дипломная работа [1,8 M], добавлен 17.12.2015

  • Аналіз предметної області та відомих реалізацій гри 2048. Універсальна мова моделювання UML в процесі проектування гри. Розробка алгоритмів функціонування модулів гри "2048". Оператори мови програмування Python. Особливості середовища Visual Studio.

    курсовая работа [1,2 M], добавлен 17.02.2021

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

  • Концепції об'єктно-орієнтованого програмування. Методи створення класів. Доступ до методів базового класу. Структура даних, функції. Розробка додатку на основі діалогових вікон, програми меню. Засоби розробки програмного забезпечення мовами Java та С++.

    курсовая работа [502,5 K], добавлен 01.04.2016

  • Розробка кросплатформового інструменту електронного тестування учнів молодших та середніх класів по іноземній мові. Вибір середовища розробки та системи контролю версій. Опис мови програмування Java та лістинг програми. Апаратні та програмні вимоги.

    дипломная работа [608,3 K], добавлен 26.10.2010

  • Розробка програми для управління навчальним процесом студентської групи вищого навчального закладу. Об’єктно-орієнтоване проектування об’єктів групи. Створення мови програмування Java. Побудова графічного інтерфейсу. Робота з невеликими базами даних.

    курсовая работа [935,3 K], добавлен 21.12.2013

  • Використання мови програмуванння Java при виконанні "задачі лінійного програмування": її лексична структура і типи даних. Методи розв’язання задачі. Особливості логічної структури програми, побудова її зручного інтерфейсу за допомогою симплекс методу.

    курсовая работа [437,9 K], добавлен 24.01.2011

  • Широкі можливості по використанню комп'ютерних навчальних систем. Розробка навчальної системи мультимедійного посібника з дисципліни "Інформатика і ОТ" на тему "Особливості мови програмування С++. Вказівники". Вимоги до розробки навчальної програми.

    курсовая работа [2,9 M], добавлен 23.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.