Professional Documents
Culture Documents
Звіт до курсової роботи Сидоренко
Звіт до курсової роботи Сидоренко
Ужгород – 2023
ЗМІСТ
ВСТУП 3
1.ТЕОРЕТИЧНА ЧАСТИНА 7
1.1 Що таке електронний довідник? 7
1.2 Призначення довідника 8
1.3 Огляд аналогів 9
1.4 Опис предметної області та постановка задачі 14
1.5 Огляд використаних технологій та інструментальних засобів 15
1.5.1 Загальні відомості про Java 15
1.5.2 Загальні відомості про Gradle 16
1.5.3 Середовище розробки Android Studio 17
2.ПРАКТИЧНА ЧАСТИНА 19
2.1 Проектна частина 19
2.1.1 Функціональні частини програми 19
2.1.2 Опис структури класів 19
2.1.3 Тестування проекту: план, методи та інструменти 20
2.2 Експлуатаційна частина 24
2.2.1 Опис умов впровадження програмного продукту 24
ВИСНОВКИ 25
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ 27
Додаток 1. Лістинг 28
ВСТУП
Сучасний світ надзвичайно швидко розвивається, його нерозривною
частиною стала інформаційна технологія. За останні роки інтернет, мобільні
пристрої та різноманітні програмні рішення стали невід'ємною складовою
повсякденного життя. У цьому контексті ефективне та зручне використання
та доступ до інформації має велике значення для успішної навігації в
цифровому світі.
Одним із найпоширеніших способів забезпечити доступ до інформації
є використання електронних довідників. Вони надають можливість швидкого
пошуку необхідної інформації та організації її у зручному форматі. Однак,
існуючі електронні довідники можуть мати обмежені можливості тестування
та повторення матеріалу, що впливає на їхню практичну користь.
Метою цієї курсової роботи є розробка електронного довідника з
вбудованою системою тестування та повторення, що базується на мові
програмування Ruby та реалізована в середовищі Android Studio з
використанням мови Java. Розроблений довідник надасть користувачам
можливість не тільки швидко знаходити необхідну інформацію про Ruby, але
й перевіряти свої знання, виконуючи тести та повторюючи матеріал. Таким
чином, користувачі зможуть залучатись до активного вивчення та
систематизації знань з мови Ruby.
Головними завданнями роботи є:
1. Розробка інтерфейсу користувача електронного довідника. Буде
створено зручний та інтуїтивно зрозумілий інтерфейс, який дозволить
користувачеві знаходити необхідну інформацію швидко та ефективно.
2. Реалізація системи тестування. Користувач зможе перевірити свої
знання, виконуючи різні тести, що містяться в електронному довіднику.
3
В ході розробки цього електронного довідника будуть використані
сучасні технології, такі як Android Studio для розробки мобільного додатку,
мова програмування Java для реалізації
Результатом цієї курсової роботи буде функціональний електронний
довідник з вбудованою системою тестування, який дозволить користувачам
зручно та ефективно отримувати доступ до необхідної інформації та
перевіряти свої знання.
4
1. Теоретична частина
1.1 Що таке електронний довідник?
Електронний довідник є комп'ютерною програмою або мобільним
додатком, який містить інформацію та матеріали з певної області знань або
предмету. Він призначений для надання користувачам зручного та швидкого
доступу до необхідних даних, фактів, визначень, інструкцій, формул та
інших ресурсів, пов'язаних з обраною темою.
Електронний довідник може включати різноманітні розділи та
підрозділи, що охоплюють різні аспекти предмета або області знань. Він
може містити текстові матеріали, ілюстрації, відео- або аудіофайли, графіки,
таблиці та інші типи інформації.
Довідники можуть охоплювати широкий спектр тематик, включаючи
словники, енциклопедії, каталоги продуктів, туристичні путівники, медичні
довідники, технічні документації і багато іншого. Вони забезпечують
швидкий доступ до інформації і можуть бути дуже корисними для отримання
відповідей на питання або розширення загальних знань.
Основна його перевага полягає в його мобільності та доступності. Він
може бути встановлений на персональний комп'ютер або смартфон, що
дозволяє користувачам мати постійний доступ до необхідних даних
незалежно від місця та часу. Крім того, електронний довідник може бути
оновлений та доповнений з часом, що забезпечує актуальність інформації для
користувачів.
6
1.3 Огляд аналогів
Додаток Learn JavaScript є аналогом довідника по Ruby. Де користувач
може дізнатись багато корисної інформації про мову програмування.
Переваги додатку полягають в тому що додаток має красивий
інтерфейс, є поділ по розділам, та доступна інформація про декілька мов
програмування.
7
На рисунку 1.3 можемо побачити інтерфейс програми з красивим та
структурованим інтерфейсом, тож текст читати зручно і приємно.
8
В програмі також є розділ з новинами, де ми можемо прочитати
найсвіжіші оновлення про мови програмування.
10
Рисунок 1.10 Інтерфейс додатку LearnPHPProgrammer
В додатку наведені знімки екрана що допомагають краще візуалізувати
інформацію, що звісно позитивно проявиться на запам’ятовуванні
інформації.
11
Немає пошуку по розділам, що додає багато часу користувачеві
для пошуку потрібної інформації;
Не сучасний інтерфейс, не дуже приємно вчитись в програмі;
В програмі є великий баг при якому кнопка повернення в головне
меню зникає, і доводиться виходити з програми для того щоб вибрати новий
розділ.
1.4 Опис предметної області та постановка задачі
Опис предметної області для звіту до курсової роботи «Створення
електронного довідника Ruby з вбудованою системою тестування та
повторення на базі Android довідник, створений на Java в Android Studio».
13
роботу з мережами. У деяких версіях задля збільшення продуктивності JVM
байт-код можна компілювати у машинний код до або під час виконання
програми.
Швидкість офіційної віртуальної машини Java значно покращилася з
моменту випуску ранніх версій, до того ж, деякі випробування показали, що
продуктивність JIT-компіляторів у порівнянні зі звичайними компіляторами
у машинний код майже однакова. Проте ефективність компіляторів не
завжди свідчить про швидкість виконання скомпільованого коду, тільки
ретельне тестування може виявити справжню ефективність у даній системі.
1.5.2 Загальні відомості про Gradle
Gradle — система автоматичного збирання, яка далі розвиває
принципи, закладені в Apache Ant та Apache Maven і
використовує предметно-орієнтовану мову (DSL) на основі
мови Groovy замість традиційної XML-подібної форми представлення
конфігурації проекту. Для визначення порядку виконання завдань Gradle
використовує орієнтований ациклічний граф ("DAG").
14
Gradle було розроблено для побудови мультипроектів, які можуть
розростатися, і підтримує інкрементальне збирання. Вона визначає, які
частини було змінено, і виконує тільки ті задачі, які залежать від цих частин.
Основні плагіни призначені для розробки і
розгортання Java, Groovy і Scala додатків, але готуються плагіни і для
інших мов програмування.
1.5.3 Середовище розробки Android Studio
Android Studio — це інтегроване середовище розробки (IDE),
спеціально створене для розробки мобільних додатків на платформі Android.
Воно надає розробникам широкий набір інструментів, що спрощують процес
створення, тестування та розгортання додатків для Android.
16
2. ПРАКТИЧНА ЧАСТИНА
2.1 Проектна частина
2.1.1 Функціональні частини програми
Для розробки програми було використано Java. Розробка проводилася в
середовищі Android Studio.
На рисунку 2.1 зображено структуру програми, її файли, класи, форми
та інше.
17
Клас «QuestionAnswer» є класом, що містить питання та відповіді для
тестування знань. У ньому зберігаються масиви рядків з питаннями,
варіантами відповідей та правильними відповідями.
Клас «TestActivity» відповідає за функціонал тестування. Його основна
відповідність полягає в відображенні питань, варіантів відповідей та обробці
вибору користувача.
Алгоритм роботи програми:
- При запуску програми користувачу будуть представленні
розділи.
- Користувач може вибрати розділ який його цікавить натиснувши
на нього, після чого відкриється пояснення даного розділу.
- Також, користувач може скористуватись пошуком на головній
сторінці програми, для легшого пошуку.
- Після того як користувач переглянув довідку є можливість
перевірити знаня, пройшовши тестування.
- В кінці тестування користувачу буде показаний його результат з
кількістю правильних відповідей.
2.1.3 Тестування проекту: план, методи та інструменти
В Головному меню користувачу доступні розділи натиснувши на який,
буде відкрито нове вікно де буде можливість прочитати інформацію.
Також в додатку реалізований пошук, для того щоб клієнт зміг швидко
та зручно знайти потрібний розділ.
Останній елемент, кнопка тестування, натиснувши на яку користувачу
буде задано декілька запитань по мові програмування Ruby, тим самим
перевіривши свої знання.
18
Рисунок 2.2 Інтерфейс додатку
На рисунку 2.3 зображено опис розділу «Ruby» в якому можна
ознайомитись з значенням даної мови.
19
Рисунок 2.4 Робота пошуку
У вікні тестування користувачу представлене запитання де є чотири
варіанти відповідей, потрібно натиснути на варіант, який вважається
правильним, якщо користувач натиснув на відповідь вона засвітиться
фіолетовим кольором як можна побачити на рисунку, що буде означати те,
що вона прийнята і можна натиснути на кнопку «Відповісти».
Якщо є бажання завершити тестування, то можна натиснути на
«Головне меню» і повернутись до розділів для подальшого вивчення.
20
Рисунок 2.6 Інтерфейс тестування
Після того як буде пройдено всі тести, на екрані висвітиться
інформація про кількість правильних відповідей.
21
2.2 Експлуатаційна частина
2.2.1 Опис умов впровадження програмного продукту
Програмний продукт був розроблений з цілю проінформувати
користувача про мову програмування Ruby. Програмним продуктом можна
користуватись на мобільному телефоні з операційною системою Android.
Також, програма не портебує інтернету для її експлуатації, тож
користувач прочитати корисну для нього інформацію в будь який час.
22
ВИСНОВКИ
23
Існує велика кількість ресурсів і документації, присвячених розробці на
Java для Android, що полегшує процес вивчення та реалізації необхідних
функцій у вашому довіднику.
Розробка електронного довідника на платформі Android забезпечує
мобільний доступ до інформації, що робить його зручним і простим у
використанні для користувачів.
Отже, підсумувавши висновки, можна сказати, що курсовий проект
пройшов успішно і було досягнуто усіх поставлених цілей.
24
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
25
Лістинг
DetailActivity
InputStreamReader inputReader = new
package com.example.manual; InputStreamReader(inputStream);
BufferedReader buffReader = new
import android.content.Context; BufferedReader(inputReader);
import android.content.Intent; String line;
import android.os.Bundle; StringBuilder builder = new
import StringBuilder();
androidx.appcompat.app.AppCompatActivit
y; try {
import android.util.Log; while (( line =
import android.webkit.WebView; buffReader.readLine()) != null) {
builder.append(line);
import java.io.BufferedReader; builder.append("\n");
import java.io.IOException; }
import java.io.InputStream; } catch (IOException e) {
import java.io.InputStreamReader; return null;
}
public class DetailActivity extends return builder.toString();
AppCompatActivity { }
}
@Override
protected void onCreate(Bundle MainActivity
savedInstanceState) { package com.example.manual;
super.onCreate(savedInstanceState);
import android.content.Intent;
setContentView(R.layout.activity_detai import android.os.Bundle;
l); import
androidx.appcompat.app.AppCompatActivit
WebView webView = y;
findViewById(R.id.webView); import android.view.View;
import android.widget.AdapterView;
Intent intent = getIntent(); import android.widget.ArrayAdapter;
String resName = "n" + import android.widget.ListView;
intent.getIntExtra("title", 0); import android.widget.SearchView;
Log.i("name", resName);
Context context = getBaseContext(); import java.util.ArrayList;
26
setContentView(R.layout.activity_main }
); });
searchView = listView.setOnItemClickListener(new
findViewById(R.id.search); AdapterView.OnItemClickListener() {
listView = public void
findViewById(R.id.listView); onItemClick(AdapterView<?> a, View v, int
position, long id) {
arrayList = new ArrayList<>(); Intent intent = new Intent();
intent.setClass(MainActivity.this,
arrayList.add("Ruby"); DetailActivity.class);
arrayList.add("Алфавіт мови Ruby"); intent.putExtra("arrayList",
arrayList.add("Синтаксис"); position);
arrayList.add("Коментар"); startActivity(intent);
arrayList.add("Лексема"); }
arrayList.add("Тип даних"); });
arrayList.add("Семантика"); }
arrayList.add("Масиви");
arrayList.add("Ключові слова"); public void test(View v) {
arrayList.add("Оператор while"); Intent intent = new Intent(this,
arrayList.add("Оператор until"); TestActivity.class);
arrayList.add("Оператор for"); startActivity(intent);
arrayList.add("Оператори керування }
циклом");
arrayList.add("Параметри роботи з }
файлами");
arrayList.add("Вбудовані QuestionAnswer
бібліотеки"); package com.example.manual;
TestActivity totalQuestionsTextView.setText("Total
package com.example.manual; questions : "+totalQuestion);
import loadNewQuestion();
androidx.appcompat.app.AppCompatActivit
y; }
@Override
protected void onCreate(Bundle }else{
savedInstanceState) { //choices button clicked
super.onCreate(savedInstanceState); selectedAnswer =
setContentView(R.layout.activity_test); clickedButton.getText().toString();
28
clickedButton.setBackgroundColor( Intent intent = new Intent(this,
Color.MAGENTA); MainActivity.class);
startActivity(intent);
} }
}
}
void loadNewQuestion(){
activity_detail
if(currentQuestionIndex ==
totalQuestion ){ <?xml version="1.0" encoding="utf-8"?>
finishQuiz(); <LinearLayout
return; xmlns:android="http://schemas.android.c
} om/apk/res/android"
android:orientation="vertical"
questionTextView.setText(QuestionAn android:layout_width="match_parent"
swer.question[currentQuestionIndex]); android:layout_height="match_parent">
ansA.setText(QuestionAnswer.choices[
currentQuestionIndex][0]); <WebView
ansB.setText(QuestionAnswer.choices[ android:id="@+id/webView"
currentQuestionIndex][1]); android:layout_width="match_parent"
ansC.setText(QuestionAnswer.choices[ android:layout_height="match_parent"
currentQuestionIndex][2]); >
ansD.setText(QuestionAnswer.choices[ </WebView>
currentQuestionIndex][3]); </LinearLayout>
} activity_main
</LinearLayout>
<Button
android:id="@+id/submit_btn"
android:layout_width="match_parent"
android:layout_height="82dp"
android:layout_below="@id/choices_la
yout"
android:layout_marginTop="21dp"
android:backgroundTint="@color/oran
ge"
android:insetLeft="20dp"
android:insetTop="20dp"
31