You are on page 1of 33

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Природничо-гуманітарний фаховий коледж


ДВНЗ «Ужгородський національний університет»

Реєстраційний номер 
Дата реєстрації 
Ковтун Ілля Євгенович
студент ІІІ курсу
групи КН-31
денної форми навчання
залікова книжка №253048МБД

ЗВІТНА РОБОТА
з навчальної практики
на тему:
«Каталог залізничного транспорту»

Допущено до захисту Науковий керівник:

Дата «  »   2022 р.
Викл. Верещагін О.О.
Підпис 

Робота захищена «  »   2022 р.


з оцінкою «  /  /  »
Підписи членів комісії 

Ужгород 2022
ЗМІСТ
ВСТУП 3
1 ТЕОРЕТИЧНА ЧАСТИНА 4
1.1 Загальні відомості про «Каталог залізничного транспорту» 4
1.2 Опис предметної області та постановка задачі 4
1.3 Огляд аналогів 5
1.4 Обґрунтування вибору методу розв’язку задачі 6
1.5 Огляд засобів розробки 6
2 ПРАКТИЧНА ЧАСТИНА 8
2.1 Інформаційна структура даних 8
2.2 Функціональні частини програми 11
2.3 Тестування проєкту 14
2.4 Інтерфейс та керівництво користувача 18
ВИСНОВКИ 20
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ 21
Додаток 1. Структурна схема проєкту 22
Додаток 2. Документація до програмного коду 23
Додаток 3. Лістинг 29

НП.253028МБД.22.000.ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Ковтун І. Є. Літ. Арк. Аркушів
Перевір. Верещагін О.О. 2 32
Консольний додаток «Каталог
Реценз.
залізничного транспорту»
Н. контр. Сидор Р.М. ПГФК ДВНЗ «УжНУ»
Затверд. Лукавська А.В.
Сьогодні спосіб пересування за допомогою потягів впринципі як і
завжди доволі популярний оскільки це дововолі швидко і практично
пересуватись на далекі відстані навідміну від автомобіля. Але далеко не
завжди люди можуть дізнатись чи існують квитки які їм потрібні тому тут на
допомогу і приходить ця програма, задопомогою неї користувач може
дізнатись чи існує потрібний йому квиток, без виходу з дому, так, ця
програма не сильно виграє по конкуренції порівняно з іншими вебсайтами
оскільки вебсайти навіть завантажувати не треба, а цей додаток потрібно, але
ця програма має і свої переваги.
Метою розробки консольного додатку «Каталог залізничного
транспорту» було ознайомлення з доступними поїздками на залізничному
транспорті.
Завданням навчального проєкту було реалізувати авторизацію,
реєстрацію та пошук потрібних поїздок.
В процесі створення проекту його було поступово скориговано
оскільки на початку проект зовсім не містив елементи ООП і навіть 3
шарової архітектури, з часом це все було скориговано і проєкт почав
наслідувати вимогам.
1

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
1 ТЕОРЕТИЧНА ЧАСТИНА
1.1 Загальні відомості про «Каталог залізничного транспорту»
Каталог залізничного транспорту – вид комп’ютерних програм, або
онлайн-сервісів, сворених для перегляду та замовлення поїздок в різні
місцевосці.
Зазвичай ціллю таких додатків, сайтів це ознайомлення з наявними на
даний момент поїздками та замовлення цифрових квитків.
Проєкт було обрано писати на мові рограмування Java, оскільки ця
мова є мультиплатформенною і проєкти на цій мові максимально легко
перенести, наприклад, з системи Android на систему iOS.
В консольному додатку присутні авторизація, реєстрація та пошук
поїздок. Якщо користувач вирішить шукати поїздки що знаходяться в
Україні то йому виб’є весь список поїздок які не перетинають державний
кордон, також користувач може пошукати поїзки які йдуть за кордон, або зза
кордону з учасютю іншої країни.

