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
- Host: GitHub
- URL: https://github.com/ggorets0dev/vuc-olymp-tour-2
- Owner: Ggorets0dev
- Created: 2024-10-24T18:14:43.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-02T12:24:05.000Z (over 1 year ago)
- Last Synced: 2025-02-28T17:56:51.293Z (over 1 year ago)
- Language: C++
- Homepage:
- Size: 161 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
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)