Методы и алгоритмы принятия решения

 

Введение


Каждый хотя бы раз в своей жизни сталкивался с необходимостью выбора чего-то лучшего из массы. Данный поиск всегда отнимает много сил, так как необходимо просмотреть все варианты, учесть все критерии. Кроме того тратится драгоценное время. А когда необходимо быстро принять решение, время это то, чем мы не можем распоряжаться бездарно.

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

Теория принятия решений часто обращается к теории элитных групп. Теория элит - концепция деления общества на определенные слои. А значит в том случае, когда нам необходимо выбрать человека (или группу людей) лучшего в чём-то из общей массы целесообразно обратиться к теории элитных групп. Однако, даже используя данную теорию, мы всё равно не сможем выполнить поиск элиты быстро, не автоматизировав его.

Поэтому в данной курсовой работе мы рассмотрим «автоматизацию теории элит». То есть реализуем в жизнь поиск лучшего кандидата на какую либо должность с помощью языка высокого уровня.



1. ПОСТАНОВКА ЗАДАЧИ


1.1 Формализованная постановка задачи


Реализовать поиск лучшего кандидата на должность с использованием теории элитных групп. Предусмотреть поиск кандидата по изменяющимся параметрам и загрузку данных кандидата из файла.


1.2 Характеристика задачи


Задача предназначена для поиска решения с повторением, а именно для отбора работника по следующим критериям: возраст, пол, образование, опыт работы, наличие либо отсутствие санитарной книжки, наличие либо отсутствие рекомендаций от предыдущих работодателей. Задача предусматривает эволюцию элитной группы, процедуры «прополки» и «сбора урожая».


1.3 Цель работы


Написать программу, выбирающую группу лучших кандидатов из общего числа по заданным пользователем параметрам. Изучить теорию элитных групп, рассмотреть возможные модели формирования элиты. Математическая постановка задачи.

В данной работе реализована модель - «Претендент - Рекомендатель». Она заключается в том что на первом этапе из генеральной совокупности объектов выделяется группа (элита) с улучшенными свойствами.

Свойства можно записать в форме следующего вида множества:

Множество «Свойства»:


{ Age, Sex, Education, Experience, Recommendations, Sanitary book }

где: Age - возраст;

Sex - пол;

Education - образование;

Experience - опыт работы;

Recommendations - рекомендации;book - санитарная книжка.

Данные эталона вводятся пользователем в соответствующие поля на форме. Обозначим их следующим образом:


<age1,age2,sex1,ed1,exp1,exp2,rec1,sk1>- множество критериев эталона


Где Age1 - начальная граница возраста кандидата;

Age2 - конечная граница возраста кандидата;

Sex1 - пол;

Ed1 - образование;

Exp1 - начальная граница опыта работы;

Exp2 - конечная граница опыта работы;

Rec1 - наличие либо отсутствие рекомендации;

Sk1 - наличие либо отсутствие санитарной книжки.

Элементы из генеральной совокупности попадают в элитную группу при выполнении следующего условия:

(Age >= Age1) && (Age <= Age2) && (Sex = Sex1) && (Education>= Ed1) && (Experience >= Exp1) && (Experience <= Exp2) && (Recommendation = Rec1) &&(Sanitary book = Sk1)

Данная схема идеализирована, поэтому в результате в элитную группу могут попасть и неэлитные элементы, так называемые «сорняки». Но с долей сорных элементов или без нее, формируется элитная группа и с ней можно начать работать.

Введём ещё одно условие: при необходимости пополнить группу из-за того, что какие-то элементы выбыли из неё. При этом к эталону обратиться уже нельзя, так как он нужен только на этапе формирования группы. Для этого поступаем следующим образом:

Выбираем наугад элитный элемент, назвав его «рекомендателем» и так же наугад элемент из исходной совокупности «претендента» и сравниваем их. Если «претендент» окажется не хуже «рекомендателя», он включается в элиту.


1.4 Входная информация


В качестве входной информации используются данные из исходного множества игроков, полученные загрузкой из текстового файла (смотри стр.22, рис.16).

Структура входного текстового файла продемонстрирована на рисунке 1. Входной текстовый файл состоит из записей - Запись 1, Запись 2…Запись n, где каждая из записей представляет собой полную информацию о кандидате.


Рис. 1. Структура входного текстового файла


Структура записи информации о кандидате представлена на рисунке 2. Запись содержит в себе поля: «Имя кандидата (Name)», «Пол(Sex)», «Возраст (Age)», «Опыт работы(Experience) », «Образование(Education)», «Рекомендации (Recommendations)», «Санитарная книжка (Sanitary book)».


Рис.2. Структура записи в текстовом файле


Входными данными так же являются данные вводимые пользователем в поля формы: Age1 - Age2 - возрастной интервал для кандидата; Sex1 - пол; Ed1 - образование; Exp1 -Exp2 - временной интервал опыта работы кандидата; Rec1 - наличие либо отсутствие рекомендации; Sk1 - наличие либо отсутствие санитарной книжки.

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


1.5 Выходная информация


Выходной информацией является сформированная согласно эталону элитная группа, а именно элитные работники. При формировании группы предусматривается включение «сорных» элементов. (смотри стр.23, рис.17).

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

При «прополке» выводятся n-заменяемых элементов с худшей суммой, а при «сборе урожая» с лучшей.

1.5 Технические требования


·Процессор 1500 МГц и больше;

·512 Мб оперативной памяти и больше;

·Операционная система WindowsXP\Vista\Seven;

·Дополнительное наличие программ или библиотек не требуется.

пользователь элитный работник


2. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ


2.1 Общие понятия


Теория элит - концепция деления общества на определенные слои.

Элита, элитная группа - чисто научные термины, означающие совокупность элементов, в чём-то лучших, чем остальные (рис.2.1). Понимая их в этом исходном строгом смысле, я лет пятнадцать назад придумал и вместе с коллегами исследовал ряд математических моделей формирования и эволюции элитных групп. Результаты были опубликованы в специальных журналах, применены при планировании испытаний радиоэлектронной аппаратуры (отбирались узлы для более ответственного назначения), вошли в диссертацию молодого математика В. Кутеева. И хотя эти исследования ни в средствах, ни в выводах не вышли из сферы математической статистики, результаты с самого начала толкали к тому, чтобы придать им социальную интерпретацию.


2.2 Модели


.2.1 Модель первая: претендент - рекомендатель

Всем знакома ситуация, когда из всего множества объектов (статистики говорят: „генеральной совокупности) приходится выделять группу с улучшенными в каком-то смысле свойствами („повышенной полезности, на том же языке). Как это сделать? Существует много способов, выберем самый очевидный: будем сравнивать „полезный параметр наугад выбранного объекта (его прочность, удойность, производительность и т. д.) с некоторым порогом, и если данное свойство объекта окажется не меньше этого порога, считать объект элитным и включать в элитную группу. Измеритель этого порога будем именовать эталоном. Важно, что эталон - объект внешний по отношению как к исходной совокупности, так и к формируемой группе. Он привносится извне и вообще может иметь иную природу, чем сортируемые объекты,- так, рейка для измерения роста новобранцев, указывая на гренадёрский рост, сама не годится в гренадёры. Оперируя эталоном и найдя в исходной совокупности нужное число элементов, не худших, чем эталон, мы закончим формирование элитной группы.

Схема формирования идеализирована: чтобы её заземлить, допустим, что при сравнении с эталоном возможна ошибка, так что в результате в элитной группе может оказаться и небольшое число неэлитных элементов.

С долей этих „сорных или без неё, но элитная группа сформирована и может начать работать. Но прежде чем отправить её в мир с надеждой получить от того какую-нибудь пользу, введём ещё одно условие: при необходимости пополнить группу из-за того, что какие-то элементы выбыли из неё (израсходовав ресурс, погибнув и т. д.), к помощи эталона прибегнуть уже нельзя. (Франциск Ассизский, сформировавший орден, после смерти причислен к лику святых.) Эталон был доступен только на этапе формирования группы. Как быть?

Решить эту проблему, как кажется, несложно, ведь вся элитная группа в своё время прошла проверку эталоном. Поступим так. Выберем наугад элитный элемент, назвав его „рекомендателем и так же наугад элемент из исходной совокупности „претендента и сравним их. Если претендент окажется не хуже рекомендателя, он включается в элиту.

Жизнь математической модели - это последовательность шагов, на каждом из которых из элитной группы удаляются и заменяются претендентами элементы с недопустимо изменившимся параметром. Если лучший существует дольше (положительная обратная связь), то на первых же шагах „вымирает часть „сорных, попавших в элиту, миновав эталон, и возрастает доля элитных. Дальнейшие шаги делают группу всё более элитной. Если же лучшие выбывают первыми (отрицательная обратная связь), то уже начальный шаг уносит „сверхэлиту и процесс пополнения идёт без неё - они рекомендателями быть не смогли, а остальные, в том числе „сорные, померялись доблестью с претендентами.


2.2.2 Модель вторая: «прополка»

Поставив вопрос „что делать?, взглянем на проблему более широко и рассмотрим формирование элитной группы как результат целенаправленной деятельности экспериментатора над двумя множествами - генеральной совокупностью и группой элементов, которой требуется придать свойства элиты. Экспериментатору - селекционеру, руководителю, тренеру - при этом может быть доступен либо лишь один из этих объектов, либо оба.

Если в процессе прополки удалять на каждом шаге „худшие элементы, группа будет повышать свою суммарную полезность, прогрессировать, превращаться в элиту. В противном случае группа должна деградировать и, даже будучи элитной, растеряет свои свойства. Теория подтверждается. Оказывается, прополка тем эффективнее, чем меньше элементов удаляется на каждом шаге и чем ниже их ранг: изгнать одного наихудшего оказывается выгоднее, нежели вместе с ним всю нижнюю половину списка. Наоборот, наиболее угнетённой оказывается группа, когда с неё „снимают урожай в виде одного наилучшего .

Описанная модель в чистом виде встречается, повторим, в спорте, но, рассуждая чисто теоретически, должна служить основой кадровой политики в любой организации, да и в Административной Системе в целом. „Изгнать того, кто хуже работает - казалось бы, что может быть более естественным для руководителя! Но это лишь „казалось бы. Не всегда это удавалось даже в химически чистом случае - помещику-крепостнику в своём собственном хозяйстве. Рисуя в эпилоге „Войны и мира Николая Ростова как идеального хозяина, Толстой не обошёл и кадрового вопроса: „Семьи крестьян он поддерживал в самых больших размерах, не позволяя делиться. Ленивых, развратных и слабых он одинаково преследовал и старался изгонять из общества. Вспомним при этом, кто и как мешал ему осуществлять его кадровую политику: „Ещё менее могла она (графиня Марья.- А. Е.) понять, почему он… приходил почти в отчаяние, когда она передавала ему просьбы каких-нибудь баб или мужиков, обращавшихся к ней, чтобы освободить их от работ, почему он, добрый Nicolas, упорно отказывал ей, сердито прося её не вмешиваться не в своё дело.


2.2.3 Третья модель: процедура делегирования

Идею делегирования мы положим в основу третьей модели элитной группы. Опять немного формалистики. Пусть группа нужного объёма существует и из неё на каждом шаге выбывает определённое число случайно взятых элементов. Процедура пополнения организуется вне группы - в исходной совокупности. Будем брать там по нескольку элементов, ранжировать их и лучшего включать „делегировать - в элитную группу. Через определённое число шагов группа станет состоять только из „делегатов и при достаточно длинных „делегирующих цепочках сохранять элитные свойства при любом режиме выбывания. Принципиальное отличие „делегирования от схемы „претендент - рекомендатель заключается в отказе от сравнения включаемого элемента с уже пребывающим в группе. Теория показывает, что этот способ предохраняет элиту от деградации. Предельная полезность элитной группы, сформированной и функционирующей благодаря делегированию, выше, чем у групп, полученных путём прополки.

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


