«информатика»
Вид материала | Курсовая |
СодержаниеПроцедуры обработки событий (писание программного хода приложения) |
- Рабочая учебная программа по дисциплине «Информатика» Направление №230100 «Информатика, 91.73kb.
- Темы рефератов по курсу «Информатика», 10.55kb.
- Программа дисциплины Иностранный язык профессионального общения для направлений 080700., 259.96kb.
- Рабочая программа дисциплины: «Информатика с методикой преподавания» Для специальности:, 495.05kb.
- Рабочая программа «Основы микроэлектроники» для специальностей «Информатика и английский, 501.86kb.
- Учебно-методический комплекс по дисциплине б в дв. 01- цифровая обработка сигналов, 603.86kb.
- «Информатика», 1976.18kb.
- Учебно-методический комплекс по дисциплине педагогика направление подготовки, 1570.07kb.
- Программа пропедевтического курса «Информатика в играх и задачах», 125.46kb.
- Рабочая программа дисциплины для студентов магистратуры, обучающихся по направлению, 120.54kb.
Процедуры обработки событий (писание программного хода приложения)
Option Explicit
Dim p As Double ' сумма валюты
Dim i As Double 'ставка наращения для рублевой суммы
Dim n As Double 'срок депозита
Dim k0 As Double 'курс валюты на начало операции
Dim k1 As Double 'курс валюты на конец операции
________________________________________________________________________________
'Функция для расчета финансового показателя
Public Function s(ByVal p As Double, ByVal i As Double, ByVal n As Double, ByVal k0 As Double, ByVal k1 As Double) As Double
Const Msg As String = "Ошибка при вычислении показателя!"
'Функция для расчета финансового показателя
On Error GoTo err1 ' в случае ошибки, перейти на метку err1
s = p * k0 * (1 + n / 12 * i / 100) * (1 / k1) ' функция наращения суммы в валюте
On Error GoTo 0
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
__________________________________________________________________________________
Private Sub Form_Load()
'При загрузке формы производится задание начального вида формы и задание недоступности фреймов.
Picture1.Cls 'очистка PictureBox
Frame1.Enabled = False 'фрейм не доступен
Frame2.Enabled = False 'фрейм не доступен
Command6.Enabled = False ' коммандная кнопка не доступна
End Sub
__________________________________________________________________________________
Private Sub Command1_Click()
'после нажатия кнопки "Расчет показателя", становится доступным фрейм "Расчет показателя остальные элементы формы становятся недоступными.
Frame1.Enabled = True 'фрейм доступен
Frame2.Enabled = False 'фрейм недоступен
Command6.Enabled = True 'кнопка доступна
Text6.Text = "" 'очистка текстовых окон
Text1.SetFocus
End Sub
__________________________________________________________________________________
Private Sub Text1_KeyPress (KeyAscii As Integer) 'после нажатия клавиши «enter» происходит перемещение курсора в текстовое окно.
If KeyAscii = 13 Then ' если нажата клавиша «Enter»
Text2.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text2_KeyPress (KeyAscii As Integer)
'после нажатия клавиши «enter» происходит перемещение курсора в текстовое окно.
If KeyAscii = 13 Then ' если нажата клавиша «Enter»
Text3.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text3_KeyPress (KeyAscii As Integer)
'после нажатия клавиши "Enter"производится перевод курсора на командную кнопку OK.
If KeyAscii = 13 Then ' если нажата клавиша «Enter»
Text4.SetFocus 'перевести курсор в текстовое окно.
End If
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer) 'после нажатия клавиши "Enter"производится перевод курсора в текстовое окно.
If KeyAscii = 13 Then ' если нажата клавиша «Enter»
Text5.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
'после нажатия клавиши "Enter"производится перевод курсора в текстовое окно.
If KeyAscii = 13 Then ' если нажата клавиша «Enter»
Command2.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
__________________________________________________________________________________
Private Sub Command2_Click()
'Dim nChr As Long
'производится проверка на заполнение текстовых окон (если окно не заполнено, то происходит выдача сообщения и курсор переводится в соответствующее текстовое окно)
'проверка данных начата.
If Text1.Text = "" Then
MsgBox "Сумма валюты не задана.", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
If Not IsNumeric(Text1.Text) Then ' проверка на число.
MsgBox "Сумма валюты не - число.<" & Text1.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
If Val(Text1.Text) <= 0 Then
MsgBox "Сумма валюты должна быть положительной.", vbExclamation + vbOKOnly, " Проверка исходных данных."
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
If Text2.Text = "" Then
MsgBox "Процентная ставка не задана.", vbExclamation + vbOKOnly, " Проверка исходных данных."
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
If Not IsNumeric(Text2.Text) Then
MsgBox "Процентная ставка - не число.<" & Text2.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
If Val(Text2.Text) <= 0 Then
MsgBox "Процентная ставка должна быть положительной.", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text2.Text = ""
Text2.SetFocus
Exit Sub
End If
If Text3.Text = "" Then
MsgBox "срок депозита не задан.", vbExclamation + vbOKOnly, " Проверка исходных данных."
Text3.Text = ""
Text3.SetFocus
Exit Sub
End If
If Not IsNumeric(Text3.Text) Then
MsgBox "срок депозита – не число.<" & Text3.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text3.Text = ""
Text3.SetFocus
Exit Sub
End If
If Val(Text3.Text) <= 0 Then
MsgBox "Срок депозита должен быть положительным.", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text3.Text = ""
Text3.SetFocus
Exit Sub
End If
If Text4.Text = "" Then
MsgBox "Курс на начало периода не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text4.Text = ""
Text4.SetFocus
Exit Sub
End If
If Not IsNumeric(Text4.Text) Then
MsgBox "курс на начало периода – не число.<" & Text4.Text & ">", vbExclamation + vbOKOnly," Проверка исходных данных."
Text4.Text = ""
Text4.SetFocus
Exit Sub
End If
If Val(Text4.Text) <= 0 Then
MsgBox "Курс на начало периода должен быть положительным.", vbExclamation + vbOKOnly,
"Проверка исходных данных."
Text4.Text = ""
Text4.SetFocus
Exit Sub
End If
If Text5.Text = "" Then
MsgBox "курс на конец периода не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных."
Text5.Text = ""
Text5.SetFocus
Exit Sub
End If
If Not IsNumeric(Text5.Text) Then
MsgBox "Курс на конец периода – не число.<" & Text5.Text & ">", vbExclamation + vbOKOnly,
" Проверка исходных данных."
Text5.Text = ""
Text5.SetFocus
Exit Sub
End If
If Val(Text5.Text) <= 0 Then
MsgBox "Курс на конец периода должен быть положительным.", vbExclamation + vbOKOnly,
"Проверка исходных данных."
Text5.Text = ""
Text5.SetFocus
Exit Sub
End If
'проверка исходных данных закончена.
'После проверки происходит вызов функции для расчета финансового показателя (в качестве параметров передаются значения текстовых окон)
' Результаты расчета передаются в текстовое окно "сумма платежа"
' Все три фрейма становятся недоступными (доступ возможен к командным кнопкам «Построение графика», «Расчет показателя», «Выход»).
'Проверка закончена, получаем исходные данные для вычисления.
p = Val(Text1.Text) ' Val(string) – возвращает числовую составляющую строки
i = Val(Text2.Text) ' Присвоение переменным значений введенных параметров из
n = Val(Text3.Text) ' текстовых окон
k0 = Val(Text4.Text)
k1 = Val(Text5.Text)
Text6.Text = CStr(s(p, i, n, k0, k1))
' В текстовое окно передать значение результата.
Frame1.Enabled = False ' Фрейм 1 недоступен.
Frame2.Enabled = False ' Фрейм 2 доступен.
Command1.Enabled = True 'Командная кнопка доступна.
Command2.Enabled = True 'Командная кнопка доступна.
Picture1.Cls 'очистка PictureBox
End Sub
__________________________________________________________________________________
'кнопка Command3 используется для активизации рамки Frame2
Private Sub Command3_Click()
Frame1.Enabled = False 'фрейм недоступен
Frame2.Enabled = True 'фрейм доступен
Picture1.Cls 'очистка PictureBox
Command6.Enabled = True 'кнопка доступна
Text6.Text = "" 'очистка текстового окна
Text7.SetFocus
End Sub
__________________________________________________________________________________
Private Sub Text7_KeyPress(KeyAscii As Integer)
'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.
If KeyAscii = 13 Then ' ' Если нажата клавиша Enter
Text8.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text8_KeyPress(KeyAscii As Integer)
'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.
If KeyAscii = 13 Then ' Если нажата клавиша Enter
Text9.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text9_KeyPress(KeyAscii As Integer)
'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.
If KeyAscii = 13 Then ' Если нажата клавиша Enter
Text10.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text12_KeyPress(KeyAscii As Integer)
'после нажатия клавиши "Enter"производится перевод курсора на командную кнопку OK.
If KeyAscii = 13 Then ' Если нажата клавиша Enter
Command4.SetFocus ' перевести курсор на командную кнопку OK.
End If
End Sub
Private Sub Text10_KeyPress(KeyAscii As Integer)
'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.
If KeyAscii = 13 Then ' Если нажата клавиша Enter
Text11.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
Private Sub Text11_KeyPress(KeyAscii As Integer)
'После нажатия кнопки "Enter" производится перевод курсора в следующее текстовое окно.
If KeyAscii = 13 Then ' Если нажата клавиша Enter
Text12.SetFocus ' перевести курсор в текстовое окно
End If
End Sub
__________________________________________________________________________________
Private Sub Command4_Click() ' кнопка с именем Command4 используется для проверки
' введенных исходных данных для расчета и выполнения
' построения графика
Dim minfx As Double
Dim maxfx As Double
Dim minX As Double
Dim maxX As Double
Dim step_t As Double
Dim st As Double
Dim nChr As Long
'Проверка исходных данных начата.
If Text7.Text = "" Then
MsgBox "Сумма валюты не задана.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text7.SetFocus
Exit Sub
End If
If Not IsNumeric(Text7.Text) Then
MsgBox "Сумма валюты – не число.<" & Text7.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text7.Text = ""
Text7.SetFocus
Exit Sub
End If
If Val(Text7.Text) <= 0 Then
MsgBox "Сумма валюты должна быть положительной", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text7.Text = ""
Text7.SetFocus
Exit Sub
End If
If Text8.Text = "" Then
MsgBox "Прцентная ставка не задана.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text8.Text = ""
Text8.SetFocus
Exit Sub
End If
If Not IsNumeric(Text8.Text) Then
MsgBox "Процентная ставка – не число.<" & Text8.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text8.Text = ""
Text8.SetFocus
Exit Sub
End If
If Val(Text8.Text) <= 0 Then
MsgBox "Процентная ставка должна быть положительной.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text8.Text = ""
Text8.SetFocus
Exit Sub
End If
If Text9.Text = "" Then
MsgBox "Срок депозита не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text9.Text = ""
Text9.SetFocus
Exit Sub
End If
If Not IsNumeric(Text9.Text) Then
MsgBox "Срок депозита – не число.<" & Text9.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text9.Text = ""
Text9.SetFocus
Exit Sub
End If
If Val(Text9.Text) <= 0 Then
MsgBox "Срок депозита должен быть положительным.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text9.Text = ""
Text9.SetFocus
Exit Sub
End If
If Text10.Text = "" Then
MsgBox "курс на начало периода не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text10.Text = ""
Text10.SetFocus
Exit Sub
End If
If Not IsNumeric(Text10.Text) Then
MsgBox "Курс на начало периода – не число.<" & Text10.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text10.Text = ""
Text10.SetFocus
Exit Sub
End If
If Val(Text10.Text) <= 0 Then
MsgBox "курс на начало периода должен быть положительным.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text10.Text = ""
Text10.SetFocus
Exit Sub
End If
If Text11.Text = "" Then
MsgBox "Курс на конец периода не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text11.Text = ""
Text11.SetFocus
Exit Sub
End If
If Not IsNumeric(Text11.Text) Then
MsgBox "курс на конец периода – не число.<" & Text11.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text11.Text = ""
Text11.SetFocus
Exit Sub
End If
If Val(Text11.Text) <= 0 Then
MsgBox "курс на конец периода должен быть положительным.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text11.Text = ""
Text11.SetFocus
Exit Sub
End If
If Text12.Text = "" Then
MsgBox "Шаг графика не задан.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text12.Text = ""
Text12.SetFocus
Exit Sub
End If
If Not IsNumeric(Text12.Text) Then
MsgBox "Шаг графика –не число.<" & Text12.Text & ">", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text12.Text = ""
Text12.SetFocus
Exit Sub
End If
If Val(Text12.Text) <= 0 Then
MsgBox "Шаг графика должен быть положительным.", vbExclamation + vbOKOnly, "Проверка исходных данных"
Text12.Text = ""
Text12.SetFocus
Exit Sub
End If
'проверка исходных данных закончена.
Picture1.Cls ' очистка элемента PictureBox
p = Val(Text7.Text) ' Val(string) - возвращает числовую составляющую строки
i = Val(Text8.Text) ' присвоение переменным значений
n = Val(Text9.Text) ' введенных параметров из текстовых окон.
k0 = Val(Text10.Text)
k1 = Val(Text11.Text)
' зададим систему координат формы
' для чего найдем максимальное и минимальное значение принимаемое
' функцией на отрезке
' начальное значение выбираем произвольное
minfx = s(p, i, 0, k0, k1) ' минимальное значение функции (до их вычисления)
maxfx = s(p, i, 0, k0, k1) ' максимальное значение функции (до их вычисления)
minX = 0 ' минимальное значение аргумента (до их вычисления)
maxX = 0 ' максимальное значение аргумента (до их вычисления)
step_t = Val(Text12.Text) 'переменной присвоим значение шага построения графика
For st = 0 To n Step step_t ' вычислим минимальное и максимальное значения функции
If minfx > s(p, i, st, k0, k1) Then ' вычислим максимальное значение функции
minfx = s(p, i, st, k0, k1)
minX = st
End If
If maxfx < s(p, i, st, k0, k1) Then ' вычислим максимальное значение функции
maxfx = s(p, i, st, k0, k1) '
maxX = st '
End If '
Next st
' дополнительно проверим временной конец шкалы T на возможный Min и Max
' ,т.к.можем не попасть в него на отрезке [0 , N ] ,если не укладывается целое число шагов.
If minfx > s(p, i, n, k0, k1) Then ' проверим минимальное значение функции
minfx = s(p, i, n, k0, k1)
minX = n
End If
If maxfx < s(p, i, n, k0, k1) Then ' проверим максимальное значение функции
maxfx = s(p, i, n, k0, k1) '
maxX = n '
End If '
'задание пользовательской системы координат в окне отображения
On Error GoTo e1 ' проверяем укладывается ли число в диапазон типа Single
' т.к. "scale " работает с числами типа single
maxfx = CSng(maxfx)
On Error GoTo 0
Picture1.Scale (0, maxfx)-(n, 0) 'установка масштаба.
Picture1.DrawWidth = 6 ' толщина точки равна 6.
' рисуем ось X.
Picture1.Line (0, 0 + 0.01 * maxfx)-(n, 0 + 0.01 * maxfx), RGB(255, 0, 0)
' при рисовании осиX задается отступ на 0.01 * maxfx для лучшей видимости координатной оси
'рисуем ось Y.
Picture1.Line (0 + 0.01 * n, 0)-(0 + 0.01 * n, maxfx), RGB(255, 0, 0)
' при рисовании оси Y задается отступ от края объекта PictureBox на 0.01 * n для лучшей видимости координатной оси.
'отмечаем точку MIN
Picture1.DrawWidth = 1 ' толщина точки равна 1
Picture1.CurrentX = minX ' задание координат пера.
Picture1.CurrentY = s(p, i, minX, k0, k1) ' задание координат пера.
'отмечаем точку MAX
Picture1.DrawWidth = 8 ' толщина точки равна 8
Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY) ' рисование точки в начале графика.
Picture1.DrawWidth = 1 ' толщина точки равна 1
Picture1.CurrentX = 0 ' задание координат пера.
Picture1.CurrentY = s(p, i, 0, k0, k1) ' задание координат пера.
' рисование ломаной линии графика.
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, k0, k1)) ' рисование графика
Next st
'дорисовываем график до конечной точки (если интервал «шаг графика» укладывается на целое число раз)
Picture1.Line -(n, s(p, i, n, k0, k1)) ' рисование графика
Picture1.DrawWidth = 5
Picture1.PSet (n, s(p, i, n, k0, k1))
' выводим максимальное значение функции на экран
Label12.Caption = maxfx ' значение метки – сумма наращенного платежа
Label12.Visible = True ' метка видима
Frame1.Enabled = False ' фрейм недоступен
Frame2.Enabled = False ' фрейм недоступен
Command1.Enabled = True ' командная кнопка доступна
Command3.Enabled = True ' командная кнопка доступна
Exit Sub
e1:
MsgBox "Переполнение в координатах графика", , ""
End Sub
__________________________________________________________________________________
_Private Sub Command6_Click()
Picture1.Cls 'очистка PictureBox
Text1.Text = "" 'очистка текстовых окон
Text2.Text = "" 'очистка текстовых окон
Text3.Text = "" 'очистка текстовых окон
Text4.Text = "" 'очистка текстовых окон
Text5.Text = "" 'очистка текстовых окон
Text6.Text = "" 'очистка текстовых окон
Text7.Text = "" 'очистка текстовых окон
Text8.Text = "" 'очистка текстовых окон
Text9.Text = "" 'очистка текстовых окон
Text10.Text = "" 'очистка текстовых окон
Text11.Text = "" 'очистка текстовых окон
Text12.Text = "" 'очистка текстовых окон
Label12.Caption = "" ' очистка текста метки
End Sub
___________________________________________________________________________
Private Sub Command5_Click()
End ' завершение работы проекта при нажатии клавиши «выход».
End Sub