Files
StationManager/SPEC.md
2026-04-05 16:14:54 +03:00

79 lines
3.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Система учета работы вокзала - Спецификация
## 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)
### Навигация:
- Боковое меню с переключением между виджетами
- Строка состояния с информацией о текущем пользователе