Консольное приложение для анализа журнала сна. Читает записи из текстового файла и выводит статистику по длительности и качеству сна.
Учебный проект в рамках курса Java-разработки Яндекс Практикума.
- Чтение журнала с датами начала и окончания сна.
- Подсчёт количества записей.
- Расчёт минимальной, максимальной и средней длительности сна.
- Анализ записей с плохим качеством сна.
- Выявление бессонных ночей по данным журнала.
- Определение хронотипа по правилам учебного проекта.
- Обработка ошибок чтения и некорректного формата данных.
Java 21 · Stream API · java.time · файловый ввод-вывод · JUnit 5
Каждая строка содержит начало сна, окончание сна и оценку качества, разделённые точкой с запятой:
01.10.25 23:15;02.10.25 07:30;GOOD
02.10.25 23:50;03.10.25 06:40;NORMAL
03.10.25 23:40;04.10.25 08:00;BAD
- Формат даты и времени:
dd.MM.yy HH:mm. - Качество сна:
GOOD,NORMALилиBAD. - В строке должно быть ровно три поля.
Пример журнала находится в sleep_log.txt.
Нужны JDK 21 и IntelliJ IDEA.
-
Склонировать репозиторий:
git clone https://github.com/plisha39-dotcom/java-sleep-tracker.git
-
Открыть проект в IntelliJ IDEA и выбрать JDK 21.
-
Создать конфигурацию запуска для
ru.yandex.practicum.sleeptracker.SleepTrackerApp. -
Установить корень репозитория как рабочую папку.
-
В поле Program arguments указать:
src/main/resources/sleep_log.txt -
Запустить приложение. Результаты анализа появятся в консоли.
Можно передать путь к собственному файлу в том же формате.
SleepingSession— запись о сне.SleepQuality— оценка качества.SleepLogReader— чтение и разбор файла.SleepAnalysisFunction— общий интерфейс функций анализа.SleepAnalysisResult<T>— результат анализа с описанием и значением.function— отдельные реализации анализа.SleepTrackerApp— чтение аргументов, запуск анализа и вывод результатов.
В IntelliJ IDEA запустить тесты из src/test/java. Используется JUnit 5; зависимости подключены в настройках проекта.
Тесты проверяют чтение журнала и отдельные функции анализа: количество записей, длительность, качество сна, бессонные ночи и хронотип.
Приложение анализирует только переданный журнал и не собирает данные автоматически. Оценка хронотипа основана на учебных правилах. Maven и Gradle в текущем репозитории не настроены.
Обработка коллекций через Stream API, работа с датами и интервалами, разбор текстового файла, выделение независимых функций анализа и их проверка тестами.