Рис 2.1 Формирование элитных групп



3. ОПИСАНИЕ АЛГОРИТМА


3.1 Назначение и характеристика


Данная задача предназначена для формирования элитной группы из исходного множества согласно введенным критериям (эталону), эволюции элитной группы, то есть новое формирование элитной группы за счет выбора «рекомендателя» из элитной группы и претендента из исходного множества. Данная задача предусматривает случайные факторы при отборе в элитную группу.


3.2 Используемая информация


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


3.3 Результаты решения


В случае задания всех критериев для эталона формируется элитная группа, и результаты выдаются в форме перечня подходящих кандидатов. При дальнейшей эволюции элитная группа формируется заново, также может произойти случайное удаление элементов (не обязательно «сорных»).


3.4 Математическое описание


При задании эталона вводятся необходимые значения критериев: пол, возраст, образование, опыт работы, наличие рекомендаций, наличие санитарной книжки. При этом подразумевается, что больший опыт работы, чем введённый пользователем, это попадание в элитную группу. Такое же правило принимается и в случае образования - люди, имеющие образование «выше», чем указанное в критерии, попадают в элитную группу. И в случае отсутствия необходимости рекомендаций и санитарной книжки данные критерии отбрасываются.

При этом кандидаты из исходного множества отбираются в группу, если выполняется следующее условие:


(возраст >= НВ) & (возраст <= ВВ) & (пол = П) & (опыт >= НО) & (опыт <= ВО) & (образование >= ОБ) & (рекомендации = Р) & (санитарная книжка = СК),


где входные данные обозначены следующим образом: нижняя граница возраста-НВ, верхняя граница возраста - ВВ, пол - П, нижняя граница опыта работы - НО, верхняя граница опыта работы - ВО, образование - ОБ, рекомендации - Р, санитарная книжка - СК.

При этом случайным образом в группу могут попасть «сорные» элементы: если элемент не удовлетворяет эталонным требованиям, то у него все же остается шанс попасть в элиту. В таком случае включается следующий алгоритм: если случайное число Х в промежутке от 1 до 100 меньше или равно указанного «коэффициента сорности», то в элитную группу включается текущий элемент из исходного множества. Таким образом, существует возможность попадания в группу «сорного» элемента.

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


3.5 Алгоритм решения


1)В начале программы исходное множество заполняется следующим образом: пользователь выбирает необходимый файл, открыв соответствующее диалоговое окно. Из открытого файла данные заносятся в поток, из потока данные заносятся в таблицу на форме.

2)Чтение значений критериев эталона: пол, возраст, образование, опыт работы, наличие рекомендаций, наличие санитарной книжки.

)Набор в элитную группу согласно условию, описанному в пункте 3.4.

)Развитие элитной группы: выбор «рекомендателя» и «претендента».

)Отбор в элитную группу.

)Подсчет суммы по критериям.

)В результате работы программы на форме в окне «Результаты поиска» отобразится итог.

)Завершение работы программы либо её перезапуск.



. ОПИСАНИЕ ПРОГРАММЫ


4.1 Функциональная схема


Рис. 3. Функциональная схема программы


На рисунке 3 представлена полная функциональная схема программы.

В данной программе процедуры не имеют иерархической схемы и вызываются после активации формы в зависимости от произошедшего события.

Краткое описание логики всех процедур включенных в данную схему:

Так процедура System::Void Form1_Activated вызывается непосредственно после запуска программы. Она инициирует создание рабочей формы и инициализирует некоторые параметры.

Процедура System:выбратьФайлКандидатовToolStripMenuItem_Click вызвает диалоговое окно открытия файла и в зачисимости от выбора файла производит обработку данных из файла и вывод на экран или сигнализирует о том что имя файла введено не было.

Процедура System::Void теорияЭлитToolStripMenuItem_Click реагирует на вызов меню «О программе->Теория элит» и выводит информационное сообщение на экран.

Процедура System::Void обАвтореToolStripMenuItem_Click реагирует на вызов меню «О программе->Об авторе» и выводит информационное сообщение на экран.

Процедура System::Void выходToolStripMenuItem_Click закрывает форму.

Процедура System::Void эволюцияToolStripMenuItem_Click производит «эволюцию» внутри элитной группы.

В процедуре System::Void button2_Click происходит «прополка» элитной группы. Она считывает данные из уже имеющейся элитной группы, и производит её «прополку». При окончании процедуры на форму выводится изменённая элитная группа.

В процедуре System::Void button3_Click происходит «сбор урожая» с элитной группы . Она считывает данные из уже имеющейся элитной группы, и производит «сбор урожая». При окончании процедуры на форму выводится изменённая элитная группа.

И в процедуре System::Void button1_Click происходит главная обработка. Она считывает данные введённые пользователем с формы, и производит выборку необходимых кандидатов из числа имеющихся. При окончании процедуры на форму выводится сообщение о найденных кандидатах.


.2 Описание функции ввода исходного множества кандидатов


.2.1 Вводная часть

Процедура для ввода исходного множества кандидатов вызывается при выборе пункта меню «Основное->Выбор файла кандидатов» происходит вызов диалогового окна открытия файла, после нажатия на котором кнопки «ОК» происходит заполнение исходного множества.


4.2.2 Функциональное назначение

Процедура вводит из файла исходное множество. Данное множество в последующем применяется для формирования элитной группы.


4.2.3 Описание информации

Процедура использует входную информацию: файл, содержащий записи.

Выходная информация: информация из файла, отображённая в форме таблицы на форме программы.


4.2.4 Описание логики

Описание логики процедуры представлено на рисунке 4.


Рис.4. Описание логики System: выбратьФайлКандидатовToolStripMenuItem_Click


4.2.5 Настройка программных средств

Для реализации программы использовался язык Visual С++, среда программирования Microsoft Visual Studio 2008. Настройка процедуры не требуется.


4.3 Описание функции формирования элитной группы


4.3.1 Вводная часть

Процедура формирует элитную группу из исходного множества согласно эталону.


