{"id":24116033,"url":"https://github.com/ggorets0dev/vuc-olymp-tour-2","last_synced_at":"2026-06-04T20:31:15.112Z","repository":{"id":279949223,"uuid":"878069102","full_name":"Ggorets0dev/vuc-olymp-tour-2","owner":"Ggorets0dev","description":"Задание для банка международной олимпиады курсантов 2025. Тур №2","archived":false,"fork":false,"pushed_at":"2025-02-02T12:24:05.000Z","size":165,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T17:56:51.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ggorets0dev.png","metadata":{},"created_at":"2024-10-24T18:14:43.000Z","updated_at":"2025-02-02T12:27:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"dd52efda-8738-4815-8b8f-52865eb4d4fb","html_url":"https://github.com/Ggorets0dev/vuc-olymp-tour-2","commit_stats":null,"previous_names":["ggorets0dev/vuc-olymp-tour-2"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Ggorets0dev/vuc-olymp-tour-2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ggorets0dev%2Fvuc-olymp-tour-2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ggorets0dev%2Fvuc-olymp-tour-2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ggorets0dev%2Fvuc-olymp-tour-2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ggorets0dev%2Fvuc-olymp-tour-2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ggorets0dev","download_url":"https://codeload.github.com/Ggorets0dev/vuc-olymp-tour-2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ggorets0dev%2Fvuc-olymp-tour-2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33917202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-11T06:15:05.100Z","updated_at":"2026-06-04T20:31:15.105Z","avatar_url":"https://github.com/Ggorets0dev.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Международная олимпиада курсантов по информатике (2й тур ВУЦ МИЭТ)\n\nПрограммное обеспечение для учета сотрудников МЧС. **МчсОперШтаб**.\n\n## Требования к ПО\n\nТребования к программному обеспечению:\n\n* Должна быть создана РЕЛЯЦИОННАЯ база данных с тремя таблицами:\n  \n  * employees    \n    \n    * Id (int) [внутренний ключ]\n    \n    * full_name (varchar 50)\n    \n    * start_date (date) [дата трудоустройства]\n    \n    * station_id (int) [внешний ключ на stations]\n    \n    * position_id (int) [внешний ключ на positions]\n  \n  * stations\n    \n    * Id (int) [внутренний ключ]\n    \n    * title (varchar 75)\n    \n    * city (varchar 15)\n    \n    * address (varchar 90)\n  \n  * positions\n    \n    * id (int) [внутренний ключ]\n    \n    * title (varchar 30)\n    \n    * add_date (date) [дата создания должности]\n    \n    * salary (int)\n\n* Должна быть поддержка команды --help с выводом всех аргументов и их значений\n\n* В начале каждого запуска ПО должна выводиться надпись \"Подключение успешно!\", если подключение к БД прошло успешно\n\n* Перед выходом из ПО должно производиться отключение от БД с оповещением \"Отключение успешно!\"\n\n* В случае внутренней ошибки при работе с БД (на этапе подключения или др) требуется вывести надпись \"Ошибка при работе с БД: \" и текст внутренней ошибки\n\n* Должна быть возможность вывода значений таблиц:\n  \n  * --display-employees для сотрудников\n  \n  * --display-positions для должностей\n  \n  * --display-stations для станций\n  \n  * Если добавлен аргумент --title-sort, сортировка на выводе происходит по ФИО или по названию, без аргумента - по ID.\n  \n  * Между записями есть разделитель \"----------------------\"\n  \n  * При выводе списка сотрудников вместо ID станции и должности выводятся их названия\n  \n  * При выводе списка должностей может быть использован аргумент --tax-deduction, значением которого является процент налога. Если этот аргумент присутствует, зарплаты выводятся с вычетом налога (округление до int)\n\n* Должна быть возможность производить импорт из файлов JSON:\n  \n  * --import-employees для сотрудников\n  \n  * --import-positions для должностей\n  \n  * --import-stations для станций\n  \n  * В качестве значения аргумента приводится путь к файлу JSON, который является массивом объектов с полями, названия которых идентичны полям таблицы\n\n* Должна быть возможность провести проверку комплектования станций:\n  \n  * --check-fullness\n  \n  * В качестве значения аргумента передается путь к файлу JSON, который является массивом объектов с полями position_title и count (см. пример в папке json)\n  \n  * Файл JSON содержит должности и количество сотрудников, которые должны быть устроены на этой должности в рамках одной станции. Требуется проверить каждую станцию на соответствие этому требованию\n  \n  * Вывести сообщение в зависимости от успешности операции:\n    \n    * \"Проверка на комплектование пройдена\"\n    \n    * \"Проверка на комплектование не пройдена\"\n\n* Должна быть возможность провести замену персонала двух станций:\n  \n  * --swap-stations\n  \n  * --station-one для первой станции\n  \n  * --station-two для второй станции\n  \n  * В качестве значений аргументов станций передается их ID.\n  \n  * Требуется прикрепить всех сотрудников станции А к станции Б и наоборот, чтобы произошла полная смена персонала\n  \n  * Во время выполнения данной операции требуется обеспечить целостность БД с помощью транзакций: в случае неудачи БД должна быть приведена в исходное состояние\n  \n  * Если при использовании --swap-stations не были использован хотя бы один  аргумент из --station-one / --station-two, вывести сообщение \"Переданы не все аргументы, требующиеся для выполения операции\"\n  \n  * Перед выполнением операции требуется проверить, существуют ли станции под данными ID в системе, вывести сообщение в зависимости от успешности:\n    \n    * \"Станции с указанными ID не обнаружены в БД\"\n    \n    * \"Станции с указанными ID обнаружены в БД\"\n  \n  * Если значения аргументов в порядке и процесс смены персонала был выполнен, вывести сообщение в зависимости от успешности:\n    \n    * \"Персонал обеих станций успешно изменен\"\n    \n    * \"Не удалось изменить персонал обеих станций\"\n\n* Должна быть доступна связка действий импорт--\u003eоперация--\u003eвывод, если были одновременно задействованы аргументы для этих возможностей (под операцией понимается --swap-stations или --check-fullness)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggorets0dev%2Fvuc-olymp-tour-2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fggorets0dev%2Fvuc-olymp-tour-2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fggorets0dev%2Fvuc-olymp-tour-2/lists"}