Загрузка данных


Решим задачу по шагам — оформим документацию к программе «Аренда автомобилей» строго в стиле документа с фото (ТЗ/спецификация): с разделами «Введение», «Основание для разработки», «Назначение разработки» и описанием функциональных задач, адаптированных под логику кода.

Техническое задание. Программный модуль «Система аренды автомобилей»

Введение

Целью разработки является создание консольного приложения для автоматизации процессов учёта автопарка и управления арендой транспортных средств. Пользователи приложения (администраторы автопарка) могут вести каталог автомобилей, отслеживать их состояние (в аренде / свободен) и выполнять базовые операции: добавление, удаление, оформление аренды и возврат авто.

Каждый автомобиль в системе характеризуется уникальным номером, описанием (марка, модель, цвет), владельцем и текущим статусом аренды. Все операции поиска, сортировки и обращения к данным ведутся строго по уникальному номеру автомобиля. Система обеспечивает защиту от некорректных действий (аренда уже арендованного авто, возврат несуществующего и т. п.) и предоставляет наглядный интерфейс навигации.

1. Основание для разработки

Разработка ведётся на основании внутреннего технического задания отдела разработки ПО.
Утверждено: 15.10.2024.

Наименование темы разработки: Консольное приложение «Система аренды автомобилей» для учёта автопарка и управления статусами аренды. 460.СОТА.00002-01.

2. Назначение разработки

Функциональные задачи:

Учёт автопарка: обеспечение возможности добавления новых автомобилей в каталог и удаления неактуальных записей. Контроль уникальности идентификатора (номера авто) при вводе данных.

Управление статусами аренды: реализация функционала оформления аренды (перевод статуса в «в аренде») и возврата автомобиля (перевод статуса в «свободен») с обязательной проверкой текущего состояния объекта.

Просмотр сведений: предоставление детальной информации по конкретному автомобилю на основании его номера (описание, владелец, статус).

Интерактивная навигация: обеспечение удобного перемещения по меню с помощью клавиш W (вверх) и S (вниз) и подтверждения выбора клавишей Enter.

Эксплуатационные задачи:

Стабильность работы: обеспечение непрерывной и стабильной работы приложения в среде ОС Windows без утечек памяти (за счёт использования std::vector для динамического хранения данных).

Валидация ввода: обработка некорректных пользовательских действий (поиск несуществующего авто, попытка арендовать уже арендованное ТС) с выводом понятных сообщений об ошибках.

Локализация интерфейса: корректное отображение кириллических символов в консоли Windows за счёт настройки кодировки и локали.

3. Описание реализации (кратко для справки)

Структура данных: struct Car содержит поля number (ключ), description, owner, isRented.

Хранение: std::vector<Car> внутри класса CarRentalSystem.

Поиск: линейный поиск по номеру (findCarIndex).

Интерфейс: консольное меню с подсветкой активного пункта и обработкой нажатий через _kbhit / _getch.