4.3.2 Функциональное назначение

Процедура предназначена для отбора элементов в исходное множество согласно значениям критерия эталона и случайного включения в группу «сорных» элементов.


4.3.3 Описание информации

Входная информация: возрастной промежуток, пол, промежуток опыта работы, образование, рекомендации, санитарная книжка.

Выходная информация: элитная группа, данные которой выводятся на форму.


4.3.4 Описание логики

Описание логики процедуры представлено на рисунке 5.


Рис.5. Описание логики процедуры


4.3.5 Настройка программных средств


Для реализации программы использовался язык Visual С++, среда программирования Microsoft Visual Studio 2008. Настройка процедуры не требуется.


4.4 Описание функции эволюции элитной группы


4.4.1 Вводная часть

Процедура предназначена для дальнейшего развития элитной группы.


4.4.2 Функциональное назначение

Процедура выбирает «рекомендателя» из элитной группы, претендента из исходного множества и происходит отбор элементов в элитную группу заново согласно значениям критериев «рекомендателя».


4.4.3 Описание информации

Входная информация: таблица со значениями критериев элитной группы.

Выходная информация: вновь сформированная элитная группа, вывод о результате развития группы.


4.4.4 Описание логики

Описание логики процедуры представлено на рисунке 6.


Рис.6. Описание логики процедуры


4.4.5 Настройка программных средств

Для реализации программы использовался язык Visual С++, среда программирования Microsoft Visual Studio 2008. Настройка процедуры не требуется.


.5. Описание функции "прополки"


.5.1 Вводная часть

Функция удаляет указанное пользователем число элементов из элиты. Элементы выбираются по отсортированности по сумме параметров. Элиту покидают элементы с меньшей суммой и их заменяют случайные элементы из генеральногонабоа.


4.5.2 Функциональное назначение

Функция предназначена для удаления наиболее "низкосортных" элементов и замена их случайными элементами из генеральной группы. Таким образом происходит попытка улучшить сумму элитной группы.


4.5.3 Описание информации

Входная информация: количество элементов, которое необходимо заменить(данные с формы); "элитная" группа.

Выходная информация: изменённая элитная группа;


4.5.4 Описание логики

Описание логики процедуры представлено на рисунке 7.


Рис.7. Описание логики процедуры


4.5.5 Настройка программных средств

Для реализации программы использовался язык Visual С++, среда программирования Microsoft Visual Studio 2008. Настройка процедуры не требуется.


4.6 Описание функции "сбора урожая"


.6.1 Вводная часть

Функция удаляет указанное пользователем число элементов из элиты. Элементы выбираются по отсортированности по сумме параметров. Элиту покидают элементы с большей суммой и их заменяют случайные элементы из генерального набора.


4.6.2 Функциональное назначение

Функция предназначена для удаления наиболее "качественных" элементов и замена их случайными элементами из генеральной группы. Таким образом эмитируется переход "качественных" элементов в "верхи".


.6.3 Описание информации

Входная информация: количество элементов, которое необходимо заменить; "элитная" группа.

Выходная информация: изменённая элитная группа.


4.6.4 Описание логики

Описание логики процедуры представлено на рисунке 8.


Рис.8. Описание логики процедуры


.6.5 Настройка программных средств

Для реализации программы использовался язык Visual С++, среда программирования Microsoft Visual Studio 2008. Настройка процедуры не требуется.



. КОНТРОЛЬНЫЙ ПРИМЕР


Ниже представлены все возможные варианты работы программы: все сообщения об ошибках, исключения и окна результатов.


Рис. 9. Главное рабочее окно программы


Рис. 10. Демонстрация подпунктов меню


Рис. 11. Сообщение, появляющееся в результате выбора пункта меню «О программе->Теория элит»


Рис. 12. Сообщение, появляющееся в результате выбора пункта меню «О программе->Об авторе»


Рис. 13. Диалоговое окно открытия файла, появляющееся в результате выбора пункта меню «Основное->Выбрать файл кандидатов»


Рис. 14. Сообщения, появляющиеся в случае если имя файла введено неверно или не введено вообще


Рис. 15. Сообщение появляющееся после ввода имени файла - в нём дублируется имя файла, для того что бы пользователь мог удостоверится в правильности ввода


Ввод необходимых требований к работнику - иначе говоря ввод эталона


Рис. 16. Результат работы программы


Рис. 17. Результат работы программы при нажатии кнопки «Сбор урожая»


Рис. 18 Результат работы программы при нажатии кнопки «Прополка»


Рис. 19



Заключение


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

Теория принятия решений часто обращается к теории элитных групп. Теория элит - концепция деления общества на определенные слои. А значит в том случае, когда нам необходимо выбрать человека (или группу людей) лучшего в чём-то из общей массы целесообразно обратиться к теории элитных групп. И автоматизировав данный поиск, я сделала его быстрее и надёжнее, без возможности пропуска необходимого кандидата.

В заключении хотелось бы добавить, что теория элитных групп находит своё применение в реальной жизни и поэтому заниматься её изучением, как и изучением дисциплины «Теория принятия решений» в целом необходимо для плодотворной будущей работы и для жизни в целом.


Список используемой литературы


1.А. Ефимов. Элитные группы, их возникновение и эволюция. Журнал «Знание - сила», 1988 г.

2.Статья «Теория элитных групп в жизни есть место математике», Иван Селиховкин, источник: #"justify">.Статья «Теория элиты», Политология. Словарь. - М: РГУ. В.Н. Коновалов, 2010, источник: #"justify">.Пауэрс Л., Снелл М. «MicrosoftVisualStudio 2008 в подлиннике», 2009г.

.«Современные теории элиты: Критический очерк» , Ашин Геннадий Константинович, Издательство: Международные отношения, 1985

.История социологии - Зборовский Г.Е., источник: #"justify">.Селигмен Б. Основные течения современной экономической мысли. М ., 1968.

.В.Парето Компендиум по общей социологии. М., 2008

