Uploaded by kun79277

Пример выполненияКР ОИИ заочн ба

advertisement
Министерство образования и науки Российской Федерации
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет математики и информационных технологий
Кафедра программного обеспечения вычислительной техники
и автоматизированных систем
Курсовая работа
по дисциплине «Основы искусственного интеллекта»
Разработка компонентов программно-информационных систем с
элементами искусственного интеллекта
ОГУ 09.03.04. 3021. 348 ПЗ
Руководитель
канд. техн. наук, доцент
_________ А.М. Семенов
«___» ______________20__г.
Исполнитель
студент гр. З-17ПИнж(ба)РПиС
_________ ФИО
«___» ______________20__ г.
Оренбург 2021
Утверждаю
заведующий кафедрой программного
обеспечения вычислительной
техники и автоматизированных систем
______________
Н.А. Соловьев
подпись
инициалы, фамилия
«___» ___________ 20
г.
ЗАДАНИЕ
на выполнение курсовой работы
студенту ____________________________________________________
фамилия, имя, отчество
по направлению подготовки 09.03.04 Программная инженерия
код, наименование
по Основы искусственного интеллекта
наименование дисциплины
1 Тема работы «Интеллектуальная система-советчик выбора
профессии»
2 Срок сдачи студентом работы «____» ___________ 20 ___г.
3 Цель и задачи работы.
Цель: Автоматизация процесса принятия решения выбора профессии
задачи классификации и программная реализация алгоритма системысоветчика.
Задачи: Изучение теоретических сведений; анализ предметной области;
анализ существующих аналогов программных средств; выбор моделей данных,
метода и инструментальных средств разработки программной системы;
проектирование и разработка приложения.
4 Исходные данные к работе. Набор переменных для реализации
системы-советчика выбора профессии.
5 Перечень вопросов, подлежащих разработке. Разработать набор
переменных объекта в выбранной предметной области; архитектуру,
функциональную схему и алгоритм приложения; руководство по установке,
администрированию приложения и пользования ПС. Обоснование выбора
средств разработки программной системы.
6 Перечень графического материала. Архитектура, функциональная
схема, схема алгоритма программного средства и листинг программы.
Дата выдачи и получения задания
Руководитель
«____» ________ 20___г.
Студент
«____» ________ 20___г.
подпись
А.М.Семенов
инициалы, фамилия
_____________________
подпись
инициалы, фамилия
Лист
2
Аннотация
Пояснительная записка содержит 24 страниц, в том числе 13 рисунков,
5 источников и 4 приложения.
В данной курсовой работе произведены исследования возможностей по
разработке программы-советчика выбора профессии на основе среды
разработки Visual Studio 2019 и оконного приложения, написанного на языке
программирования высокого уровня C#.
Система расширяемая — можно добавлять свои профессии и
увеличивать базу тестирования.
В Visual Studio 2019 имеется большой набор интегрированных служб,
расширяющих возможности использования данных, а именно: составлять
запросы, выполнять поиск, проводить синхронизацию, делать отчеты,
анализировать данные.
ОГУ 09.03.04. 3021. 348 ПЗ
Изм. Лист
№документа
документа
Разраб.
Руководит. Семенов А.М.
Н. Контр.
Зав. каф.
Подпись Дата
Интеллектуальная системасоветчик выбора профессии
Лит.
П З
Лист
3
Листов
23
З-17ПИнж(ба)РПиС
Содержание
Введение....................................................................................................................5
1 Краткие теоретические сведения.........................................................................6
1.1 Нечеткие отношения. .........................................................................................6
1.2 Композиционные правила. ................................................................................7
2 Анализ аналогов ....................................................................................................7
2.1 Обоснование выбора программных средств разработки. ..............................9
3 Руководство по эксплуатации программного средства ..................................11
3.1 Требования к системным ресурсам ................................................................11
3.2 Руководство пользователя...............................................................................11
Заключение .............................................................................................................15
Список использованных источников ...................................................................16
Приложение А ........................................................................................................17
Приложение Б .........................................................................................................18
Приложение В ........................................................................................................19
Приложение Г .........................................................................................................20
Лист
4
Введение
Целью данной курсовой работы является автоматизация процесса
решения задачи классификации и программная реализация алгоритма
системы-советчика выбора профессии по новым информационным
технологиям.
Выбор профессии является таким знаковым действием, которое может
сделать человека счастливым в жизни и успешным в профессиональной
деятельности, а может омрачить всю его жизнь, расстроить планы и сделать
его несчастным. В идеале два основных фактора определяют выбор профессии
- это самосовершенствование и благо другим людям. Именно поэтому к
выбору будущей профессии стоит готовиться еще в детстве и юности,
занимаясь профориентацией школьников.
Выбор будущей профессии находится в зависимости не только от
желаний и способностей личности, но также от достижений в социальнокультурной и материальной составляющей того общества, в который человек.
В этой связи интересна мысль об отрицательном влиянии престижных, как
теперь принято называть, факторов на выбор.
Платон писал: «Люди рождаются не слишком похожими друг на друга,
их природа бывает, различна, да и способности к тому или иному делу также.
Поэтому можно сделать все в большом количестве, лучше и легче, если
выполнять одну какую-нибудь работу соответственно своим природным
задаткам».
Лист
5
1 Краткие теоретические сведения
1.1 Нечеткие отношения.
Нечеткое множество представляет собой совокупность элементов
произвольной природы, относительно которых нельзя точно утверждать –
обладают ли эти элементы некоторым характеристическим свойством,
которое используется для задания нечеткого множества.
Пусть X – универсальное (базовое) множество, x – элемент X, а R –
некоторое свойство. Обычное (четкое) подмножество A универсального
множества X, элементы которого удовлетворяют свойству R, определяется
как
множество
упорядоченных
пар
A = μ A x / x,
где μ A x –
характеристическая
функция,
принимающая
значение 1,
если x удовлетворяет свойству R , и 0 – в противном случае.
Нечеткое подмножество отличается от обычного тем, что для
элементов x из X нет однозначного ответа «да-нет» относительно
свойства R. В связи с этим, нечеткое подмножество A универсального
множества X определяется как множество упорядоченных пар A = μ A x / x,
где μ A x – характеристическая
функция
принадлежности (или
просто функция принадлежности), принимающая значения в некотором
вполне упорядоченном множестве M = 0;1. Функция принадлежности
указывает
степень
(или
уровень)
принадлежности
элемента x подмножеству A.
Множество M называют
множеством
принадлежностей. Если M = 0;1, то нечеткое подмножество A может
рассматриваться как обычное или четкое множество. Степень
принадлежности μ A x является субъективной мерой того, насколько
элемент x ∈ X, соответствует понятию, смысл которого формализуется
нечетким множеством A.
Носителем нечеткого
множества A является
четкое
подмножество S A универсального множества X со свойством μ A x>0,
т.е. S A = x ∣ x ∈ X ∧ μ A x>0. Иными словами, носителем нечеткого
множества A является подмножество S A универсального множества X, для
элементов которого функция принадлежности μ A x>0 больше нуля.
Иногда носитель нечеткого множества обозначают support A.
Если носителем нечеткого множества A является дискретное
подмножество S A,
то
нечеткое
подмножество A универсального
множества X, состоящего из n элементов, можно представить в виде
объединения конечного числа одноточечных множеств μ A x / x при
помощи символа ∑: A = ∑ i = 1 n μ A x i / x i. При этом подразумевается,
что элементы x i упорядочены по возрастанию в соответствии со своими
индексами, т.е. x 1 < x 2 < x 3 < … < x n.
Если носителем нечеткого множества A является непрерывное
подмножество S A,
то
нечеткое
подмножество A универсального
множества X, рассматривая символ ∫ как непрерывный аналог введенного
выше символа объединения для дискретных нечетких множеств ∑, можно
представить в виде объединения бесконечного числа одноточечных
множеств μ A x / x:
Лист
A = ∫ X μ A x / x.
6
1.2 Композиционные правила.
Альтернативные операции композиции двух бинарных нечетких
отношений. Нечеткое бинарное отношение, заданное на декартовом
произведении X 1  X 3 и обозначаемое через Q  R , называется (max-*)композицией бинарных нечетких отношений Q и R , если его функция
принадлежности определяется следующим выражением:
Q  R ( xi , xk )  max {Q ( xi , x j )   R ( x j , xk )}
x jX 2
(  xi , xk  X 1  X 3 )
В частности, если в выражении (1) вместо операции «*» использовать
операцию алгебраического умножения, то получим определение (тах-prod)композиции.
2 Анализ аналогов
Тест на профориентацию на платформе hh.ru представляет собой
комплекс вопросов, отвечая на которые, человек проходит объективное
тестирование эмоциональных и профессиональных предпочтений, которое
позволяет определиться с выбором будущей профессии.
Рисунок 1 – Главная страница тестирования на платформе hh.ru
Преимущества:
1. Тест имеет индикаторы лжи. Тестируемый вынужден отвечать
честно.
2. Тест оценивает качества людей относительно обширной базы знаний,
которая ежегодно пополняется.
3. Приведение данных к единой модели позволяет избежать ситуации,
когда один и тот же показатель может быть рассчитан по-разному.
4. Разграничение прав доступа и хранение пользовательских форм.
5. Работа с устройств iOS, Android с использованием нативного
приложения.
Рисунок 2 – Результаты тестирования на платформе hh.ru
Недостатки:
1.
Главный недостаток – высокая стоимость. Поэтому было принято
решение разработать собственный прототип системы-советчика выбора
профессии.
2.
Отсутствие возможность интеграции сторонних сервисов и
провайдеров справочной информации.
3.
Отсутствие возможности настройка внешнего вида отчетов.
2.1 Обоснование выбора программных средств разработки.
Интегрированная среда разработки Visual Studio — это стартовая
площадка для написания, отладки и сборки кода, а также последующей
публикации приложений. Интегрированная среда разработки (IDE)
представляет собой многофункциональную программу, которую можно
использовать для различных аспектов разработки программного обеспечения.
Помимо стандартного редактора и отладчика, которые существуют в
большинстве сред IDE, Visual Studio включает в себя компиляторы, средства
автозавершения кода, графические конструкторы и многие другие функции
для упрощения процесса разработки.
Лист
9
Плюсы:
1)
Официальная. Так, как и язык, и среда разработки созданы в
Microsoft, логично предположить, что ничего более функционального вы не
найдете во всем Интернете. В некоторых случаях без Visual Studio не обойтись
— например, при использовании технологий UWP и WPF.
2)
Бесплатная. Версии «Community edition» для рядового
пользователя будет достаточно. Тем более, теперь можно подключать плагины
(в отличие от старой версии Express).
3)
Функциональная. В Visual Studio множество качественных
плагинов. С их помощью можно расширить функциональность приложения и
подключить другие языки.
4)
Поддерживает платформы .NET. Visual Studio имеет широкие
возможности по разработке приложений под Windows, в том числе в .NETсегменте.
5)
Облачные хранилища. Зарегистрируйтесь в сообществе Visual
Studio — и получите доступ к облачному хранилищу, где сможете располагать
файлы проектов.
6)
Корпоративность. Технология бэклога позволяет членам команды
взаимодействовать при гибкой методологии разработки.
К числу принципиально важных решений, которые реализованы
корпорацией Microsoft в языке программирования C#, можно отнести
следующие: - компонентно-ориентированный подход к программированию
(который характерен и для идеологии Microsoft .NET в целом); - свойства как
средство инкапсуляции данных (характерно также в целом для ООП); обработка событий (имеются расширения, в том числе в части обработки
исключений, в частности, оператор try); - унифицированная система типизации
(соответствует идеологии Microsoft .NET в целом); - делегаты (delegate –
развитие указателя на функцию в языках C и C++); - индексаторы (indexer –
операторы индекса для обращения к элементам класса- контейнера); перегруженные операторы (развитие ООП); - оператор foreach (обработка всех
элементов классов-коллекций, аналог Visual Basic); - механизмы boxing и
unboxing для преобразования типов; - атрибуты (средство оперирования
метаданными в COM-модели); - прямоугольные массивы (набор элементов с
доступом по номеру индекса и одинаковым количеством столбцов и строк).
Лист
10
3 Руководство по эксплуатации программного средства
3.1 Требования к системным ресурсам
Для
работы
ПП
используется
персональный
компьютер,
удовлетворяющий следующим системным требованиям:
Минимальная конфигурация:
–
процессор с частотой не менее 0.5 ГГц;
–
свободное место на жестком диске не менее 0.3 Мб;
–
объем оперативного запоминающего устройства не менее 32 Мб.
–
Требования к информационной и программной совместимости:
–
Язык: C#, Microsoft .NET Framework 4.5;
–
Прикладная программа ОС: Windows ХР/Vista/7/8/10;
Объем программы: 0.212 Мб.
3.2 Руководство пользователя
Для запуска программы необходимо запустить файл ProfessionTest.exe из
папки с программой. В папке с программой также находится документ
Microsoft Excel в котором указаны специальности и значения качеств, которым
они соответствуют. Их можно изменить в любой момент, также, как и
количество профессий и характеристик.
Рисунок 3 – Таблица знаний в Word Excel
Запускаем программу для тестирования ProfessionTest.exe. Пример
показан на рисунке 4.
Рисунок 4 – Начальный экран приложения
Лист
11
Указываем свое имя, пол и возраст и начинаем тестирование. Примеры
показаны на рисунке 5 и на рисунке 6.
Рисунок 5 – Промежуточные этапы тестирования
Рисунок 6 – Промежуточные этапы тестирования
В окне результаты выводят результаты коэффицентов тестирования,
показывающие интенстивность развития навыка у тестируемого. Изменяются
в диапазоне от 0 до 1. Пример показан на рисунке 7.
Лист
12
Рисунок 7 – Окно результатов для ознакомления с параметрами
После необходимо открыть окно с детальными результатами в котором
рассчитываются коэффициенты композиции нечетких множеств, по большему
делается выбор профессии. Для расчёта используются разные алгоритмы
композиции нечетких множеств, такие как:
Max-min-композиция или максиминная нечеткая свертка:
 B ( y )  max {min{  A ( x),  Q ( x, y )}}
