# Система учета работы вокзала - Спецификация ## 1. Обзор **Название:** StationManager **Тип:** Десктопное приложение (Qt6 + SQLite) **Назначение:** Учет продажи билетов на железнодорожном вокзале ## 2. Функциональность ### 2.1 Авторизация - Форма входа с логином и паролем - Хранение пользователей в БД - Роли: Администратор, Кассир - Админ может добавлять пользователей ### 2.2 Продажа билетов - Выбор рейса из списка - Ввод данных пассажира (ФИО, номер документа) - Выбор количества билетов - Автоматический расчет стоимости - Сохранение в базу данных ### 2.3 Управление рейсами - Добавление новых рейсов (маршрут, дата/время, цена, количество мест) - Просмотр списка рейсов - Редактирование/удаление рейсов ### 2.4 Печать билетов - Фильтрация по номеру рейса - Отображение списка проданных билетов - Экспорт в текстовый файл для печати ## 3. Архитектура БД ### Таблица users | Поле | Тип | Описание | |------|-----|----------| | id | INTEGER PK | ID пользователя | | username | TEXT | Логин | | password | TEXT | Пароль (хеш) | | role | TEXT | Роль (admin/cashier) | ### Таблица routes | Поле | Тип | Описание | |------|-----|----------| | id | INTEGER PK | ID рейса | | route_name | TEXT | Название маршрута | | departure_time | TEXT | Дата/время отправления | | price | REAL | Цена билета | | total_seats | INTEGER | Всего мест | | available_seats | INTEGER | Свободных мест | ### Таблица tickets | Поле | Тип | Описание | |------|-----|----------| | id | INTEGER PK | ID билета | | route_id | INTEGER FK | ID рейса | | passenger_name | TEXT | ФИО пассажира | | document_number | TEXT | Номер документа | | seat_count | INTEGER | Количество билетов | | total_price | REAL | Общая стоимость | | seller_id | INTEGER FK | ID кассира | | sale_date | TEXT | Дата продажи | ## 4. Интерфейс ### Окна: 1. **LoginWindow** - авторизация 2. **MainWindow** - главное окно с меню 3. **RoutesWidget** - управление рейсами 4. **TicketsWidget** - продажа билетов 5. **PrintWidget** - печать списка билетов 6. **UsersWidget** - управление пользователями (admin) ### Навигация: - Боковое меню с переключением между виджетами - Строка состояния с информацией о текущем пользователе