.Бьерн Страуструп. Язык программирования С++, источник: #"justify">10.Интерактивный учебник по Visual C++, источник: #"justify">ПРИЛОЖЕНИЕ 1


Текст программы


#pragma once

#include <iostream>

#include <stddef.h>fname[];theory {namespace System;namespace System::IO;namespace System::ComponentModel;namespace System::Collections;namespace System::Windows::Forms;namespace System::Data;namespace System::Drawing;

/// <summary>

/// Summary for Form1

///

/// WARNING: If you change the name of this class, you will need to change the

/// 'Resource File Name' property for the managed resource compiler tool

/// associated with all .resx files this class depends on. Otherwise,

/// the designers will not be able to interact properly with localized

/// resources associated with this form.

/// </summary>ref class Form1 : public System::Windows::Forms::Form

{:(void)

{();

//

//TODO: Add the constructor code here

//

}:

/// <summary>

/// Clean up any resources being used.

/// </summary>

~Form1()

{(components)

{components;

}

}: System::Windows::Forms::MenuStrip^ menuStrip1;:: System::Windows::Forms::ToolStripMenuItem^ основноеToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ выбратьФайлКандидатовToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ оПрограммеToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ теорияЭлитToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ обАвтореToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ ааToolStripMenuItem;: System::Windows::Forms::ToolStripMenuItem^ выходToolStripMenuItem;: System::Windows::Forms::OpenFileDialog^ openFileDialog1;: System::Windows::Forms::ComboBox^ dol;: System::Windows::Forms::Label^ label1;: System::Windows::Forms::Label^ label2;: System::Windows::Forms::Label^ label3;: System::Windows::Forms::ComboBox^ Age;: System::Windows::Forms::ComboBox^ Ed;: System::Windows::Forms::ComboBox^ Sex;: System::Windows::Forms::ComboBox^ Exp;: System::Windows::Forms::Label^ label4;: System::Windows::Forms::Label^ label5;: System::Windows::Forms::CheckBox^ Rec;: System::Windows::Forms::CheckBox^ Sk;: System::Windows::Forms::ListBox^ Rez;: System::Windows::Forms::Label^ label6;: System::Windows::Forms::Label^ label7;: System::Windows::Forms::Button^ button1;: System::Windows::Forms::DataGridView^ data1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Name1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Sex1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Age1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Exp1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Ed1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Sk1;: System::Windows::Forms::DataGridViewTextBoxColumn^ Rec1;:

/// <summary>

/// Required designer variable.

/// </summary>::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>InitializeComponent(void)

{>menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());>основноеToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>выбратьФайлКандидатовToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>ааToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>выходToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>оПрограммеToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>теорияЭлитToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>обАвтореToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());>openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog());>dol = (gcnew System::Windows::Forms::ComboBox());>label1 = (gcnew System::Windows::Forms::Label());>label2 = (gcnew System::Windows::Forms::Label());>label3 = (gcnew System::Windows::Forms::Label());>Age = (gcnew System::Windows::Forms::ComboBox());>Ed = (gcnew System::Windows::Forms::ComboBox());>Sex = (gcnew System::Windows::Forms::ComboBox());>Exp = (gcnew System::Windows::Forms::ComboBox());>label4 = (gcnew System::Windows::Forms::Label());>label5 = (gcnew System::Windows::Forms::Label());>Rec = (gcnew System::Windows::Forms::CheckBox());>Sk = (gcnew System::Windows::Forms::CheckBox());>Rez = (gcnew System::Windows::Forms::ListBox());>label6 = (gcnew System::Windows::Forms::Label());>label7 = (gcnew System::Windows::Forms::Label());>button1 = (gcnew System::Windows::Forms::Button());>data1 = (gcnew System::Windows::Forms::DataGridView());>Name1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Sex1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Age1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Exp1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Ed1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Sk1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>Rec1 = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());>menuStrip1->SuspendLayout();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->data1))->BeginInit();>SuspendLayout();>menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->основноеToolStripMenuItem,>оПрограммеToolStripMenuItem});>menuStrip1->Location = System::Drawing::Point(0, 0);>menuStrip1->Name = L"menuStrip1";>menuStrip1->Size = System::Drawing::Size(476, 24);>menuStrip1->TabIndex = 0;>menuStrip1->Text = L"menuStrip1";>основноеToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(3) {this->выбратьФайлКандидатовToolStripMenuItem,>ааToolStripMenuItem, this->выходToolStripMenuItem});>основноеToolStripMenuItem->Name = L"основноеToolStripMenuItem";>основноеToolStripMenuItem->Size = System::Drawing::Size(74, 20);>основноеToolStripMenuItem->Text = L"Основное";>выбратьФайлКандидатовToolStripMenuItem->Name = L"выбратьФайлКандидатовToolStripMenuItem";>выбратьФайлКандидатовToolStripMenuItem->Size = System::Drawing::Size(248, 22);>выбратьФайлКандидатовToolStripMenuItem->Text = L"Выбрать файл кандидатов";>выбратьФайлКандидатовToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::выбратьФайлКандидатовToolStripMenuItem_Click);>ааToolStripMenuItem->Name = L"ааToolStripMenuItem";>ааToolStripMenuItem->Size = System::Drawing::Size(248, 22);>ааToolStripMenuItem->Text = L"Сохранить полученные данные";>выходToolStripMenuItem->Name = L"выходToolStripMenuItem";>выходToolStripMenuItem->Size = System::Drawing::Size(248, 22);>выходToolStripMenuItem->Text = L"Выход";>выходToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::выходToolStripMenuItem_Click);>оПрограммеToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {this->теорияЭлитToolStripMenuItem,>обАвтореToolStripMenuItem});>оПрограммеToolStripMenuItem->Name = L"оПрограммеToolStripMenuItem";>оПрограммеToolStripMenuItem->Size = System::Drawing::Size(94, 20);>оПрограммеToolStripMenuItem->Text = L"О программе";>теорияЭлитToolStripMenuItem->Name = L"теорияЭлитToolStripMenuItem";>теорияЭлитToolStripMenuItem->Size = System::Drawing::Size(142, 22);>теорияЭлитToolStripMenuItem->Text = L"Теория элит";>теорияЭлитToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::теорияЭлитToolStripMenuItem_Click);>обАвтореToolStripMenuItem->Name = L"обАвтореToolStripMenuItem";>обАвтореToolStripMenuItem->Size = System::Drawing::Size(142, 22);>обАвтореToolStripMenuItem->Text = L"Об авторе";>обАвтореToolStripMenuItem->Click += gcnew System::EventHandler(this, &Form1::обАвтореToolStripMenuItem_Click);>openFileDialog1->FileName = L"openFileDialog1";>openFileDialog1->FileOk += gcnew System::ComponentModel::CancelEventHandler(this, &Form1::openFileDialog1_FileOk);>dol->FormattingEnabled = true;>dol->Items->AddRange(gcnew cli::array< System::Object^ >(4) {L"Официант", L"Дворник", L"Кассир", L"Бухгалтер"});>dol->Location = System::Drawing::Point(209, 39);>dol->Name = L"dol";>dol->Size = System::Drawing::Size(121, 21);>dol->TabIndex = 1;>label1->AutoSize = true;>label1->Location = System::Drawing::Point(135, 42);>label1->Name = L"label1";>label1->Size = System::Drawing::Size(68, 13);>label1->TabIndex = 2;>label1->Text = L"Должность:";>label2->AutoSize = true;>label2->Location = System::Drawing::Point(12, 76);>label2->Name = L"label2";>label2->Size = System::Drawing::Size(52, 13);>label2->TabIndex = 3;>label2->Text = L"Возраст:";>label3->AutoSize = true;>label3->Location = System::Drawing::Point(12, 104);>label3->Name = L"label3";>label3->Size = System::Drawing::Size(78, 13);>label3->TabIndex = 4;>label3->Text = L"Образование:";>Age->FormattingEnabled = true;>Age->Items->AddRange(gcnew cli::array< System::Object^ >(6) {L"18-20", L"20-25", L"25-30", L"30-40", L"40-50", L"50 и более"});>Age->Location = System::Drawing::Point(86, 73);>Age->Name = L"Age";>Age->Size = System::Drawing::Size(121, 21);>Age->TabIndex = 7;>Age->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::Age_SelectedIndexChanged);>Ed->FormattingEnabled = true;>Ed->Items->AddRange(gcnew cli::array< System::Object^ >(4) {L"Высшее", L"Неоконченное высшее", L"Среднее", L"Начальное"});>Ed->Location = System::Drawing::Point(86, 101);>Ed->Name = L"Ed";>Ed->Size = System::Drawing::Size(121, 21);>Ed->TabIndex = 8;>Sex->FormattingEnabled = true;>Sex->Items->AddRange(gcnew cli::array< System::Object^ >(2) {L"Мужской", L"Женский"});>Sex->Location = System::Drawing::Point(334, 73);>Sex->Name = L"Sex";>Sex->Size = System::Drawing::Size(121, 21);>Sex->TabIndex = 9;>Exp->FormattingEnabled = true;>Exp->Items->AddRange(gcnew cli::array< System::Object^ >(4) {L"Без опыта работы", L"до 3 лет", L"3-10 лет", L"более 10 лет"});>Exp->Location = System::Drawing::Point(334, 101);>Exp->Name = L"Exp";>Exp->Size = System::Drawing::Size(121, 21);>Exp->TabIndex = 10;>label4->AutoSize = true;>label4->Location = System::Drawing::Point(251, 76);>label4->Name = L"label4";>label4->Size = System::Drawing::Size(30, 13);>label4->TabIndex = 11;>label4->Text = L"Пол:";>label5->AutoSize = true;>label5->Location = System::Drawing::Point(251, 104);>label5->Name = L"label5";>label5->Size = System::Drawing::Size(77, 13);>label5->TabIndex = 12;>label5->Text = L"Опыт работы:";>Rec->AutoSize = true;>Rec->Location = System::Drawing::Point(15, 139);>Rec->Name = L"Rec";>Rec->Size = System::Drawing::Size(305, 17);>Rec->TabIndex = 15;>Rec->Text = L"Наличие рекомендаций от предыдущих работодателей";>Rec->UseVisualStyleBackColor = true;>Sk->AutoSize = true;>Sk->Location = System::Drawing::Point(15, 162);>Sk->Name = L"Sk";>Sk->Size = System::Drawing::Size(172, 17);>Sk->TabIndex = 16;>Sk->Text = L"Наличие санитарной книжки";>Sk->UseVisualStyleBackColor = true;>Rez->FormattingEnabled = true;>Rez->Location = System::Drawing::Point(16, 374);>Rez->Name = L"Rez";>Rez->Size = System::Drawing::Size(441, 43);>Rez->TabIndex = 17;>label6->AutoSize = true;>label6->Location = System::Drawing::Point(16, 355);>label6->Name = L"label6";>label6->Size = System::Drawing::Size(109, 13);>label6->TabIndex = 18;>label6->Text = L"Результаты поиска:";>label7->AutoSize = true;>label7->Location = System::Drawing::Point(13, 197);>label7->Name = L"label7";>label7->Size = System::Drawing::Size(66, 13);>label7->TabIndex = 19;>label7->Text = L"Кандидаты:\r\n";>button1->Location = System::Drawing::Point(380, 162);>button1->Name = L"button1";>button1->Size = System::Drawing::Size(75, 23);>button1->TabIndex = 20;>button1->Text = L"Искать";>button1->UseVisualStyleBackColor = true;>button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);>data1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;>data1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(7) {this->Name1, this->Sex1,>Age1, this->Exp1, this->Ed1, this->Sk1, this->Rec1});>data1->Location = System::Drawing::Point(16, 213);>data1->Name = L"data1";>data1->Size = System::Drawing::Size(441, 128);>data1->TabIndex = 23;>Name1->HeaderText = L"Имя";>Name1->Name = L"Name1";>Name1->ReadOnly = true;>Sex1->HeaderText = L"Пол";>Sex1->Name = L"Sex1";>Sex1->ReadOnly = true;>Sex1->Width = 50;>Age1->HeaderText = L"Возраст";>Age1->Name = L"Age1";>Age1->ReadOnly = true;>Age1->Width = 70;>Exp1->HeaderText = L"Опыт работы";>Exp1->Name = L"Exp1";>Exp1->ReadOnly = true;>Exp1->Width = 70;>Ed1->HeaderText = L"Образование";>Ed1->Name = L"Ed1";>Ed1->ReadOnly = true;>Sk1->HeaderText = L"Санитарная книжка";>Sk1->Name = L"Sk1";>Sk1->ReadOnly = true;>Sk1->Width = 50;>Rec1->HeaderText = L"Рекомендации";>Rec1->Name = L"Rec1";>Rec1->ReadOnly = true;>Rec1->Width = 50;>AutoScaleDimensions = System::Drawing::SizeF(6, 13);>AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;>ClientSize = System::Drawing::Size(476, 429);>Controls->Add(this->data1);>Controls->Add(this->button1);>Controls->Add(this->label7);>Controls->Add(this->label6);>Controls->Add(this->Rez);>Controls->Add(this->Sk);>Controls->Add(this->Rec);>Controls->Add(this->label5);>Controls->Add(this->label4);>Controls->Add(this->Exp);>Controls->Add(this->Sex);>Controls->Add(this->Ed);>Controls->Add(this->Age);>Controls->Add(this->label3);>Controls->Add(this->label2);>Controls->Add(this->label1);>Controls->Add(this->dol);>Controls->Add(this->menuStrip1);>MainMenuStrip = this->menuStrip1;>Name = L"Form1";>Text = L"Выбор работника";>Activated += gcnew System::EventHandler(this, &Form1::Form1_Activated);>menuStrip1->ResumeLayout(false);>menuStrip1->PerformLayout();

