Консольное приложение для управления списком автомобилей с поддержкой сортировки, фильтрации, многопоточности и автосохранения.
В рамках командной разработки я отвечала за следующие модули:
- Консольное меню — реализация навигации, обработка выбора и ошибок ввода.
- Ручное добавление машин — пошаговый ввод модели, мощности и года с валидацией.
- Генерация случайных машин — добавление произвольного количества автомобилей.
- Вывод списка — нумерация, форматирование и отображение всех машин.
- Сортировки — по модели, мощности, году выпуска (с использованием стратегий).
- Расширенная сортировка — выбор алгоритма, поля и режима (чётные/нечётные).
- Удаление — одной машины по номеру или всех с подтверждением.
- Работа с файлами — ручное сохранение/загрузка, автосохранение при выходе, запоминание последнего файла.
- Отмена последнего действия (Undo) — реализована через декоратор
UndoCarCollection. - Многопоточный поиск — поиск по модели с использованием
parallelStream(). - Валидация ввода — проверка полей через
FieldValidator, циклы повторного ввода. - Поддержка английской раскладки — ответы
да/lf,нет/ytn,yes/no. - Тестирование — написаны тесты для класса
Carи сортировки по модели. - Оформление репозитория — подготовка
README.mdи структуры проекта.
Архитектура проекта разработана совместно с командой.
Ссылка на исходный репозиторий: danypevzner/CarSorting
- Добавление машин вручную или случайной генерацией
- Загрузка и сохранение списка в CSV-файл
- Автосохранение при выходе с запоминанием последнего файла
- Сортировка по модели, мощности или году
- Расширенная сортировка с выбором алгоритма
- Многопоточный поиск по модели
- Удаление одной или всех машин
- Отмена последнего действия
- Java 17+
- Maven
- TestNG
- Многопоточность (parallelStream)
- Git / GitHub
- Добавлять машины — вручную или случайной генерацией.
- Загружать и сохранять файлы с машинами (формат
.csvс разделителем;). - Сортировать по модели, мощности или году выпуска.
- Выбирать алгоритм сортировки — пузырьковая, вставками или выбором.
- Искать машины по модели в многопоточном режиме (да, это быстро).
- Удалять одну машину по номеру или все сразу (с подтверждением).
- Автосохранение при выходе — программа запоминает последний файл и предлагает загрузить его при следующем запуске.
- Файл запоминается.
При следующем запуске программа спросит: «Загрузить последний сохранённый файл?» — и если ответить «да», всё подхватится автоматически. - Ответы на да/нет работают в обеих раскладках.
Можно вводитьда,yes,lf,нет,no,ytn— программа поймёт. - Сортировка с выбором — можно сравнить разные алгоритмы на одном и том же списке.
- Поиск через несколько потоков — ускорение работы на больших данных.
Car— этоrecord, который содержит модель, мощность и год выпуска.CarCollection— умная коллекция, умеет сортировать по полям, фильтровать чётные значения и считать вхождения.CliClient— консольный интерфейс, который общается с пользователем и управляет данными.FileUtil— отвечает за чтение и запись файлов, работает с CSV.lastFile.txt— маленький служебный файл, в котором хранится имя последнего сохранённого файла.
git clone https://github.com/AlexaJavaDev/CarManagerApp.git
cd CarManagerApp
mvn compile
mvn exec:java -Dexec.mainClass="App"Или просто открой в IntelliJ IDEA и запусти App.java.
Формат файла:
Файлы сохраняются в простом текстовом формате:
Model;Power;Year
Tesla;250;2020
BMW;200;2010
Разделитель — точка с запятой, чтобы легко открывалось в Excel.
Почему это стоит попробовать?
- Потому что это живой проект, а не сухое упражнение.
- Потому что он думает за тебя: запоминает файлы, понимает разные раскладки, не даёт удалить всё случайно.
- Потому что здесь есть многопоточность — а это уже не совсем «новичковый» уровень.
Что дальше?
- Проект можно развивать:
- Добавить GUI.
- Добавить базу данных.
- Расширить поиск по годам и мощности.
Но и в текущем виде это — полноценный инструмент, которым можно пользоваться каждый день.