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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

Детальне порівняння мов програмування наведено в розділі 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,