(cli::safe_cast<System::ComponentModel::ISupportInitialize^ >(this->data1))->EndInit();>ResumeLayout(false);>PerformLayout();

}

#pragma endregion: System::Void выходToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {();

}: System::Void обАвтореToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {::Show("Программа была создана в качестве курсовой работы по дисциплине №Теория принятия решений№. Руководитель Лугачёв П.П. Выполнила Филиппова Е.А. гр 7-78-12.", "О Программе", MessageBoxButtons::OK);

}: System::Void теорияЭлитToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {::Show("Теория элит - концепция деления общества на определенные слои.\n Элита, элитная группа - чисто научные термины, означающие совокупность элементов, в чём-то лучших, чем остальные.\n В данной программе применяется выбор из общего числа предендентов людей, которые в чём-то лучше остальных подходят для данной работы.", "Теория элит", MessageBoxButtons::OK);

}: System::Void openFileDialog1_FileOk(System::Object^ sender, System::ComponentModel::CancelEventArgs^ e) {

}: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {(numericUpDown12.Value > 0)

{;(numericUpDown12.Value >elite.Count / 2)= elite.Count / 2;= (int)numericUpDown12.Value;= 0;(inti = 0; i<elite.Count; i++)+= elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot;.Text = "Суммаэлиты: " + summelite.ToString();.Visible = true;min;= newRandom();

(int j = 0; j <kol; j++)

{= 0;(inti = 0; i<elite.Count; i++)

{(i != 0)(elite[min].Height + elite[min].MediumShot + elite[min].LongShot + elite[min].Pass + elite[min].Rebound + elite[min].Steal + elite[min].Endurance + elite[min].BlockShot> elite[i].Height + elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot)= i;

}.Add(elite[min]);.RemoveAt(min);= elite[rnd.Next(0, elite.Count - 1)];= list[rnd.Next(0, list.Count - 1)];(can.Height>= rec.Height&&can.MediumShot>= rec.MediumShot

&&can.LongShot>= rec.LongShot&&can.Pass>= rec.Pass

&&can.Rebound>= rec.Rebound&&can.Steal>= rec.Steal

&&can.Endurance>= rec.Endurance&&can.BlockShot>= rec.BlockShot).Add(can);.Add(list[rnd.Next(0, list.Count - 1)]);= 0;(inti = 0; i<elite.Count; i++)+= elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot;.Text = "Втораясуммаэлиты: " + summelite2.ToString();.Visible = true;

(summelite< summelite2)

{.BackColor = Color.Green;.Text = "Элитаразвивается";

}

{.BackColor = Color.Red;.Text = "Элитадеградирует";

}.Visible = true;

}.DataSource = null;.Rows.Clear();.DataSource = elite;

.DataSource = null;.Rows.Clear();.DataSource = propol;

}

}

}: System::Void выбратьФайлКандидатовToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {(openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{::Show(openFileDialog1->FileName);

}

{::Show("Необходимо выбрать файл!");

}->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;->Visible=true;>Visible=true;>Visible=true;>Visible=true;>Visible=true;>Visible=true;>Visible=true;>Visible=true;>Visible=true;->Visible=true;->Visible=true;^ sf = gcnew StreamReader(openFileDialog1->FileName);^ line;i=1;[0,0]->Value=sf->ReadLine();(sf->ReadLine() != "")

{->Rows->Add(sf->ReadBlock(String),sf->ReadBlock(String),sf->ReadBlock(int),sf->ReadBlock(int),sf->ReadBlock(String),sf->ReadBlock(String),sf->ReadBlock(String));

}>Close();

}: System::Void Form1_Activated(System::Object^ sender, System::EventArgs^ e) {->Columns[2]->ValueType=typeof(int);->Columns[3]->ValueType=typeof(int);

}: System::Void эволюцияToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {sum=0;(int i=0;i<count;i++) sum=+data2[i,9];x; int y;=rand()%count; y=rand()%count_o;(data2[x,9]->Value<data[y,9]->Value)

{>Items->Add(data1[y,0]);++;

}(int i=0;i<count;i++) sum=+data2[i,9];


}: System::Void Age_SelectedIndexChanged(System::Object^ sender, System::EventArgs^ e) {

}: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {(numericUpDown13.Value > 0)

{;(numericUpDown13.Value >elite.Count / 2)= elite.Count / 2;= (int)numericUpDown13.Value;= 0;(inti = 0; i<elite.Count; i++)+= elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot;.Text = "Суммаэлиты: " + summelite.ToString();.Visible = true;max;= newRandom();(int j = 0; j <kol; j++)

{= 0;(inti = 0; i<elite.Count; i++)

{(i != 0)(elite[max].Height + elite[max].MediumShot + elite[max].LongShot + elite[max].Pass + elite[max].Rebound + elite[max].Steal + elite[max].Endurance + elite[max].BlockShot< elite[i].Height + elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot)= i;

}.Add(elite[max]);.RemoveAt(max);= elite[rnd.Next(0, elite.Count - 1)];= list[rnd.Next(0, list.Count - 1)];(can.Height>= rec.Height&&can.MediumShot>= rec.MediumShot

&&can.LongShot>= rec.LongShot&&can.Pass>= rec.Pass

&&can.Rebound>= rec.Rebound&&can.Steal>= rec.Steal

&&can.Endurance>= rec.Endurance&&can.BlockShot>= rec.BlockShot).Add(can);.Add(list[rnd.Next(0, list.Count - 1)]);= 0;(inti = 0; i<elite.Count; i++)+= elite[i].MediumShot + elite[i].LongShot + elite[i].Pass + elite[i].Rebound + elite[i].Steal + elite[i].Endurance + elite[i].BlockShot;.Text = "Втораясуммаэлиты: " + summelite2.ToString();.Visible = true;

(summelite< summelite2)

{.BackColor = Color.Green;.Text = "Элитаразвивается";

}

{.BackColor = Color.Red;.Text = "Элитадеградирует";

}.Visible = true;

}.DataSource = null;.Rows.Clear();.DataSource = elite;

.DataSource = null;.Rows.Clear();.DataSource = urozhaj;

}

}: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {age11,age12,exp11,exp12,ed11;sk11,rec11,sex;(Sex->SelectedIndex)

{0: sex = true; //мужчина1: sex = false; //женщина

}(Age->SelectedIndex)

{0: age11=18;age12=20;break;1: age11=20;age12=25;break;2: age11=30;age12=40;break;3: age11=40;age12=50;break;4: age11=50;age12=150;break;

}(Ed->SelectedIndex)

{0: ed11=1;break;1: ed11=2;break;2: ed11=3;break;3: ed11=4;break;

}(Exp->SelectedIndex)

{0: exp11=0;exp12=0;break;1: exp11=0;exp12=3;break;2: exp11=3;exp12=10;break;3: exp11=10;exp12=120;break;

};=false;rec11=false;(Rec->Checked) rec11=true;(Sk->Checked) sk11=true;(dol->SelectedIndex)

{0: Rez->Items->Add("Кандидат на должность официанта:\n");break;1: Rez->Items->Add("Кандидат на должность дваорника:\n");break;2: Rez->Items->Add("Кандидат на должность кассира:\n");break;3: Rez->Items->Add("Кандидат на должность бухгалтера:\n");break;

};tage,texp,ted11;tsk11,trec11,tsex;(int i=0;i<data1->RowCount;i++)

{(data1[i,1]->Value="ж") tsex=false;tsex=true;(data1[i,4]->Value="Высшее") ted11=1;(data1[i,4]->Value="Неоконченное высшее") ted11=2;(data1[i,4]->Value="Среднее") ted11=3;(data1[i,4]->Value="Начальное") ted11=4;(data1[i,6]->Value="нет") trec11=false;trec11=true;(data1[i,5]->Value="нет") tsk11=false;tsk11=true;=data1[i,2]->Value;=data1[i,3]->Value;(tsex==sex) and (tage>=age11)and (tage<=age12) and (texp>=exp11) and (texp<=exp12)(sk11==tsk11) and (rec11==trec11) and (ted11=ed11)>Items->Add(data1[i,0]->Value);Rez->Items->Add("Подходящей кандидатуры не найдено, повторите поиск с другими параметрами.");


}

}

};

}


