Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Информационная система учёта сотрудников и должностей «StaffTrack»

Version Status License University


StaffTrack — программный комплекс, предназначенный для централизованного учёта персонала, контроля соответствия работников занимаемым должностям, ведения организационно-штатной структуры и поддержания целостности кадровой информации предприятия.

Проект разрабатывается в рамках дисциплины «Информатика» на кафедре «Вычислительные системы и технологии» (ИРИТ, НГТУ им. Р.Е. Алексеева).


📋 Оглавление


🎯 Цель и задачи проекта

Цель разработки: создание программного комплекса для автоматизации процессов учёта сотрудников и структуры должностей организации в едином информационном пространстве.

Ключевые задачи системы:

  • Кадровый учёт: безопасное хранение персональных данных работников, информации об их статусе (активен, в отпуске, уволен) и текущей позиции.
  • Ведение справочника должностей: формирование актуального каталога штатных должностей с фиксацией окладов и квалификационных требований.
  • Связывание сущностей и перемещения: закрепление должностей за сотрудниками с возможностью последующего служебного перевода или снятия с должности.
  • Многокритериальный поиск: предоставление инструментов гибкой выборки персонала по связке атрибутов (ФИО, должность, статус, подразделение).
  • Контроль целостности: разграничение прав доступа и валидация данных перед совершением операций удаления или изменения.

👥 Роли пользователей и матрица доступа

В системе реализована ролевая модель доступа (RBAC), разделяющая полномочия на два уровня:

Роль Права Описание и доступные функции
Администратор (Специалист по кадрам) RW (Полный доступ) Регистрация учётных записей пользователей, создание/удаление карточек сотрудников, редактирование штатного расписания и окладов, оформление переводов и увольнений.
Сотрудник (Пользователь системы) RO (Только чтение) Персональная авторизация, просмотр справочника должностей организации, поиск коллег по базе данных без возможности внесения правок.

⚙️ Функциональные возможности

Комплекс функций системы сгруппирован по бизнес-модулям:

  1. Кадровый учёт сотрудников:
    • Регистрация нового работника с заполнением электронной карточки (ФИО, телефон, должность);
    • Редактирование реквизитов и актуализация сведений;
    • Снятие сотрудника с учёта (увольнение с архивацией записи).
  2. Управление каталогом должностей:
    • Добавление новых должностных единиц в штатное расписание;
    • Установка и индексация должностных окладов;
    • Безопасное удаление позиций с проверкой ограничений внешних ключей.
  3. Назначения и перемещения:
    • Первичное закрепление специалиста за вакантной позицией;
    • Перевод работника на новую должность с автообновлением связей в БД.
  4. Поиск и фильтрация:
    • Поиск по подстроке ФИО, фильтрация списков по статусу и окладу.

🏗 Архитектура системы

Программный комплекс строится по принципам классической трёхуровневой архитектуры (3-Tier Architecture):

┌────────────────────────────────────────────────────────┐
│         Слой представления (Presentation Layer)        │
│       Консольный / Графический интерфейс, валидация    │
└───────────────────────────┬────────────────────────────┘
                            │ (DTO / Команды)
┌───────────────────────────▼────────────────────────────┐
│          Слой бизнес-логики (Business Logic Layer)     │
│   Ядро системы, ролевой контроль, проверка ограничений │
└───────────────────────────┬────────────────────────────┘
                            │ (CRUD / Запросы)
┌───────────────────────────▼────────────────────────────┐
│                Слой данных (Data Layer)                │
│    DAO / Репозиторий доступа ───► Реляционная БД       │
└────────────────────────────────────────────────────────┘
  • Слой представления: взаимодействие с пользователем через CLI/GUI, сбор входных данных и вывод системных уведомлений.
  • Слой бизнес-логики: валидация входных форматов, проверка уникальности идентификаторов, контроль невозможности назначить сотрудника на несуществующую должность.
  • Слой данных: уровень хранения и персистентности, гарантирующий ACID-свойства транзакций и реляционную целостность.

📊 Моделирование процессов и структуры данных

Диаграмма прецедентов (Use Case)

Отражает сценарии взаимодействия пользователей с системой «StaffTrack»:

Use Case Diagram

Исходный декларативный код диаграммы сохранён в формате PlantUML: docs/diagrams/usecase.puml.


ER-диаграмма базы данных (Entity-Relationship)

Схема базы данных спроектирована в реляционной модели и решает задачи нормализации данных, предотвращения дублирования и ведения кадровой истории.

ER-диаграмма базы данных StaffTrack

Описание сущностей и типов связей:

  • Справочники:
    • 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
    }
Loading

Ключевые алгоритмы работы:

  • Алгоритм добавления сотрудника: включает проверку роли текущего пользователя (Администратор), верификацию формата вводимых данных, проверку наличия выбранной должности в справочнике и атомарную запись в базу данных.
  • Алгоритм перевода на должность: производит поиск сотрудника и новой позиции в БД, проверяет, не занимает ли работник данную должность в текущий момент, закрывает предыдущий интервал в таблице 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)

Инструкция по развёртыванию

  1. Клонировать репозиторий на локальную машину:

    git clone https://github.com/RADiant-Git/StuffTrack.git
    cd StuffTrack
  2. Инициализировать базу данных и накатить схему:

    python src/database.py
  3. Запустить исходную версию программы:

    python src/main.py

👨‍💻 Сведения об авторе

  • Выполнил: студент Русанов А. Д.
  • Учебная группа: 26-ИВТ-4-1
  • ВУЗ: НГТУ им. Р.Е. Алексеева (Нижний Новгород)
  • Институт: ИРИТ
  • Дисциплина: Информатика
  • Проверил: ассистент Китов А. А.
  • Год выполнения: 2026

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages