An open API service indexing awesome lists of open source software.

https://github.com/ggorets0dev/vuc-olymp-tour-2

Задание для банка международной олимпиады курсантов 2025. Тур №2
https://github.com/ggorets0dev/vuc-olymp-tour-2

Last synced: 26 days ago
JSON representation

Задание для банка международной олимпиады курсантов 2025. Тур №2

Awesome Lists containing this project

README

          

# Международная олимпиада курсантов по информатике (2й тур ВУЦ МИЭТ)

Программное обеспечение для учета сотрудников МЧС. **МчсОперШтаб**.

## Требования к ПО

Требования к программному обеспечению:

* Должна быть создана РЕЛЯЦИОННАЯ база данных с тремя таблицами:

* employees    

* Id (int) [внутренний ключ]

* full_name (varchar 50)

* start_date (date) [дата трудоустройства]

* station_id (int) [внешний ключ на stations]

* position_id (int) [внешний ключ на positions]

* stations

* Id (int) [внутренний ключ]

* title (varchar 75)

* city (varchar 15)

* address (varchar 90)

* positions

* id (int) [внутренний ключ]

* title (varchar 30)

* add_date (date) [дата создания должности]

* salary (int)

* Должна быть поддержка команды --help с выводом всех аргументов и их значений

* В начале каждого запуска ПО должна выводиться надпись "Подключение успешно!", если подключение к БД прошло успешно

* Перед выходом из ПО должно производиться отключение от БД с оповещением "Отключение успешно!"

* В случае внутренней ошибки при работе с БД (на этапе подключения или др) требуется вывести надпись "Ошибка при работе с БД: " и текст внутренней ошибки

* Должна быть возможность вывода значений таблиц:

* --display-employees для сотрудников

* --display-positions для должностей

* --display-stations для станций

* Если добавлен аргумент --title-sort, сортировка на выводе происходит по ФИО или по названию, без аргумента - по ID.

* Между записями есть разделитель "----------------------"

* При выводе списка сотрудников вместо ID станции и должности выводятся их названия

* При выводе списка должностей может быть использован аргумент --tax-deduction, значением которого является процент налога. Если этот аргумент присутствует, зарплаты выводятся с вычетом налога (округление до int)

* Должна быть возможность производить импорт из файлов JSON:

* --import-employees для сотрудников

* --import-positions для должностей

* --import-stations для станций

* В качестве значения аргумента приводится путь к файлу JSON, который является массивом объектов с полями, названия которых идентичны полям таблицы

* Должна быть возможность провести проверку комплектования станций:

* --check-fullness

* В качестве значения аргумента передается путь к файлу JSON, который является массивом объектов с полями position_title и count (см. пример в папке json)

* Файл JSON содержит должности и количество сотрудников, которые должны быть устроены на этой должности в рамках одной станции. Требуется проверить каждую станцию на соответствие этому требованию

* Вывести сообщение в зависимости от успешности операции:

* "Проверка на комплектование пройдена"

* "Проверка на комплектование не пройдена"

* Должна быть возможность провести замену персонала двух станций:

* --swap-stations

* --station-one для первой станции

* --station-two для второй станции

* В качестве значений аргументов станций передается их ID.

* Требуется прикрепить всех сотрудников станции А к станции Б и наоборот, чтобы произошла полная смена персонала

* Во время выполнения данной операции требуется обеспечить целостность БД с помощью транзакций: в случае неудачи БД должна быть приведена в исходное состояние

* Если при использовании --swap-stations не были использован хотя бы один аргумент из --station-one / --station-two, вывести сообщение "Переданы не все аргументы, требующиеся для выполения операции"

* Перед выполнением операции требуется проверить, существуют ли станции под данными ID в системе, вывести сообщение в зависимости от успешности:

* "Станции с указанными ID не обнаружены в БД"

* "Станции с указанными ID обнаружены в БД"

* Если значения аргументов в порядке и процесс смены персонала был выполнен, вывести сообщение в зависимости от успешности:

* "Персонал обеих станций успешно изменен"

* "Не удалось изменить персонал обеих станций"

* Должна быть доступна связка действий импорт-->операция-->вывод, если были одновременно задействованы аргументы для этих возможностей (под операцией понимается --swap-stations или --check-fullness)