79 lines
3.2 KiB
Markdown
79 lines
3.2 KiB
Markdown
# Система учета работы вокзала - Спецификация
|
||
|
||
## 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)
|
||
|
||
### Навигация:
|
||
- Боковое меню с переключением между виджетами
|
||
- Строка состояния с информацией о текущем пользователе
|