1.2 Опис предметної області та постановка задачі


Темою навчального проєкту було взято консольний додаток «Каталог
залізничного транспорту».
Постановка задачі.
 Реалізувати авторизацію.
 Реалізувати реєстрацію.
 Реалізувати каталог де буде зберігатись список поїздок.
Завдання: надати користувачу можливість пошуку потрібного рейсу,
також створити функції авторизації та реєстрації. Постановка задачі.
Розробка консольного архіву де можна буде ознайомитись з доступними
залізничними поїздками.
Завдання: надати користувачу можливість пошуку порібного каталолу,
також створити функції авторизації та реєстрації.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Сворити меню завдяки якому можна буде реалізувати пошук потрібної
поїздки.

1.3 Огляд аналогів


Прямих аналогів програми немає, при написанні програми велась
імпровізація. До аналогів можна частково віднести сайти:
Єдиний аналог що вдалося знайти аналог «Укр Залізниця»(див.
рисунок 1.1). Цю мережу сайтів було написано в найкращих українських
традиціях, а точніше ніводомо як, бо частина мережі сайтів морально і
фізично застаріла, ніби прийшла з 2010 року (див. рисунок 1.2), а інша
частина доволі сучасна, також можна подивитись графік пїздів, але цей сайт
навіть не закінчений, а точніше там можна найти функцію купівлі квитків
олайн, але купити не вийде нічого, тобто користувачу доведеться, йти на
вокзал і стояти в черзі аби купити квиток.

Рисунок 1.1 «Укр Залізниця»

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Рисунок 1.2 Застраівший інтерфейс

1.4 Обґрунтування вибору методу розв’язку задачі


Створення консольного додатку є доволі незвичною програмою, тому
ця програма дещо відрізняється від попередньо перерахованого анлогу. В
проєкті була реалізована функція пошуку рейсів, та також в програмі є
авторизація та реєстрація.
В проекті CRUD був реалізований за допомогою .txt файлів. Такий
вибір заґрунтовано на простоті вивчення бібліотеки (java.io) та його
простотою та ефективністю.

1.5 Огляд засобів розробки


IntelliJ IDEA(див.рис.1.4) — комерційне інтегроване середовище
розробки для різних мов програмування (Java, Python, Scala, PHP та ін.) від
компанії JetBrains. Система поставляється у вигляді урізаної по
функціональності безкоштовної версії «Community Edition» і
повнофункціональної комерційної версії «Ultimate Edition», для якої активні
розробники відкритих проектів мають можливість отримати безкоштовну

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
ліцензію. Сирцеві тексти Community-версії поширюються рамках ліцензії
Apache 2.0. Бінарні збірки підготовлені для Linux, Mac OS X і Windows.
Java — об’єктноорієнтована мова програмування, випущена 1995 року
компанією «Sun Microsystems» як основний компонент платформи Java. З
2009 року мовою займається компанія «Oracle», яка того року придбала «Sun
Microsystems». В офіційній реалізації Java-програми компілюються у байт-
код, який при виконанні інтерпретується віртуальною машиною для
конкретної платформи.
«Oracle» надає компілятор Java та віртуальну машину Java, які
задовольняють специфікації Java Community Process, під ліцензією GNU
General Public License.
Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу
об'єктну модель С++, проте її модифіковано. Усунуто можливість появи
деяких конфліктних ситуацій, що могли виникнути через помилки
програміста та полегшено сам процес розроблення об'єктно-орієнтованих
програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено
віртуальній машині. Передусім Java розроблялась як платформо-незалежна
мова, тому вона має менше низькорівневих можливостей для роботи з
апаратним забезпеченням, що в порівнянні, наприклад, з C++ зменшує
швидкість роботи програм. За необхідності таких дій Java дозволяє
викликати підпрограми, написані іншими мовами програмування.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
2 ПРАКТИЧНА ЧАСТИНА
2.1 Інформаційна структура даних
 Опис структури файлів
