5 Результаты функционирования программы
Разработанное приложение выводит на консоль результаты работы основных функций задачи определения отношений между сотрудниками ИТ-компании. Пример вывода всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях, данные о которых содержатся в документе, структура которого представлена на рисунке 4.2, отображен на рисунке 5.1.
Рисунок 5.1 – Вывод всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях
Данные выводятся корректно, в удобном для пользователя представлении.
Пример определения отношений между сотрудниками из этого же тестового документа представлены на рисунке 5.2.
Рисунок 5.2 – Пример вывода сотрудников с различными типами отношений
ВЫВОДЫ
В ходе выполнения курсовой работы мы усвоили и углубили знания по дисциплинам «Алгоритмизация и программирование», «Дискретная математика» и «Объектно-ориентированное программирование» разработав программу, позволяющую проанализировать отношения среди сотрудников ИТ-компании.
Для разработки программного продукта мы проанализировали предметную область, сформулировали и задокументировали требования к задаче и разработали прикладное приложение согласно построенной модели на компилируемом, статически типизированном языке программирования общего назначения С++ в среде разработки В Visual Studio 2015.
Разработанное приложение может быть использовано ИТ-компаниями для обеспечения комфортных условий труда сотрудников и формирования проектной команды, наиболее подходящей для работы над ИТ-проектом.
Программный продукт прост в использовании и не требует значительных затрат ресурсов, а входные данные для него могут быть легко сформированы из базы.
ПЕРЕЧЕНЬ ССЫЛОК
Методические указания к междисциплинарному курсовому проекту для студентов направления подготовки 6.050101 – Компьютерные науки [Текст]
Кострикин, А.И. Введение в алгебру. Основы алгебры. [Текст] – М.:
Физматлит, 1994. – С. 47-48. – 320 с.
Бьѐрн Страуструп. Язык программирования C++ = The C++ Programming Language [Текст] / Пер. с англ. – 3-е изд. – СПб.; М.: Невский диалект – Бином, 1999. – 991 с.
Айвор Хортон. Visual C++ 2010: полный курс = Ivor Horton’s Beginning Visual C++ 2010. [Текст] – М.: Диалектика, 2010. – 1216 с.
Learn C++ [Электронный ресурс] – режим доступа:
http://www.learncpp.com/ – название с экрана
Visual C++ в Visual Studio 2015 [Электронный ресурс] – режим доступа: https://msdn.microsoft.com/ru-ru/library/60k1461a.aspx – название с экрана
ПРИЛОЖЕНИЕ А
Министерство образования и науки Украины
Харьковский национальный университет радиоэлектроники
УТВЕРЖДАЮ
Руководитель курсовой работы, проф. кафедры системотехники
______________ Хряпкин А. В.
(подпись, дата)
«Анализ отношений сотрудников в ITкомпании»
Текст программы
ЛИСТ УТВЕРЖДЕНИЯ
ГЮИК. 503200. 118 – 01 12 01 – ЛУ
(номер зачетки)
Студента группы КН-15-1__
(название группы)
Иванов А.А,
(подпись, дата, ФИО)
Харьков – 2016
Министерство образования и науки Украины
Харьковский национальный университет радиоэлектроники
УТВЕРЖДАЮ
ГЮИК. 503200. 118 – 01 12 01 – ЛУ
«Анализ отношений сотрудников в ITкомпании»
Текст программы
ГЮИК. 503200. 118 – 01 12 01 – ЛУ
Листов 4
Харьков – 2016
Текст программы
#include "stdafx.h" #include <iostream> #include <string> #include <fstream> #include <stdlib.h> #include <vector> using namespace std; class Employee { private: int department; public: string name; vector<Employee> friends; vector<Employee> relatives; Employee() {} Employee(int department, string name) { this->department = department; this->name = name; } int getDepartment() {return department;} void setDepartment(int d) {department = d;} }; string getSubstring(string str, int &delimiterIndex, string delimiter){ int symbNum = str.find(delimiter) - delimiterIndex; str = str.substr(delimiterIndex, symbNum); delimiterIndex = symbNum + 1; return str; } void splitNames(string & names, string delimiter, vector<string>& namesVector) { string::size_type i = 0; string::size_type j = names.find(delimiter); while (j != string::npos) { namesVector.push_back(names.substr(i, j - i)); i = ++j; j = names.find(delimiter, j); if (j == string::npos) namesVector.push_back(names.substr(i, names.length())); } } bool check(string str, string entry) { if (str.find(entry) != -1) {return true; } else{return false;} } void foundFriends(int empNum, Employee *emps) { string friendsOnly = ""; bool isRel; for (int i = 0; i < empNum; i++) { cout << emps[i].name << "'s friends but not relatives: "; for (int j = 0; j < emps[i].friends.size(); j++) { isRel = false; for (int k = 0; k < emps[i].relatives.size(); k++) { if (emps[i].friends[j].name == emps[i].relatives[k].name) {isRel = true;} } |
Рисунок А.1 – Листинг текста программы
if (!isRel) {cout << emps[i].friends[j].name << " ";} } cout << endl; } } void foundRelationship(Employee emp1, Employee emp2){ string name1 = emp1.name; string name2 = emp2.name; bool isFounded = false; for (int i = 0; i < emp1.friends.size(); i++) { if (emp2.name == emp1.friends[i].name) { cout << emp1.name << " & " << emp2.name << " are friends"; for (int j = 0; j < emp1.relatives.size(); j++) { if (emp2.name == emp1.relatives[j].name) { cout << " and relatives"; break; } } cout << endl; isFounded = true; break; } } if (!isFounded) { for (int i = 0; i < emp1.relatives.size(); i++) { if (emp2.name == emp1.relatives[i].name) { cout << emp1.name << " & " << emp2.name << " are relatives"; cout << endl; isFounded = true; break; } } } if (!isFounded) {cout << emp1.name << " & " << emp2.name << " are not acquainted \n";} } int main() { ifstream info("in.txt"); if (!info.is_open()) {cout << "No such file" << endl;} int counter = 0; while (info) { string tmp; getline(info, tmp); if (tmp == "\0") { info.clear(); info.seekg(0); break; } ++counter; } string *data = new string[counter]; Employee *employees = new Employee[counter]; int delimiterIndex = 0; for (int i = 0; i < counter; i++) { getline(info, data[i]); string tmpDepartment = getSubstring(data[i], delimiterIndex, " "); string tmpName = getSubstring(data[i], delimiterIndex, ":"); employees[i] = Employee(stoi(tmpDepartment), tmpName); delimiterIndex = 0; } for (int i = 0; i < counter; i++) { vector<string> names; delimiterIndex = data[i].find(":") + 1; string frNames = getSubstring(data[i], delimiterIndex, ";"); splitNames(frNames, ",", names); for (int j = 0; j < names.size(); j++) { for (int k = 0; k < counter; k++) { if (names[j] == employees[k].name) { employees[i].friends.push_back(employees[k]); } } } names.clear(); delimiterIndex = data[i].find(";") + 1; string relNames; relNames = getSubstring(data[i], delimiterIndex, "\n"); if (check(relNames, ",")) { splitNames(relNames, ",", names); } else if (relNames.length() == 0) { continue; } else { names.push_back(relNames); } for (int j = 0; j < names.size(); j++) { for (int k = 0; k < counter; k++) { if (names[j] == employees[k].name) { employees[i].relatives.push_back(employees[k]); } } } } foundFriends(counter, employees); cout << endl; foundRelationship(employees[0], employees[2]); foundRelationship(employees[3], employees[4]); foundRelationship(employees[0], employees[9]); foundRelationship(employees[2], employees[5]); system("pause"); return 0; } |
Рисунок А.2 – Листинг текста программы (продолжение)
for (int i = 0; i < counter; i++)
{
vector<string> names; delimiterIndex = data[i].find(":") + 1;
string frNames = getSubstring(data[i], delimiterIndex, ";");
splitNames(frNames, ",", names);
for (int j = 0; j < names.size(); j++)
{
for (int k = 0; k < counter; k++)
{
if (names[j] == employees[k].name)
{
employees[i].friends.push_back(employees[k]);
}
}
}
names.clear();
delimiterIndex = data[i].find(";") + 1;
string relNames;
relNames = getSubstring(data[i], delimiterIndex, "\n");
if (check(relNames, ","))
{
splitNames(relNames, ",", names);
}
else if (relNames.length() == 0)
{
continue;
}
else
{
names.push_back(relNames);
}
for (int j = 0; j < names.size(); j++)
{
for (int k = 0; k < counter; k++)
{
if (names[j] == employees[k].name)
{
employees[i].relatives.push_back(employees[k]);
}
}
}
}
foundFriends(counter, employees);
cout << endl;
foundRelationship(employees[0], employees[2]); foundRelationship(employees[3], employees[4]); foundRelationship(employees[0], employees[9]); foundRelationship(employees[2], employees[5]);
system("pause");
return 0;
}
Рисунок А.3 – Листинг текста программы (продолжение)
