Данный репозиторий - выполненное тестовое задание для стажировки в одной из компаний.
-
Необходимо реализовать схему взаимодействия процессов «читатели-писатели» под ОС Windows с использованием соответствующих системных вызовов WinAPI и многопоточности, используя thread, event, и mutex.
Приоритет может быть любым. Потоки должны разделять общее адресное пространство. Количество читателей, писателей, повторов программы, а также временные задержки, задаются директивами препроцессора. Обеспечить вывод на экран результат работы читателей и писателей.
-
Необходимо разработать приложение, отображающее список подразделений предприятия и его сотрудников в виде дерева. Список должен загружаться из файла формата xml (xml файл с данными приложен). Программа должна обеспечить возможность добавления, удаления, редактирования подразделений и сотрудников в них. Программа должна обеспечить возможность отмены и возврата изменений. При разработке необходимо использовать паттерны проектирования.
Поля сотрудника:
- ФИО;
- должность;
- зарплата (целое число).
Поля подразделения:
- наименование;
- количество сотрудников;
- средняя зарплата.
-
- Выбрана следующая модель поведения:
Как только в очереди появляется хотя бы один писатель, не пускаем новых читателей.
- Для сборки и запуска рекомендуется использовать visual studio (sln файл проекта)
- Альтернативно (не тестировалось):
#(находясь в папке task_1) g++ -std=c++14 -o task_1.cpp task1 ./task1
- Выбрана следующая модель поведения:
-
- В решении используется библиотека TinyXML-2 для работы с .xml файлом. (Файлы TinyXML-2 включены в проект)
- Для поддержки отмены/возврата изменений используется паттерн "команда".
- В репозитории есть диаграмма, отражающая структуру программы и текущий прогресс в виде pdf, и исходника в формате xmind.
- На windwos при вводе в консоли следует использовать только латиницу, по какой-то причине, кириллица считывается некорректно (побочный эффект использования utf-8) - пофиксить не удалось.
- Для сборки и запуска рекомендуется использовать visual studio (sln файл проекта)
- Альтернативно (не тестировалось):
#(находясь в папке task_2) g++ -std=c++14 -o task_2.cpp Application.cpp Database.cpp CommandHistory.cpp Commands.cpp Department.cpp Input_output.cpp Employment.cpp tinyxml2.cpp task2 ./task2