Весь проект зберігається в файлі «Katalog_0.1»

Рисунок 2.1 Коринева папка проекта «Katalog_0.1»


Вміст файлу «Katalog_0.1»

Рисунок 2.2 Вміст файлу «Katalog_0.1»


Вміст файлу «src»

Рисунок 2.3 Вміст файлу «src»


Вміст файлу «com»

Рисунок 2.4 Вміст файлу «com»

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Вміст файлу «data»

Рисунок 2.5 Вміст файлу «data »


Вміст файлу «illja123»

Рисунок 2.6 Вміст файлу «illja123»


Вміст файлу «railwaycatalog»

Рисунок 2.7 Вміст файлу «railwaycatalog»


Вміст файлу «META-INF»

Рисунок 2.8 Вміст файлу «META-INF»


Вміст файлу «ui»

Рисунок 2.9 Вміст файлу «ui»

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Вміст файлу «bl»

Рисунок 2.10 Вміст файлу «bl»


Вміст файлу «da»

Рисунок 2.11 Вміст файлу «da»


 Опис структур даних у файлах.
Файл «Autorization» (див. рисунок 2.10):
 «avtorization». Сервіс авторизації.
Файл «Registration» (див. рисунок 2.10)::
 «Registration». Cервіс для реєстрації.
Файл «Menu» (див. рисунок 2.9): :
 «main». Сервіс з основним меню.
 «avtorization». Сервіс з меню авторизації.
 «registration». Сервіс з меню реєстрації.
 «katalog». Сервіс з меню вибору типу поїздок.
Файл «ReadKatalog» (див. рисунок 2.11):
 «flights». Сервіс сортування потрібних поїздок.
Файл «ReadWriteUsers» (див. рисунок 2.11):
 «readText». Сервіс для авторизації.
 «writeText». Сервіс для реєстрації.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
2.2 Функціональні частини програми
 Використані бібліотеки.
При написанні програми було використано бібліотеки:
Таблиця 2.1 Використані бібліотеки
Назва Призначення
import java.io.*; Взвємодія з файлами
import java.util.*; Взаємодія з LinkedList i Scanner

 Таблиці змінних;
Таблиця 2.2 Змінні класа (Autorization)
Назва змінної Тип змінної Призначення змінної
name public String Публічна змінна, що зберігає ім’я
користувача
login public boolean Публічна змінна для перевірки чи
користувач зайшов в акаунт

Таблиця 2.3 Змінні класа (Registration)


Назва змінної Тип змінної Призначення змінної
name public String Публічна змінна, що зберігає ім’я
користувача
login public boolean Публічна змінна для перевірки чи
користувач зайшов в акаунт
userExists boolean Змінна для перевірки чи існує такий
користувач

Таблиця 2.4 Змінні класа (ReadKatalog)


Назва змінної Тип змінної Призначення змінної
catalog File Шлях до файлу
flightList String[] Список поїздок

num public int Кількість поїздок


countrys LinkedList<String> Список відсортованих поїздок

string String Змінна куди зберігається весь вміст


файлу

Таблиця 2.5 Змінні класа (ReadWriteUsers)


Назва змінної Тип змінної Призначення змінної
dirUsers File Шлях до файлу

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Продовження таблиці 2.5
users String[] Список користувачів
fr FileReader Змінна яка читає файл
fw FileReader Змінна яка записує нові дані в файл

Таблиця 2.6 Змінні класа (Menu)


Назва змінної Тип змінної Призначення змінної
oneTime boolean Змінна завдяки якій певний текст в
програмі пишеться тільки один раз.
choise String Вибір користувача
name String Ім’я користувача
password String Пароль користувача

 Внутрішні структури класів;


Внутрішня структура класа «Main».

Рисунок 2.12 Внутрішня структура класа «Main».


Внутрішня структура класа «Menu».

