Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Широкова.doc
Скачиваний:
17
Добавлен:
24.03.2016
Размер:
11.21 Mб
Скачать

Процедуры обработки событий (описание программного кода приложения)

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

Option Explicit

Dim p As Double ' первоначальная сумма

Dim i As Double ' ставка наращения

Dim n As Double ' срок ссуды

‘ Функция для расчета значений финансового показателя

Public Function s(ByVal p As Double, ByVal i As Double, _

ByVal n As Double) As Double

Const Msg As String = "Ошибка при вычислении показателя !"

' Функция для расчета финансового показателя

On Error GoTo err1 ' в случае ошибки - перейти на метку err1

s = p * (1 + i) ^ n ' функция наращения при

‘сложных процентах

On Error GoTo 0

Exit Function ' выйти из функции

err1: 'обработка ошибки

If Err.Number = 6 Then ' если ошибка - переполнение,

‘вывести на экран сообщение

MsgBox Msg, , "Переполнение"

Err.Clear ' очистка поля ошибки

Else

MsgBox Msg & Err.Number

Err.Clear

End If

' очистка формы

Picture1.Cls 'очистка PictureBox

Frame1.Enabled = False 'фрейм недоступен

Frame2.Enabled = False 'фрейм недоступен

End Function

‘кнопка с именем Command1 используется для

‘активизации рамки frame1

‘и подготовки формы к вводу исходных данных

‘для расчета показателя

Private Sub Command1_Click()

'После нажатия кнопки "Расчет показателя" становится

‘доступным фрейм "Расчет показателя",

‘остальные элементы формы становятся недоступными.

Frame1.Enabled = True 'фрейм доступен

Frame2.Enabled = False 'фрейм недоступен

mText1.SetFocus 'курсор переводится в

‘текстовое окно Text1

mText8.Text = "" 'очистка текста строки результата

End Sub

‘кнопка с именем Command2 используется

‘для активизации рамки frame2

‘и подготовки формы к вводу исходных данных

‘для построения графика

Private Sub Command2_Click()

'После нажатия кнопки "Расчет показателя" становится

‘доступным фрейм "Расчет показателя",

‘остальные элементы формы становятся недоступными.

Frame1.Enabled = False 'фрейм доступен

Frame2.Enabled = True 'фрейм недоступен

mText4.SetFocus 'курсор переводится в текстовое

‘окно Text1

mText8.Text = "" 'очистка текста строки результата

End Sub

‘кнопка с именем Command3 используется для

‘проверки введенных исходных данных

‘ для расчета и выполнения расчета показателя

Private Sub Command3_Click()

'проверка проверка исходных данных

'Проверка на пустоту

If mText1.Text = "" Then

MsgBox "Сумма кредита не задана.", vbExclamation + _

vbOKOnly, "Проверка исходных данных"

mText1.SetFocus

Exit Sub

End If

' проверка на число

If Not IsNumeric(mText1.Text) Then

MsgBox "Сумма кредита - не число.<" & mText1.Text & ">", _

vbExclamation + vbOKOnly, "Проверка исходных данных"

mText1.SetFocus

Exit Sub

End If

p = CDbl(mText1.Text)

' проверка на допустимость значения параметра

If p < 0 Then

MsgBox "Сумма кредита - должна быть неотрицательна .", _

vbExclamation + vbOKOnly, "Проверка исходных данных"

mText1.SetFocus

Exit Sub

End If

‘аналогично организуется проверка задаваемых пользователем

‘значений для других показателей mText2.Text,mText3.Text

'Проверка исходных данных закончена

mText8.Text = CStr(s(p, i, n)) ' в текстовое окно передать

‘результаты расчета показателя

End Sub

‘кнопка с именем Command4 используется для проверки

‘введенных исходных данных для расчета и выполнения

‘построения графика

Private Sub Command4_Click()

Dim maxfx As Double

Dim maxX As Double

Dim step_t As Double

Dim st As Double

'проверка исходных данных

If mText4.Text = "" Then

MsgBox "Сумма кредита не задана.", vbExclamation + vbOKOnly, _

"Проверка исходных данных"

