StaffTrack — программный комплекс, предназначенный для централизованного учёта персонала, контроля соответствия работников занимаемым должностям, ведения организационно-штатной структуры и поддержания целостности кадровой информации предприятия.
Проект разрабатывается в рамках дисциплины «Информатика» на кафедре «Вычислительные системы и технологии» (ИРИТ, НГТУ им. Р.Е. Алексеева).
- Информационная система учёта сотрудников и должностей «StaffTrack»
Цель разработки: создание программного комплекса для автоматизации процессов учёта сотрудников и структуры должностей организации в едином информационном пространстве.
- Кадровый учёт: безопасное хранение персональных данных работников, информации об их статусе (активен, в отпуске, уволен) и текущей позиции.
- Ведение справочника должностей: формирование актуального каталога штатных должностей с фиксацией окладов и квалификационных требований.
- Связывание сущностей и перемещения: закрепление должностей за сотрудниками с возможностью последующего служебного перевода или снятия с должности.
- Многокритериальный поиск: предоставление инструментов гибкой выборки персонала по связке атрибутов (ФИО, должность, статус, подразделение).
- Контроль целостности: разграничение прав доступа и валидация данных перед совершением операций удаления или изменения.
В системе реализована ролевая модель доступа (RBAC), разделяющая полномочия на два уровня:
| Роль | Права | Описание и доступные функции |
|---|---|---|
| Администратор (Специалист по кадрам) | RW (Полный доступ) | Регистрация учётных записей пользователей, создание/удаление карточек сотрудников, редактирование штатного расписания и окладов, оформление переводов и увольнений. |
| Сотрудник (Пользователь системы) | RO (Только чтение) | Персональная авторизация, просмотр справочника должностей организации, поиск коллег по базе данных без возможности внесения правок. |
Комплекс функций системы сгруппирован по бизнес-модулям:
- Кадровый учёт сотрудников:
- Регистрация нового работника с заполнением электронной карточки (ФИО, телефон, должность);
- Редактирование реквизитов и актуализация сведений;
- Снятие сотрудника с учёта (увольнение с архивацией записи).
- Управление каталогом должностей:
- Добавление новых должностных единиц в штатное расписание;
- Установка и индексация должностных окладов;
- Безопасное удаление позиций с проверкой ограничений внешних ключей.
- Назначения и перемещения:
- Первичное закрепление специалиста за вакантной позицией;
- Перевод работника на новую должность с автообновлением связей в БД.
- Поиск и фильтрация:
- Поиск по подстроке ФИО, фильтрация списков по статусу и окладу.
Программный комплекс строится по принципам классической трёхуровневой архитектуры (3-Tier Architecture):
┌────────────────────────────────────────────────────────┐
│ Слой представления (Presentation Layer) │
│ Консольный / Графический интерфейс, валидация │
└───────────────────────────┬────────────────────────────┘
│ (DTO / Команды)
┌───────────────────────────▼────────────────────────────┐
│ Слой бизнес-логики (Business Logic Layer) │
│ Ядро системы, ролевой контроль, проверка ограничений │
└───────────────────────────┬────────────────────────────┘
│ (CRUD / Запросы)
┌───────────────────────────▼────────────────────────────┐
│ Слой данных (Data Layer) │
│ DAO / Репозиторий доступа ───► Реляционная БД │
└────────────────────────────────────────────────────────┘
- Слой представления: взаимодействие с пользователем через CLI/GUI, сбор входных данных и вывод системных уведомлений.
- Слой бизнес-логики: валидация входных форматов, проверка уникальности идентификаторов, контроль невозможности назначить сотрудника на несуществующую должность.
- Слой данных: уровень хранения и персистентности, гарантирующий ACID-свойства транзакций и реляционную целостность.
Отражает сценарии взаимодействия пользователей с системой «StaffTrack»:
Исходный декларативный код диаграммы сохранён в формате PlantUML:
docs/diagrams/usecase.puml.
Схема базы данных спроектирована в реляционной модели и решает задачи нормализации данных, предотвращения дублирования и ведения кадровой истории.
- Справочники:
Roles— роли системных пользователей (Администратор,Сотрудник).Departments— организационные подразделения компании.Positions— каталог должностей с фиксацией базового оклада (base_salary) и квалификационных требований.
- Основные сущности:
Users— аккаунты для аутентификации (связь1:NсRoles).Employees— карточки сотрудников, связанные с подразделением (1:NотDepartments), текущей позицией (1:NотPositions) и учётной записью (1:1сUsers).
- История назначений (связь
M:N):Assignments— журнал кадровых перестановок и назначений, связывающийEmployeesиPositionsотношением многие-ко-многим. Хранит интервал работы (start_date,end_date) и основание перевода (notes).
▶ Нажмите, чтобы просмотреть интерактивную Mermaid-схему
erDiagram
Roles ||--o{ Users : "определяет права"
Users ||--|| Employees : "привязан к"
Departments ||--o{ Employees : "включает"
Positions ||--o{ Employees : "назначается как текущая"
Employees ||--o{ Assignments : "имеет историю"
Positions ||--o{ Assignments : "участвует в назначениях"
Roles {
int role_id PK
text name
text description
}
Users {
int user_id PK
text username
text password_hash
int is_active
int role_id FK
}
Departments {
int department_id PK
text name
text description
}
Positions {
int position_id PK
text title
int base_salary
text requirements
}
Employees {
int employee_id PK
text full_name
text phone
text email
text status
datetime hire_date
int department_id FK
int current_position_id FK
int user_id FK
}
Assignments {
int assignment_id PK
datetime start_date
datetime end_date
text notes
int employee_id FK
int position_id FK
}
- Алгоритм добавления сотрудника: включает проверку роли текущего пользователя (
Администратор), верификацию формата вводимых данных, проверку наличия выбранной должности в справочнике и атомарную запись в базу данных. - Алгоритм перевода на должность: производит поиск сотрудника и новой позиции в БД, проверяет, не занимает ли работник данную должность в текущий момент, закрывает предыдущий интервал в таблице
Assignmentsи перезаписываетcurrent_position_idв таблицеEmployees.
stafftrack/
├── .gitignore # Исключения системных и временных файлов
├── README.md # Главный документ проекта (документация)
├── docs/ # Проектная документация
│ └── diagrams/ # Исходники и рендеры диаграмм
│ ├── usecase.puml # Use Case код на языке PlantUML
│ ├── usecase.png # Рендер диаграммы прецедентов
│ └── er_diagram.png # Рендер ER-диаграммы базы данных
├── src/ # Исходный программный код
│ ├── database.py # Модуль подключения к БД SQLite
│ ├── schema.sql # DDL-скрипт создания таблиц и начальных данных
│ └── main.py # Точка входа в приложение (прототип)
└── tests/ # Модульные и интеграционные тесты
- Интерпретатор / Компилятор: Python 3.10+
- Система контроля версий: Git 2.40+
- СУБД: SQLite 3 (встроена в стандартную библиотеку Python)
-
Клонировать репозиторий на локальную машину:
git clone https://github.com/RADiant-Git/StuffTrack.git cd StuffTrack -
Инициализировать базу данных и накатить схему:
python src/database.py
-
Запустить исходную версию программы:
python src/main.py
- Выполнил: студент Русанов А. Д.
- Учебная группа: 26-ИВТ-4-1
- ВУЗ: НГТУ им. Р.Е. Алексеева (Нижний Новгород)
- Институт: ИРИТ
- Дисциплина: Информатика
- Проверил: ассистент Китов А. А.
- Год выполнения: 2026

