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

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    172,75 Кб
  • Опубликовано:
    2014-06-24
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

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

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

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

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

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





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

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

на тему:

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



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

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

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




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

АНОТАЦІЯ

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

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


ЗМІСТ

ВСТУП

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

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

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

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

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

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

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

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

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

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

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

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

ВИСНОВКИ

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


ВСТУП

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

.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]. Серед найвідоміших алгоритмів сортування: сортування бульбашкою, сортування вставками, швидке сортування, сортування Шелла.

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

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

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

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

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

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

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

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

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

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

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

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

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

Детальне порівняння мов програмування наведено в розділі 3.(вимовляється Джава; інколи - Ява) - об'єктно-орієнтована мова програмування, випущена компанією Sun Microsystems у 1995 році як основний компонент платформи Java. Зараз мовою займається компанія Oracle, яка придбала Sun Microsystems у 2009 році. Синтаксис мови багато в чому схожий на C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.надає компілятор 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. АЛГОРИТМИ ТА СТРУКТУРИ ДАНИХ СТВОРЕННЯ СИСТЕМИ ДЛЯ ВИВЧЕННЯ ІНОЗЕМНИХ СЛІВ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

etForeignWord;etUkrainianWord;btnOk;= (EditText) findViewById(R.id.etForeignWord);= (EditText) findViewById(R.id.etUkrainianWord);= (Button) findViewById(R.id.btnOk);.setOnClickListener(this);

// елементи бібліотек, які були використаніandroid.content.Intent;android.widget.Button;android.widget.EditText;

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

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

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

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

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

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

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

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

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

// створення бази данихclass DBwordsAdd extends SQLiteOpenHelper {DBwordsAdd(Context context) {(context, "DBAdd", null, 1);

}String LOG_TAG = "myLogs";

@Overridevoid onCreate(SQLiteDatabase db) {.d(LOG_TAG, "--- onCreate database ---");

// создаем таблицу с полями.execSQL("create table frogtableadd ("

+ "id integer primary key autoincrement,"

+ "foreignword text,"

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

}

}

//розміщення елементів в базу данихforeignWord = data.getStringExtra("foreignWord");ukrainianWord = data.getStringExtra("ukrainianWord");cv = new ContentValues();dbAdd = dbHelperAdd.getWritableDatabase();

.put("foreignword", foreignWord);.put("ukrainianword", ukrainianWord);

// елементи бібліотек, які були використаніandroid.database.sqlite.SQLiteDatabase;android.database.sqlite.SQLiteOpenHelper;android.content.ContentValues;

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

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

enrtyFDel = data.getIntExtra("entryFDel", 0); // індикатор входу з dbAdd = dbHelperAdd.getWritableDatabase();(enrtyFDel==0) {.put("foreignword", foreignWord);.put("ukrainianword", ukrainianWord);rowID = dbAdd.insert("frogtableadd", null, cv);.d(LOG_TAG, "row inserted, ID = " + rowID);.add(0, foreignWord + " - " + ukrainianWord);.notifyDataSetChanged();

}

//Елементи бібліотекandroid.database.Cursor;android.database.sqlite.SQLiteDatabase;android.database.sqlite.SQLiteOpenHelper;android.widget.Toast;java.util.ArrayList;

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

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

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

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

// визначаємо номера стовбців по імені в виборціidColIndex = c.getColumnIndex("id");foreignColIndex = c.getColumnIndex("foreignword");ukrainianColIndex = c.getColumnIndex("ukrainianword");{.add(0, c.getString(foreignColIndex) + " - " + .getString(ukrainianColIndex));.notifyDataSetChanged();

} while (c.moveToNext());

//Елементи бібліотекandroid.database.Cursor;android.database.sqlite.SQLiteDatabase;android.database.sqlite.SQLiteOpenHelper;

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

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


// створюємо adapter.setChoiceMode(ListView.CHOICE_MODE_SINGLE);= new ArrayAdapter<String>(this,.layout.my_list_item, words);

// Прив’яжемо масив через адаптер до ListView.setAdapter(adapter);

//Виведення елементів в список.add(0, c.getString(foreignColIndex) + " - " + .getString(ukrainianColIndex));.notifyDataSetChanged();

// Елементи бібліотекandroid.widget.ArrayAdapter;android.widget.ListView;java.util.ArrayList;

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

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

// бібліотекиandroid.app.Activity;android.content.ContentValues;android.content.Context;android.content.Intent;android.database.Cursor;android.database.sqlite.SQLiteDatabase;android.database.sqlite.SQLiteOpenHelper;android.os.Bundle;android.util.Log;android.view.View;android.widget.ArrayAdapter;android.widget.Button;android.widget.ListView;android.widget.Toast;java.util.ArrayList;

class AddActivity extends Activity implements .OnClickListener {

// ініціалізація змінних та елементів ViewbtnRead, btnAddNewWord, btnGo, btnBackToStart, btnDelWord;dbHelperAdd;wordList;static ArrayAdapter<String> adapter;static ArrayList<String> words = new ArrayList<String>(); // масив,

який використовує адаптер, для виведення слів ListViewstatic ArrayList<String> w1 = new ArrayList<String>(); // масиви

для роботи з іноземними словамиstatic ArrayList<String> w2 = new ArrayList<String>(); // та їх

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

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

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.activity_add);