mText4.SetFocus

Exit Sub

End If

If Not IsNumeric(mText4.Text) Then

MsgBox "Сумма кредита - не число.<" & mText4.Text & _

">", vbExclamation + vbOKOnly, "Проверка исходных данных"

mText4.SetFocus

Exit Sub

End If

p = CDbl(mText4.Text)

‘ аналогично организуется проверка для других параметров

‘расчета mText5.Text, mText6.Text

If Not IsNumeric(mText7.Text) Then

MsgBox "Шаг графика - не число.<" & mText7.Text & _

">", vbExclamation + vbOKOnly, "Проверка исходных данных"

mText7.SetFocus

Exit Sub

End If

step_t = CDbl(mText7.Text)

'Проверка исходных данных закончена

Picture1.Cls ' очистка элемента PictureBox

'зададим систему координат формы

'для чего найдем максимальное значение принимаемое

'функций на отрезке

' начальное значение выбираем произвольное

maxfx = s(p, i, 0) ' максимальное значение функции

‘ (до их вычисления)

For st = 0 To n Step step_t ' вычислим максимальное

‘значения функции

If maxfx < s(p, i, st) Then ' вычислим максимальное

‘значение функции

maxfx = s(p, i, st) '

maxx=st

End If '

Next st

'задание пользовательской системы координат в окне изображения

'проверяем на принадлежность диапазону значений

'0 и 1.401298E-45 to 3.402823E38

If (maxfx >= 1.401298E-45 And maxfx <= 3.402823E+38) Or _

maxfx = 0 Then

'все в порядке

maxfx = CSng(maxfx)

Else

MsgBox "Значение максимума функции не принадлежит” & _

“ допустимому диапазону!" & maxfx, vbCritical, ""

Exit Sub

End If

'создание системы координат

Picture1.Scale (CSng(0), CSng(maxfx))-(CSng(n), CSng(0))

' Рисуем оси координат

'устанавливаем толщину линии 6

Picture1.DrawWidth = 6 ' толщина точки равна 6

' рисуем ось X

Picture1.Line (0, 0)-(n, 0), RGB(0, 255, 0)

' рисуем ось Y

Picture1.Line (0, 0)-(0, maxfx), RGB(0, 255, 0)

'Устанавливаем толщину линии и координаты начала рисования ломаной линии

Picture1.DrawWidth = 1 ' толщина точки равна 1

Picture1.CurrentX = 0 ' задание координат пера

Picture1.CurrentY = s(p, i, 0) ' задание координат пера

' рисование ломаной линии графика

For st = 0 To n Step step_t

Picture1.DrawWidth = 5 ' толщина точки равна 5

' рисование точек построения графика

Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY)

Picture1.DrawWidth = 1 ' толщина точки равна 1

Picture1.Line -(st, s(p, i, st)) ' рисование графика

Next st

' дорисовываем график до конечной точки ( если интервал "шаг по

‘ строения" укладывается не целое число раз

Picture1.Line -(n, s(p, i, n)) ' рисование графика

' выводим максимальное значение функции на экран

mLabel10.Caption = s(p, i, maxX) ' значение метки –

‘сумма наращенного платежа

mLabel10.Visible = True ' метка видима

End Sub

'При загрузке формы обе рамки становятся недоступными.

Private Sub Form_Load()

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

Frame1.Enabled = False 'фрейм недоступен

Frame2.Enabled = False 'фрейм недоступен

End Sub

Private Sub mText1_KeyPress(KeyAscii As Integer)

'После нажатия кнопки "Enter" производится перевод курсора в ‘следующее текстовое окно.

If KeyAscii = 13 Then ' если нажата клавиша Enter

mText2.SetFocus ' перевести курсор в текстовое окно

End If

End Sub

Private Sub mText2_KeyPress(KeyAscii As Integer)

'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.

If KeyAscii = 13 Then ' если нажата клавиша Enter

mText3.SetFocus ' перевести курсор в текстовое окно

End If

End Sub

Процедуры обработки событий keyPress для элементов управления mtext3,mtext4,mtext5,mtext6,mtext7 аналогичны mText2_KeyPress.