# Деканат – информационная система для автоматизации учебного процесса ## Аннотация Программа «Деканат» предназначена для автоматизации деятельности деканата: ведение учёта учебных групп, студентов, преподавателей, дисциплин, назначений (какие дисциплины ведутся в группе в определённом семестре), успеваемости (оценки студентов) и управления пользователями системы с разграничением ролей (администратор, менеджер, преподаватель, студент). Приложение разработано на платформе .NET Framework (C#, WinForms) с использованием СУБД PostgreSQL. # Введение ## Основные возможности - **Управление группами** (добавление, просмотр, редактирование) – реализовано в интерфейсе приложения. - **Управление студентами** (импорт из CSV, фильтрация по группе, отображение среднего балла). - **Управление преподавателями**. - **Управление дисциплинами** (добавление, редактирование, удаление, привязка к группе и преподавателю с указанием семестра). - **Расписание группы** (просмотр списка дисциплин с часами и преподавателем, сортировка по часам, экспорт в CSV/HTML). - **Успеваемость** (выставление/изменение оценок по дисциплинам для студентов группы, проверка наличия назначения дисциплины группе в семестре). - **Управление пользователями** (CRUD операции с ролями: admin, manager, teacher, student; хеширование паролей BCrypt). - **Авторизация** с различными уровнями доступа. - **Аудит изменений** – триггер на таблице Progress сохраняет историю изменений оценок в таблицу progress_log. - **Экспорт отчётов** (CSV, HTML). # Назначение и условия применения ## Назначение Программа предназначена для сотрудников деканата (администраторов, менеджеров), преподавателей и студентов высших и средних специальных учебных заведений. Обеспечивает: - централизованное хранение данных об учебном процессе; - быстрое получение расписания занятий групп; - учёт успеваемости с контролем корректности (оценка только по тем дисциплинам, которые назначены группе в указанном семестре); - разграничение прав доступа в соответствии с должностными обязанностями; - аудит изменений оценок. ## Условия применения - **Операционная система**: Windows 10/11 (64‑bit) или Windows Server 2016+. - **Необходимое программное обеспечение**: - .NET Framework 4.7.2 или выше (устанавливается автоматически при необходимости). - PostgreSQL 13+ (сервер базы данных) – может быть развёрнут локально или удалённо. - **Аппаратные требования**: - Процессор 1 ГГц, 2 ГБ ОЗУ, 200 МБ свободного дискового пространства (для клиентской части). - **Сеть**: Доступ к серверу PostgreSQL по TCP/IP (порт 5432). # Установка Перед установкой убедитесь, что сервер PostgreSQL доступен и на нём создана база данных с именем `dbpractice` (или иным, указанным в настройках). Пользователь БД должен иметь права на создание таблиц, индексов, представлений, триггеров. ### Шаги установки - [x] 1. Скачайте установщик `DeanOfficeApp_Setup.exe` из репозитория (раздел Releases) или из предоставленного архива. - [x] 2. Запустите `DeanOfficeApp_Setup.exe` от имени администратора. - [x] 3. Следуйте инструкциям мастера установки: - Выберите папку для установки (по умолчанию `C:\Program Files\DeanOfficeApp`). - При необходимости укажите параметры подключения к PostgreSQL (хост, порт, имя БД, логин, пароль). Если установщик не содержит диалога, отредактируйте файл `connection.ini` в папке с программой после установки. - [x] 4. Дождитесь завершения копирования файлов. - [x] 5. На последнем шаге мастера можно оставить галочку «Запустить Деканат». - [x] 6. После первого запуска проверьте подключение к БД: если данные введены верно, появится окно авторизации. > **Примечание**: При отсутствии файла `connection.ini` или неверных параметрах программа покажет сообщение об ошибке подключения. В этом случае создайте `connection.ini` в папке с программой со следующим содержимым (пример): > ```ini > [PostgreSQL] > Host=localhost > Port=5432 > Database=dbpractice > Username=postgres > Password=your_password > ``` # Описание операций После успешной авторизации (логин и пароль из таблицы `appuser`) открывается главное окно программы. - **Выбор группы** – в левом верхнем углу выпадающий список групп. При смене группы автоматически загружается расписание (список дисциплин, часов, преподавателей). - **Сортировка** – радиокнопки «По возрастанию» / «По убыванию» меняют порядок вывода по часам. - **Экспорт** – кнопки «Экспорт CSV» и «Экспорт HTML» сохраняют текущее расписание в файл. - **Управление дисциплинами** (доступно администратору и менеджеру): - Добавление новой дисциплины (название, часы, выбор преподавателя, привязка к текущей группе). - Редактирование выбранной дисциплины (изменение названия, часов). - Удаление дисциплины (удаляются также связи Assignment, но только если по дисциплине нет оценок). - **Студенты** – кнопка открывает форму со списком студентов, фильтром по группе, импортом из CSV и отображением среднего балла. - **Управление пользователями** – доступно только администратору; позволяет добавлять, изменять, удалять пользователей, назначать роли. - **Успеваемость** – форма для выбора группы, дисциплины, семестра и выставления/редактирования оценок студентам. Проверяется, что дисциплина назначена группе в выбранном семестре. - **Назначения (расписание)** – форма для создания и редактирования связей «группа – дисциплина – преподаватель – семестр». Запрещено удалять или изменять назначения, по которым уже выставлены оценки. # Термины и сокращения | Термин/Сокращение | Расшифровка | |------------------|-------------| | БД | База данных | | Деканат | Информационная система для автоматизации учебного процесса | | Дисциплина | Учебный предмет, курс | | Группа | Учебная группа студентов | | Назначение (Assignment) | Связь: группа → дисциплина → преподаватель → семестр | | Успеваемость (Progress) | Оценки студентов по дисциплинам | | Администратор (admin) | Пользователь с неограниченными правами | | Менеджер (manager) | Пользователь, управляющий справочниками (дисциплины, назначения, студенты) | | Преподаватель (teacher) | Пользователь, имеющий право просматривать расписание и выставлять оценки | | Студент (student) | Пользователь, имеющий право просматривать расписание | | СУБД | Система управления базами данных (PostgreSQL) | | CSV | Comma-Separated Values – формат табличных данных | | HTML | HyperText Markup Language – формат веб-страниц | | Git | Система контроля версий | | Gogs | Хостинг Git-репозиториев |