// створення оброблювача для кнопок= (Button) findViewById(R.id.btnRead);.setOnClickListener(this);

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

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

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

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

// ListView= (ListView) findViewById(R.id.wordList);.setChoiceMode(ListView.CHOICE_MODE_SINGLE);= new ArrayAdapter<String>(this,.layout.my_list_item, words);.setAdapter(adapter);

// Підключення до БД= new DBwordsAdd(this);dbAdd = dbHelperAdd.getWritableDatabase();

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

бази даних(flag) {c = dbAdd.query("frogtableadd", null, null, null, null, null, null);(c.moveToFirst()) {idColIndex = c.getColumnIndex("id");foreignColIndex = c.getColumnIndex("foreignword");ukrainianColIndex = c.getColumnIndex("ukrainianword");{.add(0, c.getString(foreignColIndex) + " - " + .getString(ukrainianColIndex));.notifyDataSetChanged();

} while (c.moveToNext());

} else.close();= false;

}

}

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

@Overridevoid onClick(View v) {cv = new ContentValues();

// підключаємось до БДdbAdd = dbHelperAdd.getWritableDatabase();intentAddDial = new Intent(this, AddWordsActivity.class);intentDelDial = new Intent(this, DeleteActivity.class);(v.getId()) {R.id.btnAddNewWord: // перехід до введення слів(intentAddDial, 1);;R.id.btnDelWord: // перехід до введення слів(intentDelDial, 1);;R.id.btnBackToStart: // кнопка back();;R.id.btnGo: // переміщення слів в ігровий режимcGo = dbAdd.query("frogtableadd", null, null, null, null, null,

"RANDOM()");.clear();.clear();(cGo.getCount()>=12) {(cGo.moveToFirst()) {idColIndexGo = cGo.getColumnIndex("id");nameColIndexGo = cGo.getColumnIndex("foreignword");emailColIndexGo = cGo.getColumnIndex("ukrainianword");intent = new Intent(this, GameActivity.class);{.add(cGo.getString(nameColIndexGo));.add(cGo.getString(emailColIndexGo));

} while (cGo.moveToNext());.putExtra("foreignword", w1);.putExtra("ukrainianword", w2);.putExtra("entry", entry);(intent);

} elseclearCount = dbAdd.delete("frogtableadd", null, null);.clear();.notifyDataSetChanged();.close();

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

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

}.close();

}

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

@Overridevoid onActivityResult(int requestCode, int resultCode, Intent data)

{(data == null) {return;}foreignWord = data.getStringExtra("foreignWord");ukrainianWord = data.getStringExtra("ukrainianWord");enrtyFDel = data.getIntExtra("entryFDel", 0); // індикатор входу з cv = new ContentValues();dbAdd = dbHelperAdd.getWritableDatabase();

(enrtyFDel==0) {.put("foreignword", foreignWord);.put("ukrainianword", ukrainianWord);rowID = dbAdd.insert("frogtableadd", null, cv);.d(LOG_TAG, "row inserted, ID = " + rowID);.add(0, foreignWord + " - " + ukrainianWord);.notifyDataSetChanged();

}

//видалення словаdelWord = data.getStringExtra("delWord");delTransWord = data.getStringExtra("delTransWord");delCount = dbAdd.delete("frogtableadd", "foreignword = " + delWord, );(words.contains(delWord + " - " + delTransWord)) {.remove(delWord + " - " + delTransWord);.notifyDataSetChanged();.makeText(this, "Слово видалено", Toast.LENGTH_SHORT).show();

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

}

// база данихclass DBwordsAdd extends SQLiteOpenHelper {DBwordsAdd(Context context) {(context, "DBAdd", null, 1);

}

@Overridevoid onCreate(SQLiteDatabase db) {.d(LOG_TAG, "--- onCreate database ---");

// создаем таблицу с полями.execSQL("create table frogtableadd ("

+ "id integer primary key autoincrement,"

+ "foreignword text,"

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

}

@Overridevoid onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

{

}

}

}

// бібліотекиandroid.app.Activity;android.content.Intent;android.os.Bundle;android.view.View;android.widget.Button;android.widget.EditText;android.widget.Toast;

class AddWordsActivity extends Activity implements .OnClickListener {

// ініціалізація елементів ViewetForeignWord;etUkrainianWord;btnOk;

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

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.activity_add_words);= (EditText) findViewById(R.id.etForeignWord);= (EditText) findViewById(R.id.etUkrainianWord);= (Button) findViewById(R.id.btnOk);.setOnClickListener(this);

}

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

@Overridevoid onClick(View v) {intent = new Intent();(v.getId()) {R.id.btnOk: // перенесення слів в AddActivity(!etForeignWord.getText().toString().equals("") &&

!etUkrainianWord.getText().toString().equals("")){.putExtra("foreignWord", etForeignWord.getText().toString());.putExtra("ukrainianWord", etUkrainianWord.getText().toString());(RESULT_OK, intent);();.makeText(this, "Додано нове іноземне слово", .LENGTH_SHORT).show();

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

};:;

}

}

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

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


ВИСНОВКИ

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!