3 Разработка алгоритма программного средства
ОПРЕДЕЛЕНИЯ ОТНОШЕНИЙ МЕЖДУ СОТРУДНИКАМИ КОМПАНИИ
Согласно требованиям, представленным в постановке задачи, задача определения отношений между сотрудниками должна реализовывать два основных алгоритма, один из которых позволяет находить всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях, а второй – определяет связь между двумя отдельными сотрудниками.
Первый алгоритм направлен на нахождение разности множеств «является другом» и «является родственником». В нашей задаче родственник не обязательно является другом, поскольку друзьями будем считать сотрудников, которые близко общаются вне рабочего времени и находятся в доверительных отношениях. Схема алгоритма, позволяющего находить всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях, представлен на рисунке 3.1.
Второй алгоритм направлен на выявление всевозможных связей между сотрудниками, а именно знакомы ли они, если да, то являются ли они друзьями или родственниками и друзьями при этом. Схема данного алгоритма наглядно отображена на рисунке 3.2.
В программе алгоритму нахождения разности множеств «является другом» и «является родственником» будет соответствовать функция foundFriends, принимающая в качестве параметров массив сотрудников и его размерность.
Рисунок 3.1 – Схема алгоритма нахождения разности множеств «является другом» и «является родственником»
Рисунок 3.2 – Схема алгоритма для определения отношений между сотрудниками по запросу пользователя
Рисунок 3.3 – Продолжение схемы алгоритма
В программе данному алгоритму будет соответствовать функция foundRelationship, принимающая в качестве параметров ссылки на сотрудников, об отношениях которых нужно узнать.
Структурная схема программного средства
4.1 Модули программного средства
С целью реализации универсального программного средства, которое можно легко модифицировать и оптимизировать – необходимо использовать модульный подход.
Суть данного подхода состоит в выделении функций программы и группировку их в виде независимых модулей.
Для рассматриваемой задачи общую структурную схему программы можно представить в следующем виде (рис. 4.1):
Рисунок 4.1 – Структурная схема программы
Модуль работы с данными отвечает за …………………
……..
Расписать каждый блок и его функции
4.2 Структура классов программного средства
Программное средство для реализации задачи определения отношений между сотрудниками ИТ-компании было разработано на языке С++ в среде
Microsoft Visual Studio.
При разработке приложения средства был создан класс Employee, описывающий сотрудников. Данный класс содержит поля, хранящие информацию об отделе, в котором работает сотрудник, его имя, списки его друзей и родственников, работающих в компании.
Основная функциональность программы, требуемая при постановке задачи, выполняется с помощью функций foundFriends и foundRelationship, описание и схема алгоритма которых приведены в разделе 3.
Помимо класса Employee и основных функций, в программном средстве описаны вспомогательные функции и функция main – это начальная точка выполнения для всех программ на языках С++. Код программы приведѐн в приложении А.
4.3 Формат хранения данных
Данные о сотрудниках, а именно имя и отдел, в котором они работают, списки их друзей и родственников, являющиеся входным документом задачи и используемые определения отношений, должны храниться в файле in.txt.
Пример записи данных в файл приведѐн на рисунке 4.1.
Рисунок 4.2 – Пример входного документа
Первым в файле записывается номер отдела, затем, через пробел, имя сотрудника. За именем сотрудника, после двоеточия, следует через запятую список его друзей. За списком друзей, после точки с запятой, следует список родственников. Запись о каждом сотруднике должна начинаться с новой строки.
Подобный документ может быть легко сформирован функциональной задачей, например, учёта сотрудников автоматизированной информационной системы ИТ-компании.
