Created
May 22, 2025 06:31
-
-
Save untainsYD/d137a7e5b740569fa86ab95b00572bbc to your computer and use it in GitHub Desktop.
Laboratory 5, Task 1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package lab5.fileio; | |
| import lab3.tram.TramStop; | |
| import lab3.tram.Hour; | |
| import java.io.IOException; | |
| /** | |
| * Абстрактний клас для представлення трамвайної зупинки з можливостями файлового введення-виведення. | |
| * Розширює базовий клас TramStop додатковими операціями роботи з файлами різних форматів. | |
| */ | |
| public abstract class TramStopWithFile extends TramStop { | |
| /** | |
| * Конструктор за замовчуванням | |
| */ | |
| public TramStopWithFile() { | |
| super("", new int[0]); | |
| } | |
| /** | |
| * Конструктор з параметрами | |
| * @param name назва зупинки | |
| * @param routeNumbers номери маршрутів | |
| * @param hours години роботи | |
| */ | |
| public TramStopWithFile(String name, int[] routeNumbers, Hour[] hours) { | |
| super(name, routeNumbers); | |
| setHours(hours); | |
| } | |
| /** | |
| * Абстрактний метод для читання даних з файлу | |
| * @param fileName ім'я файлу для читання | |
| * @throws IOException у разі помилки введення-виведення | |
| * @throws Exception у разі інших помилок | |
| */ | |
| public abstract void readFromFile(String fileName) throws IOException, Exception; | |
| /** | |
| * Абстрактний метод для запису даних у файл | |
| * @param fileName ім'я файлу для запису | |
| * @throws IOException у разі помилки введення-виведення | |
| * @throws Exception у разі інших помилок | |
| */ | |
| public abstract void writeToFile(String fileName) throws IOException, Exception; | |
| /** | |
| * Метод для демонстрації роботи з файлами | |
| * @param sourceFile вихідний файл | |
| * @param sortedByPassengersFile файл для збереження відсортованих за пасажирами даних | |
| * @param sortedByCommentsFile файл для збереження відсортованих за коментарями даних | |
| */ | |
| public void demonstrateFileOperations(String sourceFile, String sortedByPassengersFile, String sortedByCommentsFile) { | |
| try { | |
| // Створення тестових даних | |
| createTestData(); | |
| System.out.println("=== Створені тестові дані ==="); | |
| displayToConsole(); | |
| // Запис у вихідний файл | |
| writeToFile(sourceFile); | |
| System.out.println("\n=== Дані записані у файл: " + sourceFile + " ==="); | |
| // Очищення даних та читання з файлу | |
| clearData(); | |
| readFromFile(sourceFile); | |
| System.out.println("\n=== Дані прочитані з файлу ==="); | |
| displayToConsole(); | |
| // Сортування за кількістю пасажирів та збереження | |
| sortByPassengersCountBubble(); | |
| writeToFile(sortedByPassengersFile); | |
| System.out.println("\n=== Дані відсортовані за кількістю пасажирів та збережені у: " + sortedByPassengersFile + " ==="); | |
| displayToConsole(); | |
| // Сортування за коментарями та збереження | |
| sortByCommentInsertion(); | |
| writeToFile(sortedByCommentsFile); | |
| System.out.println("\n=== Дані відсортовані за коментарями та збережені у: " + sortedByCommentsFile + " ==="); | |
| displayToConsole(); | |
| } catch (IOException e) { | |
| System.err.println("Помилка введення-виведення: " + e.getMessage()); | |
| e.printStackTrace(); | |
| } catch (Exception e) { | |
| System.err.println("Загальна помилка: " + e.getMessage()); | |
| e.printStackTrace(); | |
| } | |
| } | |
| /** | |
| * Створення тестових даних | |
| */ | |
| protected void createTestData() { | |
| setName("Центральна площа"); | |
| setRouteNumbers(new int[]{5, 12, 23}); | |
| setHours(new Hour[]{ | |
| new Hour(15, "Ранковий пік, сонячно"), | |
| new Hour(5, "Обідній час, дощ"), | |
| new Hour(10, "Вечірній час, хмарно"), | |
| new Hour(20, "Кінець робочого дня"), | |
| new Hour(3, "Нічний час") | |
| }); | |
| } | |
| /** | |
| * Очищення даних | |
| */ | |
| protected void clearData() { | |
| setName(""); | |
| setRouteNumbers(new int[0]); | |
| setHours(new Hour[0]); | |
| } | |
| /** | |
| * Виведення даних у консоль | |
| */ | |
| public void displayToConsole() { | |
| System.out.println("Назва зупинки: " + getName()); | |
| System.out.print("Маршрути: "); | |
| int[] routes = getRouteNumbers(); | |
| for (int i = 0; i < routes.length; i++) { | |
| System.out.print(routes[i]); | |
| if (i < routes.length - 1) System.out.print(", "); | |
| } | |
| System.out.println(); | |
| System.out.println("Години роботи:"); | |
| for (Hour hour : getHours()) { | |
| System.out.println(" " + hour); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment