Система учета работы вокзала - Спецификация
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. Интерфейс
Окна:
- LoginWindow - авторизация
- MainWindow - главное окно с меню
- RoutesWidget - управление рейсами
- TicketsWidget - продажа билетов
- PrintWidget - печать списка билетов
- UsersWidget - управление пользователями (admin)
Навигация:
- Боковое меню с переключением между виджетами
- Строка состояния с информацией о текущем пользователе