Рисунок 2.13 Внутрішня структура класа «Menu».

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Внутрішня структура класа «ReadKatalog».

Рисунок 2.14 Внутрішня структура класа «ReadKatalog».


Внутрішня структура класа «ReadWriteUsers».

Рисунок 2.15 Внутрішня структура класа «ReadWriteUsers».


Внутрішня структура класа «Autorization».

Рисунок 2.16 Внутрішня структура класа «Autorization».


Внутрішня структура класа «Registration».

Рисунок 2.17 Внутрішня структура класа «Registration».

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
2.3 Тестування проєкту
Запуск проекта.

Рисунок 2.18 Запуск проекта


Користувач обирає вихід.

Рисунок 2.19 Користувач обирає вихід.


Користувач вводить неіснуючий варіант.

Рисунок 2.20 Користувач вводить неіснуючий варіант.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Користувач вводить авторизацію.

Рисунок 2.21 Користувач вводить авторизацію.


Невдала авторизація.

Рисунок 2.22 Невдала авторизація.


Невдала реєстрація.

Рисунок 2.23 Невдала реєстрація.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Успішна авторизація.

Рисунок 2.24 Успішна авторизація.


Успішна реєстрація.

Рисунок 2.25 Успішна реєстрація.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Пошук потрібного залізничного каталогу.

Рисунок 2.26 Пошук потрібного залізничного каталогу.


Вихід.

Рисунок 2.27 Вихід.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Якщо користувач намагатиметься знайти неіснуючі рейси.

Рисунок 2.28 Якщо користувач намагатиметься знайти неіснуючі рейси.


Все працює швидко та стабільно, помилок не виникло.
2.4 Інтерфейс та керівництво користувача
 Вимоги до технічних засобів.
Для використанна даного програмного продукту у вас повинно бути
встановлено ОС Windows та набір JDK 18.
 Склад інсталяційного пакету та інструкція.
Для встановлення даної програми потрібно отримати файл «Katalog_0_1_jar».
Для його отримання потрібно розархівувати архів який ви отримаєте від
автора або з інших джерел. Вміст розархівованого файла Рисунок 2.29 - 2.50.

Рисунок 2.29 Вміст файлу «Katalog_0_1_jar».

Рисунок 2.30 Вміст файлу «data».

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
 Процес використання.
Для того щоб запустити програму потрібно вказати шлях до роміщення
файла в консолі або терміналі.

Рисунок 2.4.29 Шлях розміщення файлу «Katalog_0.1_jar».


Для того щоб запустити програму після вказоного шляху вписуєте
команду(java -jar Katalog_0.1.jar), після вписання команди натискаєте ентер.
Результат запуску програми.

Рисунок 2.4.30 Результат запуску програми.


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

Рисунок 2.4.31 Вихід з програми.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
ВИСНОВКИ
Підчас написання цієї навчальної практики я закріпив старі знання в
області ООП та отримав нові, також я навчився працювати з новими типами
масивів та файлами на мові програмування Java.
На сучасній версії до можливостей користувача входять: 
 Авторизація та реєстрація.
 Перегляд каталогу поїздок попереднім сортуванням, за бажанням
