Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Primer_oformlenia.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
565.39 Кб
Скачать

5 Результаты функционирования программы

Разработанное приложение выводит на консоль результаты работы основных функций задачи определения отношений между сотрудниками ИТ-компании. Пример вывода всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях, данные о которых содержатся в документе, структура которого представлена на рисунке 4.2, отображен на рисунке 5.1.

Рисунок 5.1 – Вывод всех сотрудников, которые являются друзьями, но при этом не находятся в родственных связях

Данные выводятся корректно, в удобном для пользователя представлении.

Пример определения отношений между сотрудниками из этого же тестового документа представлены на рисунке 5.2.

Рисунок 5.2 – Пример вывода сотрудников с различными типами отношений

ВЫВОДЫ

В ходе выполнения курсовой работы мы усвоили и углубили знания по дисциплинам «Алгоритмизация и программирование», «Дискретная математика» и «Объектно-ориентированное программирование» разработав программу, позволяющую проанализировать отношения среди сотрудников ИТ-компании.

Для разработки программного продукта мы проанализировали предметную область, сформулировали и задокументировали требования к задаче и разработали прикладное приложение согласно построенной модели на компилируемом, статически типизированном языке программирования общего назначения С++ в среде разработки В Visual Studio 2015.

Разработанное приложение может быть использовано ИТ-компаниями для обеспечения комфортных условий труда сотрудников и формирования проектной команды, наиболее подходящей для работы над ИТ-проектом.

Программный продукт прост в использовании и не требует значительных затрат ресурсов, а входные данные для него могут быть легко сформированы из базы.

ПЕРЕЧЕНЬ ССЫЛОК

  1. Методические указания к междисциплинарному курсовому проекту для студентов направления подготовки 6.050101 – Компьютерные науки [Текст]

  2. Кострикин, А.И. Введение в алгебру. Основы алгебры. [Текст] – М.:

Физматлит, 1994. – С. 47-48. – 320 с.

  1. Бьѐрн Страуструп. Язык программирования C++ = The C++ Programming Language [Текст] / Пер. с англ. – 3-е изд. – СПб.; М.: Невский диалект – Бином, 1999. – 991 с.

  2. Айвор Хортон. Visual C++ 2010: полный курс = Ivor Horton’s Beginning Visual C++ 2010. [Текст] – М.: Диалектика, 2010. – 1216 с.

  3. Learn C++ [Электронный ресурс] – режим доступа:

http://www.learncpp.com/ – название с экрана

  1. 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 – Листинг текста программы (продолжение)