ПРИЛОЖЕНИЕ 2


РУКОВОДСТВО ПРОГРАММИСТА


П 3.1 Назначение программы


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


П 3.2 Условия применения программы


Процессор 1500 МГц и больше; 512 Мб оперативной памяти и больше; операционная система WindowsXP\Vista\Seven; дополнительное наличие программ или библиотек не требуется. Для реализации программы необходима программа Microsoft Visual Studio 2008.


П 3.3 Обращение к программе


Загрузка главной программы производится запуском файла theory.exe.


П 3.4. Входные и выходные данные


В качестве входных данных используются текстовый файл *.txt и значения критериев эталона.


П 3.5 Сообщения


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

ПРИЛОЖЕНИЕ 3


РУКОВОДСТВО ОПЕРАТОРА


П 4.1 Назначение программы


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


П 4.2 Условия применения программы


Процессор 1500 МГц и больше; 512 Мб оперативной памяти и больше; операционная система WindowsXP\Vista\Seven; дополнительное наличие программ или библиотек не требуется. Для реализации программы необходима программа Microsoft Visual Studio 2008.


П 4.3 Пуск программы


Загрузка данной задачи производится запуском файла theory.exe.

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


П 4.4 Команда оператора


Оператор не управляет выполнением программы. Путем нажатия кнопок он может запускать различные процедуры.

Кнопки:

«Искать» - формирует элитную группу из исходной генеральной совокупности;

«Добавить в элитную группу» - формирует элитную группу из исходной

«Прополка» - запускает процедуру «прополки»;

«Сбор урожая» - запускает процедуру «сбора урожая».


П 4.5 Сообщения оператору


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


Введение Каждый хотя бы раз в своей жизни сталкивался с необходимостью выбора чего-то лучшего из массы. Данный поиск всегда отнимает много сил, так как н

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