користувача.
Розвиток даного ПО не є доцільною, бо консольними додатками ніхто
не користується і є багано але і додатково є много різних онлайн аналогів які
є красивішими, досконалішими, ефективнішими. Також в майбутьому в
даний додаток можна буде добавити емулятор та завантажити ігри в
програму.

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Java — вікіпедія. URL: https://uk.wikipedia.org/wiki/Java (дата
звернення: 21.11.2022).
2. Приклади реалізації операцій, які модифікують текстові файли. URL:
https://www.bestprog.net/uk/2020/07/09/java-examples-of-implementation-of-
operations-that-modify-text-files-classes-filereader-fileoutputstream-printstream-
ua/ (дата звернення: 26.11.2022).
3. Додаткові класи для роботи з рядками в Java. URL:
https://javarush.com/ua/quests/lectures/ua.questsyntaxpro.level09.lecture05 (дата
звернення: 26.11.2022).
4. Консольний ввід/вивід в Java. URL:
https://metanit.com/java/tutorial/2.9.php (дата звернення: 26.11.2022).
5. Different ways of Reading a text file in Java. URL:
https://www.geeksforgeeks.org/different-ways-reading-text-file-java/ (дата
звернення: 26.11.2022).
6. Replace new line/return with space using regex. URL:
https://stackoverflow.com/questions/11048973/replace-new-line-return-with-
space-using-regex (дата звернення: 26.11.2022).
7. How to Convert Int to String in Java?. URL:
https://www.edureka.co/blog/convert-int-to-string-in-java/ (дата звернення:
26.11.2022).
8. Робота зі сканером в Java (введення і виведення данних). URL:
https://vertex-academy.com/tutorials/uk/robota-zi-skanerom-v-java-vvedennya-
vivedennya-dannix/ (дата звернення: 26.11.2022).

Арк.
НП.253028МБД.22.000.ПЗ
21
Змн. Арк. № докум. Підпис Дата
Додаток 1. Структурна схема проєкту

НП.253028МБД.22.000.Е1
Змн. Арк. № докум. Підпис Дата
Розроб. Ковтун І. Є. Літ. Арк. Аркушів
Перевір. Верещагін О.О. Консольний додаток «Каталог 22 32
залізничного транспорту»
Реценз.
Додаток 1. Схема даних..
Н. Контр. Сидор Р.М. ПГФК ДВНЗ «УжНУ»
Затверд. Лукавська А.В.
Додаток 2. Документація до програмного коду

НП. 253028МБД.22.000.ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Ковтун І. Є. Літ. Арк. Аркушів
Перевір. Верещагін О.О. Консольний додаток «Каталог 23 32
залізничного транспорту»
Реценз.
Додаток 2. Документація до
Н. контр. Сидор Р.М.
програмного коду. ПГФК ДВНЗ «УжНУ»
Затверд. Лукваська А.В.
Арк.
НП. 253028МБД.22.000.ПЗ
28
Змн. Арк. № докум. Підпис Дата
Арк.
НП. 253028МБД.22.000.ПЗ
28
Змн. Арк. № докум. Підпис Дата
Арк.
НП. 253028МБД.22.000.ПЗ
28
Змн. Арк. № докум. Підпис Дата
Арк.
НП. 253028МБД.22.000.ПЗ
28
Змн. Арк. № докум. Підпис Дата
Арк.
НП. 253028МБД.22.000.ПЗ
28
Змн. Арк. № докум. Підпис Дата
Додаток 3. Лістинг
Main.java
package com.illja123.railwaycatalog; System.out.println(auto.name);
import
com.illja123.railwaycatalog.ui.Menu; System.out.println("1.Авторизація");