x X
Max-prod-композиция:
 B ( y )  max { A ( x)   Q ( x, y )}
x X
Min-max-композиция:
 B ( y )  min {max{  A ( x ),  Q ( x, y )}}
x X
Max-max-композиция:
 B ( y )  max {max{  A ( x), Q ( x, y )}}
x X
Min-min-композиция:
 B ( y )  min {min{  A ( x ),  Q ( x, y )}}
x X
Max-average-композиция:
 B ( y )  0.5  max { A ( x)   Q ( x, y )}
x X
Sum-prod-композиция:


 B ( y )  f   (  A ( x )  Q ( x, y )) 
 xX

Рисунок 8 – Виды композиций используемых в программе
Лист
13
Рисунок 9 – Пример результата оценки наиболее подходящей профессии
Рисунок 10 – Пример результата оценки наиболее подходящей
профессии
Лист
14
Заключение
В результате выполненных исследований была сделана программная
реализация алгоритма системы-советчика выбора профессии по новым
информационным технологиям. Были реализованы 2 нечетких множества,
соответствие между которыми определяет композиционными правилами,
результат которых может вычислять по различным алгоритмам, таким как
max-min, max-prod композиция и др. Анализ показывает, что имеющимся
кандидатам можно порекомендовать обучение по специальностям на основе
максимальных
значений
функции
принадлежности
композиции
рассматриваемых нечетких отношений.
Прикладная программа была протестирована при помощи среды
разработки «Visual Studio 2019». Результаты тестирования свидетельствуют об
адекватности работы ПП.
Прикладная программа создана с учетом дизайн-эргономических
требований, предъявляемых к разработке программных средств учебного
назначения.
Лист
15
Список использованных источников
1. Семенов, А.М. Интеллектуальные системы [Текст] : учебное пособие
для студентов, обучающихся по программам высшего профессионального
образования по направлениям подготовки 230100.68 Информатика и
вычислительная техника, 231000.68 Программная инженерия / А. М. Семенов,
Н. А. Cоловьев, Е. Н. Чернопрудова, А. С. Цыганков; М-во образования и
науки Рос. Федерации, Федер. гос. бюджет. образоват. учреждение высш.
проф. образования "Оренбург. гос. ун-т". - Оренбург : ОГИМ, 2014. - 237 с. Библиогр.: с. 218-221. - Прил.: с. 222-236. - ISBN 978-5-9723-0158-4. Издание
на др.носителе [Электронный ресурс]
2. Семенов, А.М. Интеллектуальные системы [Электронный ресурс] :
учебное пособие для студентов, обучающихся по программам высшего
профессионального образования по направлениям подготовки 230100.68
Информатика и вычислительная техника, 231000.68 Программная инженерия /
А. М. Семенов [и др.]; М-во образования и науки Рос. Федерации, Федер. гос.
бюджет. образоват. учреждение высш. проф. образования "Оренбург. гос. унт". - Электрон. текстовые дан. (1 файл: 3.85 Мб). - Оренбург : ОГУ, 2013. - 236
с. - Загл. с тит. экрана. -Adobe Acrobat Reader 6.0-ISBN978-5-9723-01584.. Издание на др. носителе [Текст]
3. Барсегян, А. А. Анализ данных и процессов: учеб. пособие / А. А.
Барсегян, М. С. Куприянов, И. И. Холод, М. Д. Тесс, С. И. Елизаров. - 3-е
изд., перераб. и доп. - СПб.: БХВ-Петербург, 2009.- 512 с. Режим доступа:
http://znanium.com/catalog/product/350638
4. Quinlan, J. R., (1986). Induction of Decision Trees. Machine Learning 1:
81-106, Kluwer Academic Publishers
5. Ананий В. Левитин Глава 10. Ограничения мощи алгоритмов:
Деревья принятия решения // Алгоритмы: введение в разработку и анализ =
Introduction to The Design and Analysis of Aigorithms. — М.: «Вильямс», 2006.
— С. 409-417.
Лист
16
Приложение А
(обязательное)
Архитектура программного средства
Рисунок А.1 – Архитектура программного средства
Лист
17
Приложение Б
(обязательное)
Укрупненная схема алгоритма
Рисунок Б.1 – Укрупненная схема алгоритма
Лист
18
Приложение В
(обязательное)
Функциональная схема программного средства
Рисунок В.1 – Функциональная схема программного средства
Лист
19
Приложение Г
(обязательное)
Частичный листинг программы
Main.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace test
{
public partial class Form1 : Form
{
private Microsoft.Office.Interop.Excel.Application ObjExcel;
private Microsoft.Office.Interop.Excel.Workbook ObjWorkBook;
private Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet;
List<double> str = new List<double>();
public string name;
public double[] coeff;
public Form1(string name, double[] arr)
{
InitializeComponent();
coeff = arr;
this.name = name;
dataGridView2.Columns[1].HeaderText = this.name;
loadGrid();
loadGrid1();
}
private void loadGrid()
{
string pathToFile = "C:\\Users\\Александр\\Desktop\\огу\\ои\\практики\\ПЗ №3 +\\практика\\1.xlsx";
try
{
ObjExcel = new Microsoft.Office.Interop.Excel.Application();
ObjWorkBook = ObjExcel.Workbooks.Open(pathToFile);
ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
Microsoft.Office.Interop.Excel.Range rg = null;
Int32 row = 1;
dataGridView1.Rows.Clear();
List<String> arr = new List<string>();
while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
{
rg = ObjWorkSheet.get_Range("a" + row, "u" + row);
foreach (Microsoft.Office.Interop.Excel.Range item in rg)
{
try
{
arr.Add(item.Value.ToString().Trim());
}
catch { arr.Add(""); }
}
dataGridView1.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11]/*, arr[12], arr[13],
arr[14], arr[15], arr[16], arr[17], arr[18], arr[19], arr[20]*/);
arr.Clear();
row++;
}
}
catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK,
MessageBoxIcon.Error); }
{
ObjWorkBook.Close(false, "", null);
ObjExcel.Quit();
ObjWorkBook = null;
ObjWorkSheet = null;
Лист
20
ObjExcel = null;
}
}
private void loadGrid1()
{
string pathToFile1 = "C:\\Users\\Александр\\Desktop\\огу\\ои\\практики\\ПЗ №3 +\\практика\\23.xlsx";
try
{
ObjExcel = new Microsoft.Office.Interop.Excel.Application();
ObjWorkBook = ObjExcel.Workbooks.Open(pathToFile1);
ObjWorkSheet = ObjExcel.ActiveSheet as Microsoft.Office.Interop.Excel.Worksheet;
Microsoft.Office.Interop.Excel.Range rg = null;
Int32 row = 1;
dataGridView2.Rows.Clear();
List<String> arr = new List<string>();
while (ObjWorkSheet.get_Range("a" + row, "a" + row).Value != null)
{
rg = ObjWorkSheet.get_Range("a" + row, "u" + row);
foreach (Microsoft.Office.Interop.Excel.Range item in rg)
{
try
{
arr.Add(item.Value.ToString().Trim());
}
catch { arr.Add(""); }
}
dataGridView2.Rows.Add(arr[0], arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7], arr[8], arr[9], arr[10], arr[11]/*, arr[12], arr[13],
arr[14], arr[15], arr[16], arr[17], arr[18], arr[19], arr[20]*/);
arr.Clear();
row++;
}
}
catch (Exception ex) { MessageBox.Show("Ошибка: " + ex.Message, "Ошибка при считывании excel файла", MessageBoxButtons.OK,
MessageBoxIcon.Error); }
{
ObjWorkBook.Close(false, "", null);
ObjExcel.Quit();
ObjWorkBook = null;
ObjWorkSheet = null;
ObjExcel = null;
}
for (int i = 0; i < 10; i++)
{
dataGridView2.Rows[i].Cells[1].Value = Math.Round(coeff[i], 2);
}
}
private void button3_Click(object sender, EventArgs e)
{
dataGridView3.Rows.Clear();
dataGridView3.Columns.Add("Column0", "Профессия");
dataGridView3.Columns.Add("Column1", name);
dataGridView3.Rows.Add();
dataGridView3.Rows[0].Cells[0].Value = "Менеджер";
dataGridView3.Rows.Add();
dataGridView3.Rows[1].Cells[0].Value = "Программист";
dataGridView3.Rows.Add();
dataGridView3.Rows[2].Cells[0].Value = "Водитель";
dataGridView3.Rows.Add();
dataGridView3.Rows[3].Cells[0].Value = "Секретарь";
dataGridView3.Rows.Add();
dataGridView3.Rows[4].Cells[0].Value = "Переводчик";
dataGridView3.Rows.Add();
int g = 0;
for (int i = 0; i < 5; i++)
{
for (g = 1; g < 2; g++)
{
for (int j = 0; j < 5; j++)
{
str.Add(Convert.ToDouble(dataGridView1.Rows[i].Cells[j + 1].Value) *
Convert.ToDouble(dataGridView2.Rows[j].Cells[g].Value));
}
dataGridView3.Rows[i].Cells[g].Value = str.Max().ToString();
str.Clear();
Лист
21
}
}
double[] mass = new double[5];
for (int i = 0; i < 5; i++)
{
mass[i] = Convert.ToDouble(dataGridView3.Rows[i].Cells[1].Value);
}
double maxVal = mass.Max();
int indexMax = Array.IndexOf(mass, maxVal);
textBox2.Text = Convert.ToString(dataGridView3.Rows[indexMax].Cells[0].Value);
}
}
}
Test.cs
using Microsoft.Office.Interop.Excel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test
{
public partial class Form2 : Form
{
public new string name;
public new string questionNum;
public new int age;
public double[] answers = new double[27];
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
public void QuestionsInit(int i)
{
if (i == 2)
label5.Text = "Я предпочту заниматься финансовыми операциями, а не, например, музыкой.";
if (i == 3)
label5.Text = "Невозможно точно рассчитать, сколько времени уйдет на дорогу до работы, по крайней мере, мне.";
if (i == 4)
label5.Text = "Я часто рискую.";
if (i == 5)
label5.Text = "Меня раздражает беспорядок.";
if (i == 6)
label5.Text = "Я охотно почитал(а) бы на досуге о последних достижениях в различных областях науки.";
if (i == 7)
label5.Text = "Записи, которые я делаю, не очень хорошо структурированы и организованы.";
if (i == 8)
label5.Text = "Я предпочитаю разумно распределять деньги, а не тратить все сразу.";
if (i == 9)
label5.Text = "У меня наблюдается, скорее, рабочий беспорядок на столе, чем расположение вещей по аккуратным
«стопочкам».";
if (i == 10)
label5.Text = "Меня привлекает работа, где необходимо действовать согласно инструкции или четко заданному алгоритму.";
if (i == 11)
label5.Text = "Если бы я что-то собирал(а), я бы постарался(ась) привести в порядок коллекцию, все разложить по папочкам и
полочкам.";
if (i == 12)
label5.Text = "Терпеть не могу наводить порядок и систематизировать что бы то ни было.";
if (i == 13)
label5.Text = "Мне нравится работать на компьютере – оформлять или просто набирать тексты, производить расчеты.";
if (i == 14)
label5.Text = "Прежде чем действовать, надо продумать все детали.";
if (i == 15)
label5.Text = "На мой взгляд, графики и таблицы – очень удобный и информативный способ предоставления информации.";
if (i == 16)
label5.Text = "Мне нравятся игры, в которых я могу точно рассчитать шансы на успех и сделать осторожный, но точный ход.";
Лист
22
if (i == 17)
label5.Text = "При изучении иностранного языка я предпочитаю начинать с грамматики, а не получать разговорный опыт без
знания грамматических основ.";
if (i == 18)
label5.Text = "Сталкиваясь с какой-либо проблемой, я пытаюсь всесторонне ее изучить (ознакомиться с соответствующей
литературой, поискать нужную информацию в интернете, поговорить со специалистами).";
if (i == 19)
label5.Text = "У меня есть ежедневник, в который я записываю важную информацию на несколько дней вперед.";
if (i == 20)
label5.Text = "Я с удовольствием смотрю новости политики и экономики.";
if (i == 21)
label5.Text = "Я доделываю работу в последний момент.";
if (i == 22)
label5.Text = "Взяв книгу, я всегда ставлю ее на место.";
if (i == 23)
label5.Text = "Когда я ложусь спать, то уже наверняка знаю, что буду делать завтра.";
if (i == 24)
label5.Text = "В своих словах и поступках я следую пословице «Семь раз отмерь, один – отрежь».";
if (i == 25)
label5.Text = "Перед ответственными делами я всегда составляю план их выполнения.";
if (i == 26)
label5.Text = "После вечеринки мытье посуды я откладываю до утра.";
if (i == 27)
label5.Text = "Я серьезно отношусь к своему здоровью.";
}
public void AnswersInit(int i)
{
if (radioButton3.Checked)
answers[i - 2] = 1;
if (radioButton4.Checked)
answers[i - 2] = 0.5;
if (radioButton5.Checked)
answers[i - 2] = 0;
}
public double[] Function(double[] arr)
{
double[] outarr = new double[10];
double result = 0;
Random rnd = new Random();
for(int i = 0; i < arr.Length; i++)
{
result += arr[i];
}
result = result / arr.Length;
for (int i = 0; i < outarr.Length; i++)
{
double gen = rnd.Next(0, 27);
gen = gen / 100;
outarr[i] = result + gen;
}
return outarr;
}
int i = 2;
private void button1_Click(object sender, EventArgs e)
{
age = Convert.ToInt32(textBox1.Text);
questionNum = "Вопрос: " + i + " из 27";
label4.Text = questionNum;
name = textBox2.Text;
if (i == 28)
{
this.Hide();
Form ifrm = new Form3(this.name, Function(answers));
ifrm.ShowDialog();
}
QuestionsInit(i);
AnswersInit(i);
i++;
}
}
}
Лист
23
Download