Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Цель создания экспертной системы.docx
Скачиваний:
66
Добавлен:
16.04.2015
Размер:
757.46 Кб
Скачать

4. Этап реализации

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

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

Одним из важных моментов реализации моей экспертной системы, будет создание модуля, в который я запишу функцию формулы Байеса, о которых я говорил ранее.

Public Function да(a, y)

Public Mas2(1 To 10) As Currency

да = (y * a) / (y * a + (1 - a) * (1 - y)) 'формула Байеса при ответе «Да»

End Function

Public Function нет(a, y)

нет = ((1 - y) * a) / ((1 - y) * a + (1 - a) * y) 'формула Байеса при ответе «Нет»

End Function

Теперь можно перейти к формам, созданным в экспертной системе. Пользователя приветствует начальная UserForm «Здравствуйте!» (рис. 1), которая служит для ввода фамилию, автоматически фиксируется на календаре дата прохождения тестирования, так же пользователь подтверждает начало своего сеанса обращения к ЭС. Данная форма является единственной, где пользователь должен ввести свои данные, во всех последующих случаях пользователю будет предложено выбирать из представленных вариантов.

Рисунок 1. UserForm1 «Приветствие!»

Код этой формы:

Public T1 As Single'задаем переменные

Public T2 As Single

Private Sub CommandButton1_Click()'нажимаем на кнопку "Старт"

Worksheets("Лист1").Activate' активируем рабочий лист

r = 1

Do Until IsEmpty(Cells(r, 1))

r = r + 1

Loop

Cells(r, 1).Value = TextBox1.Text' запись данных на рабочий лист

Cells(r, 2).Value = TextBox2.Text

Cells(r, 3).Value = Date

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

Me.Hide

UserForm2.Show

End Sub

Private Sub UserForm_Initialize()

T1 = Timer' начинает работать таймер

End Sub

После закрытия формы «Приветствие!», открывается форма «Тест» (рис. 2)

Рисунок.2 UserForm «Тест»

Данная форма содержит вопросы, на которые предлагается ответить либо «да», либо «нет».

Код данной формы:

Dim Mas1(1 To 10, 1 To 11) As Double, m, n As Byte' объявляю массив и две переменных

Private Sub CommandButton1_Click()' если нажимаем на кнопку «Да»

Worksheets("Лист1").Activate' активируется рабочий лист, в который изначально было запланировано записывать результаты ответов на вопросы

r = 1

Do Until IsEmpty(Cells(r, 4))

r = r + 1' переходит в следующую пустую ячейку

Loop

Cells(r, 4).Value = "да"' записывается в ячейку, что пользователь ответил «Да» на заданный вопрос

For x = 1 To 10

Mas2(x) = да(Mas1(x, 1), Mas1(x, 11)) ' вызывается функция которая считает вероятность по формуле Байеса для ответа «Нет»

Next x

Unload Me

UserForm4.Show

End Sub

Если пользователь отвечает на вопрос «Нет»:

Private Sub CommandButton2_Click()

Worksheets("Лист1").Activate 'активируется рабочий лист, в который изначально было запланировано записывать результаты ответов на вопросы

r = 1

Do Until IsEmpty(Cells(r, 4))

r = r + 1' переходит в следующую пустую ячейку

Loop

Cells(r, 4).Value = "нет"

For x = 1 To 10

Mas2(x) = нет(Mas1(x, 1), Mas1(x, 11)) ' вызывается функция которая считает вероятность по формуле Байеса для ответа «Да»

Next x

Unload Me

UserForm4.Show' открывается следующая форма

End Sub

Private Sub Label1_Click()

End Sub

Private Sub UserForm_Initialize()

Worksheets("Лист2").Activate'активируется рабочий лист на котором записаны вероятности при ответе «Да» на каждый вопрос для каждого исхода

For m = 1 To 10

For n = 1 To 11

Mas1(m, n) = Worksheets("Лист2").Cells(m + 1, n + 1)

Next n

Next m

End Sub

После того, как пользователь ответит честно на все вопросы, «Музыкальные жанры» делает рекомендацию прослушивания того или иного музыкального жанра в соответствии с вашими предпочтениями. Открывается UserForm «Результат» (рис.4) На этой UserForm будет выведен результат, а так же время прохождения ЭС.

Рисунок 4. UserForm «Результат»

Код для инициализации формы следующий:

Private Sub CommandButton1_Click()

Unload Me

UserForm14.Show

End Sub

Private Sub UserForm_Initialize()

T2 = Timer' остановка таймера

Worksheets("Лист1").Activate

For b = 1 To 10

If Cells(b, 17).Value = Cells(11, 17).Value Then' сравнивает результаты, находит тот, что равен максимуму

Label1.Caption = Cells(b, 16) ' выводит название максимального результата

End If

Next b

If Label1.Caption = "Apple iPhone 4S" Then

Label2.Caption = "не нуждается в описании"

ElseIf Label1.Caption = "HTC One S" Then

Label2.Caption = "Дизайн HTC One S просто сводит с ума, он прекрасен и внутри, и снаружи, и может гордиться самым тонким корпусом среди смартфонов."

ElseIf Label1.Caption = "Samsung Galaxy Ace Plus S7500" Then

Label2.Caption = "Яркий,надежный, красивый!!"

ElseIf Label1.Caption = "Sony Ericsson Xperia PLAY" Then

Label2.Caption = "замечательный смартфон, темы оформления, java игры, программы, картинки, видео, мелодии."

ElseIf Label1.Caption = "LG T375 Cookie Smart Dual " Then

Label2.Caption = "Мобильный телефон LG dual-SIM T375 Cookie Smart, несмотря на название, смартфоном не является, однако он вполне подойдет тем пользователям, которые не нуждаются в высокопроизводительном «комбайне», но заинтересованы в возможности одновременной работы с двумя операторами мобильной связи."

ElseIf Label1.Caption = "Nokia C5 " Then

Label2.Caption = "Для коммуникации может предложить: Web-браузер, HSDPA, стерео Bluetooth, и, конечно, USB-порт. Для любителей музыки есть аудио выход на 3.5 мм. Также стоит отметить, что он оснащен GPS-приемником, который позволит Вам не заблудиться в любом месте!"

ElseIf Label1.Caption = "Nokia Asha 303: QWERTY" Then

Label2.Caption = "Главной особенностью его является QWERTY-клавиатура, что позволяет с легкостью общаться."

ElseIf Label1.Caption = "Samsung E2222" Then

Label2.Caption = "2 симки, прост в использовании, Клавиатура, приложения, не плохие оригенальные мелодии,Звук громкий, Слышимость чёткая"

ElseIf Label1.Caption = "Nokia 101" Then

Label2.Caption = "Практичный, простой в управлении, надежный"

Else

Label1.Caption = "Fly DS103 "

Label2.Caption = "Малофункциональный, имеет две симкарты, практичный, легкийв обращении"

End If

Worksheets("Лист1").Activate

r = 1

Do Until IsEmpty(Cells(r, 14))

r = r + 1' перемещается в следующую пустую ячейку в столбце 14 на Лист1

Loop

Cells(r, 14).Value = Label1.Caption

TextBox1.Value = Round(T2 - UserForm1.T1) & " сек." ' считает разницу во времени, выводит округленный результат в секундах

UserForm13.TextBox1.Value = Round((T2 - UserForm1.T1)) & " сек."

End Sub