/** System.out.println("2.Реєстрація");
* Базовий клас з якого запускається
програма
System.out.println("3.Каталог
*/
залізничного транспорту");
public class Main {
public static void main(String[]
args) { System.out.println("4.Вихід");
Menu menu = new Menu(); String choise =
menu.main(); in.nextLine();
} switch (choise) {
} case "1":
Menu.java avtorization();
package com.illja123.railwaycatalog.ui; break;
case "2":
import registration();
com.illja123.railwaycatalog.bl.*; break;
import case "3":
com.illja123.railwaycatalog.da.*; katalog();
break;
import java.util.Scanner; case "4":

/** System.out.println("Бувайте!" + "\n" +


* Клас меню "Сподіваємось вам сподобалась наша
*/ програма :)");
public class Menu { break;
boolean oneTime = true; default:
Scanner in = new
Scanner(System.in);
Autorization auto = new System.out.println("Такого пункту
Autorization(); немає");
Registration reg = new main();
Registration(); }
ReadKatalog read = new } else if (reg.login) {
ReadKatalog();
System.out.println(reg.name);
/**
* Головне меню System.out.println("1.Авторизація");
*/
public void main() {
if (oneTime) { System.out.println("2.Реєстрація");
System.out.println("Вітаємо
вас в залізничному каталозі!"); System.out.println("3.Каталог
System.out.println("Для залізничного транспорту");
початку виберіть один з пунктів:");
}
System.out.println("4.Вихід");
oneTime = false;
String choise =
if (auto.login) {

НП. 253028МБД.22.000.ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Ковтун І. Є. Літ. Арк. Аркушів
Перевір. Верещагін О.О. Консольний додаток «Каталог 29 32
Реценз. залізничного транспорту»
Н. Контр. Александра Н.В. Додаток 3. Лістинг ПГФК ДВНЗ «УжНУ»
Затверд. Лукавська А.В.
НП. 253028МБД.22.000.ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Ковтун І. Є. Літ. Арк. Аркушів
Перевір. Верещагін О.О. Консольний додаток «Каталог 29 32
Реценз. залізничного транспорту»
Н. Контр. Александра Н.В. Додаток 3. Лістинг ПГФК ДВНЗ «УжНУ»
Затверд. Лукавська А.В.
in.nextLine(); auto.login = false;
switch (choise) { reg.login = false;
case "1": System.out.println("Для почотку
avtorization(); введіть ім'я:");
break; String name = in.nextLine();
case "2": System.out.println("Тепер
registration(); введіть пароль:");
break; String password =
case "3": in.nextLine();
katalog(); if (name.equals("") ||
break; password.equals("") || name.equals(" ")
case "4": || password.equals(" ")) {
System.out.println("Ці
System.out.println("Бувайте!" + "\n" + пункти не можуть бути пустими!!!");
"Сподіваємось вам сподобалась наша } else {
програма :)"); auto.avtorization(name,
break; password);
default: if (!auto.login)
System.out.println("Такого користувача
не існує");
System.out.println("Такого пункту }
немає"); main();
main(); }
}
} else { /**
* Меню реєстрації
System.out.println("1.Авторизація"); */
private void registration() {
auto.login = false;
System.out.println("2.Реєстрація");
reg.login = false;
System.out.println("Вітаю! Як
System.out.println("3.Вихід"); мені називати вас?");
String choise = String name = in.nextLine();
in.nextLine(); System.out.println("Тепер
switch (choise) { придумайте собі пароль:");
case "1": String password =
avtorization(); in.nextLine();
break; if (name.equals("") ||
case "2": password.equals("") || name.equals(" ")
registration(); || password.equals(" ")) {
break; System.out.println("Ці
case "3": пункти не можуть бути пустими!!!");
} else {
System.out.println("Бувайте!" + "\n" + reg.registration(name,
"Сподіваємось вам сподобалась наша password);
програма :)"); if (!reg.login)
break; System.out.println("Такий коористувач
default: існує");
}
main();
System.out.println("Такого пункту }
немає");
main(); /**
} * Меню каталогу
} */
} private void katalog() {
System.out.println("Який список
/** ви хочете почитати?");
* Меню авторизації System.out.println("1.Рейси з
*/ перетинанням кордону");
private void avtorization() {

Арк.
НП. 253028МБД.22.000.ПЗ
32
Змн. Арк. № докум. Підпис Дата
System.out.println("2.Рейси в }
Україні"); }
System.out.println("3.Вихід"); ReadKatalog.java
String choise = in.nextLine(); package com.illja123.railwaycatalog.da;
switch (choise) {
case "1": import java.io.File;
import java.io.FileReader;
System.out.println("Введіть назву import java.io.IOException;
країни:"); import java.util.LinkedList;
String country =
in.nextLine(); /**
read.flights(country); * Читання каталогу з файлу
if (read.num > 0) { */
public class ReadKatalog {
File catalog = new File(".\\data\\
System.out.println("Список поїздок в catalog.txt");
країні " + country); public String[] flightList;
for (int i = 0; i < public int num = 0;
read.countrys.size(); i++) public LinkedList<String> countrys
= new LinkedList<>();
System.out.println(read.countrys.get(i)
); /**
} else { * Генерація списку з файлу
*
* @param country
System.out.println("Поїздаок з учасю
*/
такої країни немає");
public void flights(String country)
}
{
katalog();
countrys.clear();
break;
num = 0;
case "2":
try (FileReader fr = new
FileReader(catalog)) {
read.flights("Україна"); char[] chars = new
if (read.num > 0) { char[(int) catalog.length()];
fr.read(chars);
System.out.println("Список поїздок в String string = new
країні Україна"); String(chars);
for (int i = 0; i < flightList =
read.countrys.size(); i++) string.split("\n");
} catch (IOException e) {
e.printStackTrace();
System.out.println(read.countrys.get(i) }
); for (String flight :
} else { flightList) {
if (flight.split(" ")
System.out.println("Поїздаок з учасю [0].replace("\r", "").equals(country))
такої країни немає"); {
} countrys.add(num + 1 +
katalog(); ".Країна: " + country + "\n" + "
break; Звідки: " + flight.split(" ")[1] + "\n"
case "3": + " Куди: " + flight.split(" ")[2]);
main(); num++;
break; }
default: }
}
System.out.println("Такого варіанту не }
існує"); ReadWriteUsers.java
katalog(); package com.illja123.railwaycatalog.da;
break;
} import java.io.File;

Арк.
НП. 253028МБД.22.000.ПЗ
32
Змн. Арк. № докум. Підпис Дата
import java.io.FileReader; public boolean login = false;
import java.io.FileWriter; ReadWriteUsers readUsers = new
import java.io.IOException; ReadWriteUsers();

/** public void avtorization(String


* Читання і добавляння користувачів nameUser, String password) {
*/ readUsers.readText();
public class ReadWriteUsers { for (String user :
private File dirUsers = new readUsers.users) {
File(".\\data\\User.txt"); if (user.split(" ")
public String[] users; [0].replace("\r", "").equals(nameUser)
&& user.split(" ")[1].replace("\r",
/** "").equals(password)) {
* Зчитування коистувачів з файлу login = true;
*/ name = nameUser;
public void readText() { }
try (FileReader fr = new }
FileReader(dirUsers)) { }
char[] chars = new }
char[(int) dirUsers.length()]; Registration.java
fr.read(chars); package com.illja123.railwaycatalog.bl;
String string = new
String(chars); import
users = string.split("\n"); com.illja123.railwaycatalog.da.*;
} catch (IOException e) {
e.printStackTrace(); /**
} * Клас реєстрації
} */
public class Registration {
/** public String name;
* Добавляння користувачів у файл ReadWriteUsers writeUsers = new
* ReadWriteUsers();
* @param newUser public boolean login = false;
*/
public void writeText(String public void registration(String
newUser) { nameUser, String password) {
try (FileWriter fw = new writeUsers.readText();
FileWriter(dirUsers, true)) { boolean userExists = false;
fw.append(newUser + "\n"); for (String user :
} catch (IOException e) { writeUsers.users) {
e.printStackTrace(); if (user.split(" ")
} [0].replace("\r", "").equals(nameUser))
} {
} userExists = true;
Autorization.java }
package com.illja123.railwaycatalog.bl; }
if (!userExists) {
import login = true;
com.illja123.railwaycatalog.da.ReadWrit name = nameUser;
eUsers;
writeUsers.writeText(nameUser + " " +
/** password);
* Клас авторизації }
*/ }
public class Autorization { }
public String name;

Арк.
НП. 253028МБД.22.000.ПЗ
32
Змн. Арк. № докум. Підпис Дата

You might also like