|
Приложение на Бейсике
|
|||
---|---|---|---|
#18+
Пожалуйста, помогите. Мы сами люди не местные, и мозгов на Бейсик нам бог не дал. Кто может, сделайте это чертово приложение, или ...или я не знаю, как я сдам курсовую... 3. ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ НА VISUAL BASIC Задание: Разработать приложение для расчета значения наращенной суммы платежа по кредиту по формуле сложных процентов при выплате процентов один раз в год. Построить график зависимости наращенной суммы (S) от срока платежа (n). Расчетная формула: S=P*(i+1)^n. Вводимые параметры: P – первоначальный размер кредита; i – проценты по кредиту; n – число лет наращения. Пример разработанного приложения Для выполнения данного задания была создана форма: Имена и типы используемых объектов управления: Text1 - объект типа TextBox (текстовое окно) для задания суммы кредита; Text2 - объект типа TextBox (текстовое окно) для задания процентной ставки; Text3 - объект типа TextBox (текстовое окно) для задания срока кредита; Text4 - объект типа TextBox (текстовое окно) для задания суммы кредита; Text5 - объект типа TextBox (текстовое окно) для задания процентной ставки; Text6 - объект типа TextBox (текстовое окно) для задания срока кредита; Text7 - объект типа TextBox (текстовое окно) для задания шага построения графика; Text8 - объект типа TextBox (текстовое окно) для вывода результатов расчета показателя; Frame1 - объект типа Frame (рамка) для группировки объектов, используемых для задания параметров расчета показателя ("Расчет показателя"); Frame2 - объект типа Frame (рамка) для группировки объектов, используемых для задания параметров графика ("Построение графика"); Command1 - объект типа CommandButton (командная кнопка) для активизации фрейма "Расчет показателя" (кнопка "Расчет показателя"); Command2 - объект типа CommandButton (командная кнопка) для активизации фрейма "Построение графика" (кнопка "Построение графика"); Command3 - объект типа CommandButton (командная кнопка) для вызова процедуры расчета показателя (кнопка "ОК"); Command4 - объект типа CommandButton (командная кнопка) кнопка "ОК", для вызова процедуры построения графика (кнопка "ОК"); Command5 - объект типа CommandButton (командная кнопка) для завершения работы проекта (кнопка "Выход"); Picture1 - объект типа PictureBox для вывода графика; Label1, Label2, Label3, Label4, Label5, Label6, Label7, Label8, Label9 – поясняющие метки; Label10 – метка для вывода наращенной суммы при построении графика. Форма работает по следующей логике: § при запуске программы на форме должны быть активными (доступными) три командные кнопки («Построение графика», «Расчет показателя» и «Выход»); § при нажатии кнопки «Расчет показателя» становится активным фрейм «расчет показателя»; § при нажатии кнопки «Построение графика» становится активным фрейм «Построение графика». § после активизации соответствующего фрейма все остальные элементы формы, кроме кнопки «Выход» становятся недоступными. § вывод результата расчета показателя производится в текстовое окно «Сумма платежа» после нажатия кнопки «ОК» во фрейме «расчет показателя»; § текстовое окно «Сумма платежа» недоступно для редактирования; § вывод графика производится в элемент PictureBox после нажатия кнопки «ОК» во фрейме «Построение графика»; § при повторном построении графика производится очистка элемента PictureBox от предыдущего построенного графика. При вводе данных в текстовые окна осуществляется проверка: § на непустоту данных (ввод всех необходимых данных для расчета во все окна ввода, при ошибке выводится сообщение); § на положительность вводимых данных и неравенство нулю (в случае ошибки производится очистка окна от введенных символов); § осуществляется проверка на ввод только числовых данных, в случае ошибки данные сбрасываются; Примечание: при выполнении индивидуальных заданий при разработке внешнего вида форм и логике их работы приветствуются собственные решения студентов, развивающие возможности рассматриваемого примера. Процедуры обработки событий Private Sub Form_Load() ‘При загрузке формы производится задание начального вида формы и задание недоступности фреймов. Picture1.Cls 'очистка PictureBox Label1.Enabled = False 'метка недоступна Label2.Enabled = False 'метка недоступна Label3.Enabled = False 'метка недоступна Label4.Enabled = False 'метка недоступна Label5.Enabled = False 'метка недоступна Label6.Enabled = False 'метка недоступна Label7.Enabled = False 'метка недоступна Label9.Caption = "" 'очистка текста метки Label10.Visible = False 'метка невидима Text1.Text = "" 'очистка текстовых окон Text2.Text = "" 'очистка текстовых окон Text3.Text = "" 'очистка текстовых окон Text4.Text = "" 'очистка текстовых окон Text5.Text = "" 'очистка текстовых окон Text6.Text = "" 'очистка текстовых окон Text7.Text = "" 'очистка текстовых окон Text8.Text = "" 'очистка текстовых окон Frame1.Enabled = False 'фрейм недоступен Frame2.Enabled = False 'фрейм недоступен End Sub Private Sub Command1_Click() ‘После нажатия кнопки «Расчет показателя» становится доступным фрейм «Расчет показателя», остальные элементы формы становятся недоступными. Frame1.Enabled = True 'фрейм доступен Frame2.Enabled = False 'фрейм недоступен Text1.SetFocus 'курсор переводится в текстовое окно Text1 Command1.Enabled = False 'командная кнопка не доступна Command2.Enabled = False 'командная кнопка не доступна Label1.Enabled = True 'метка доступна Label2.Enabled = True 'метка доступна Label3.Enabled = True 'метка доступна Label9.Caption = "" 'очистка текста метки Label10.Visible = False 'метка невидима End Sub Private Sub Text1_Change() ‘При вводе значений показателя в текстовом окне производится проверка вводимых данных на их положительность и тип (число). Для этого Ascii- код введенного символа сравнивается с Ascii- кодами цифр (от 48 до 57) и символа-разделителя (точки - Ascii- код 46). Эта проверка происходит при вводе каждого символа в текстовом окне (событие Change). ' Используются встроенные функции Len (string) – возвращает длину строки и Mid(string, start[, length]) – возвращает часть строки, начиная с позиции start длины length Dim i As Integer ' счетчик цикла Dim KeyAscii As Integer ' пераменная, сщдержащая код Ascii символа For i = 1 To Len(Text1.Text) ' для каждого симво ла в строке KeyAscii = Asc(Mid(Text1.Text, i, 1)) ' получим код ASCII это– го символа If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 46) Then ' если код не лежит в диапазоне кодов цифр или точки Text1.Text = "" ' очистить текстовое окно Exit Sub ' выход из процедуры End If Next End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) 'После нажатия кнопки «Enter» производится перевод курсора в следующее текстовое окно. If KeyAscii = 13 Then ' если нажата клавиша Enter Text2.SetFocus ' перевести курсор в текстовое ок но End If End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) 'После заполнения всех текстовых окон значениями и нажатия клавиши «Enter» курсор переводится на кнопку «ОК» фрейма. If KeyAscii = 13 Then ' если нажата клавиша Enter Command3.SetFocus ' перевести курсор на командную кнопку End If End Sub Private Sub Command3_Click() 'Производится проверка на заполненность текстовых окон (если окно незаполненно, то происходит выдача сообщения и курсор переводится в соответствующее текстовое окно) 'После проверки происходит вызов функции для расчета финансового показателя (в качестве параметров передаются значения текстовых окон) 'Результаты расчета передаются в текстовое окно «Сумма платежа» 'Оба фрейма становятся недоступными (доступ возможен к командным кнопкам «Построение графика», «Расчет показателя» и «Выход») Dim p As Single ' первоначальная сумма долга Dim i As Single ' ставка наращения Dim n As Integer ' срок ссуды If Text1.Text = "" Or Val(Text1.Text) = 0 Then ' если нулевые или пустые параметры Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") ' вывести сообщение Text1.SetFocus ' перевести курсор в текстовое ок но Exit Sub End If If Text2.Text = "" Or Val(Text2.Text) = 0 Then Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text2.SetFocus Exit Sub End If If Text3.Text = "" Or Val(Text3.Text) = 0 Then Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text3.SetFocus Exit Sub End If p = Val(Text1.Text) ' Val(string) – возвращает числовую составляющую стро– ки i = Val(Text2.Text) ' присвоение переменным зна– чений введенных параметров из n = Val(Text3.Text) ' текстовых окон Text8.Text = s(p, i, n) ' в текстовое окно пере дать результаты расчета показателя Frame1.Enabled = False 'фрейм недоступен Frame2.Enabled = False 'фрейм недоступен Command1.Enabled = True 'командная кнопка дос– тупна Command2.Enabled = True 'командная кнопка дос тупна Picture1.Cls 'очистка PictureBox Label1.Enabled = False 'метка недоступна Label2.Enabled = False 'метка недоступна Label3.Enabled = False 'метка недоступна Label4.Enabled = False 'метка недоступна Label5.Enabled = False 'метка недоступна Label6.Enabled = False 'метка недоступна Label7.Enabled = False 'метка недоступна End Sub Private Sub command4_Click() 'Производится проверка на заполненность текстовых окон (если окно незаполненно, то происходит выдача сообщения и курсор переводится в соответствующее текстовое окно). 'Очистка объекта PictureBox от предыдущего графика. 'Построение графика в объекте PictureBox (масштабирование объекта PictureBox, рисование координатных осей и графика). 'Рисование графика осуществляется в следующей последовательности: задается система координат формы, для чего находятся минимальное и максимальное значения функции на отрезке; рисуются координатные оси; рисуется жирная точка в начале графика; на отрезке определения функции с шагом, заданным пользователем, рисуется график. 'Фреймы делаются недоступными (доступ возможен только к командным кнопкам «Построение графика», «Расчет показателя» и «Выход»). Dim p As Single ' первоначальная сумма долга Dim i As Single ' ставка наращения Dim n As Integer ' срок ссуды Dim m As Single ' счетчик цикла Dim st As Single ' счетчик цикла Dim minfx As Single ' функции Dim maxfx As Single ' функции Dim minx As Single ' минимальное значение аргу– мента Dim maxx As Single ' максимальное значение ар гумента Dim step_t As Double ' шаг построения графика If Text4.Text = "" Or Val(Text4.Text) = 0 Then Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text4.SetFocus Exit Sub End If If Text5.Text = "" Or Val(Text5.Text) = 0 Then Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text5.SetFocus Exit Sub End If If Text6.Text = "" Or Val(Text6.Text) = 0 Then Call MsgBox ("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text6.SetFocus Exit Sub End If If Text7.Text = "" Or Val(Text7.Text) = 0 Then Call MsgBox("Не заданы параметры для расчета", vbExclamation, "Ошибка при задании параметров") Text7.SetFocus Exit Sub End If Picture1.Cls ' очистка элемента PictureBox p = Val(Form1.Text4.Text) ' Val(string) – возвра– щает числовую состав ляющую cтроки i = Val(Form1.Text5.Text) ' присвоение перемен– ным значений введен– ных параметров из n = Val(Form1.Text6.Text) ' текстовых окон ' зададим систему координат формы ' для чего найдем максимальное и минимальное значение принимаемое ' функций на отрезке ' начальное значение выбираем произвольное minfx = s(p, i, n) ' минимальное значение функции maxfx = s(p, i, n) ' максимальное значение функции minx = 0 ' минимальное значение аргумента maxx = 0 ' максимальное значение аргумента step_t = Val(Text7.Text) ' переменной присвоим значение шага построе– ния графика For st = 0 To n Step step_t ' вычислим минималь– ное и максимальное значения функции If minfx > s(p, i, st) Then ' вычислим минималь– ное значение функ– ции minfx = s(p, i, st) minx = st End If If maxfx < s(p, i, st) Then ' вычислим максимальное значение функции maxfx = s(p, i, st) ' maxx = st ' End If ' Next st 'задание пользовательской системы координат в окне изображения Picture1.Scale (0, maxfx)-(n, 0) 'установка мас– штаба Picture1.DrawWidth = 2 ' толщина точки равна 2 ' рисуем ось X Picture1.Line (0, 0 + 0.01 * maxfx)-(n, 0 + 0.01 * maxfx), RGB(0, 255, 0) ' при рисовании оси Х задается отступ от края объекта PictureBox на 0.01 * maxfx для лучшей видимости координатной оси ' рисуем ось Y Picture1.Line (0 + 0.01 * n, 0)-(0 + 0.01 * n, maxfx), RGB(0, 255, 0) ' при рисовании оси Y задается отступ от края объекта PictureBox на 0.01 * n для лучшей видимости координатной оси Picture1.DrawWidth = 1 ' толщина точки рав– на 1 Picture1.CurrentX = minx ' задание координат пера Picture1.CurrentY = s(p, i, minx) ' задание коор– динат пера Picture1.DrawWidth = 8 ' толщина точки равна 8 Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY) ' рисование точки в начале графика Picture1.DrawWidth = 1 ' толщина точки равна 1 Picture1.CurrentX = 0 ' задание координат пера Picture1.CurrentY = s(p, i, 0) ' задание ко– ординат пера ' рисование графика For m = 0 To n Step step_t Picture1.DrawWidth = 5 ' толщина точки равна 5 Picture1.PSet (Picture1.CurrentX, Picture1.CurrentY) ' рисование точек построения графика Picture1.DrawWidth = 1 ' толщина точки равна 1 Picture1.Line -(m, s(p, i, m)) ' рисование графи– ка Next m Label9.Caption = maxfx ' значение метки - сумма наращенного платежа Label10.Visible = True ' метка видима Frame1.Enabled = False ' фрейм недоступен Frame2.Enabled = False ' фрейм недоступен Command1.Enabled = True ' командная кнопка доступна Command2.Enabled = True ' командная кнопка доступна Label1.Enabled = False ' метка недоступна Label2.Enabled = False ' метка недоступна Label3.Enabled = False ' метка недоступна Label4.Enabled = False ' метка недоступна Label5.Enabled = False ' метка недоступна Label6.Enabled = False ' метка недоступна Label7.Enabled = False ' метка недоступна End Sub Private Sub Command5_Click() End ' завершение работы проекта при нажатии кнопки «Выход». End Sub Public Function s(ByVal p As Single, ByVal i As Single, ByVal n As Single) As Single ' Функция для расчета финансового показателя On Error GoTo err1 ' в случае ошибки - перейти на метку err1 s = p * (1 + i) ^ n ' функция наращения при сложных процентах On Error GoTo 0 Exit Function ' выйти из функции err1: 'обработка ошибки If Err.Number = 6 Then ' если ошибка - переполнение, вывести на экран сообщение Dim Msg As String Msg = "Ошибка при вычислении!" MsgBox Msg, , "Переполнение" Err.Clear ' очистка поля ошибки End If End ' завершение работы проекта End Function Работа приложения Расчет показателя: Построение графика: Пример окна сообщения: Вариант №10 Задание. Вычислить значение наращенной суммы платежа по формуле начисления при непрерывном наращении процентов и построить график зависимости наращенной суммы (S) от срока платежа (n). Расчетная формула: S=P*e^(n*d), где n – число периодов наращения; d – непрерывная ставка наращения; P – сумма кредита; S – наращенная сумма. Комментарий. Непрерывное наращение – наращение за бесконечно малые отрезки времени. Пример. Сумма, на которую начисляются проценты, равна 2 млн. руб., сила роста – 10%, срок – пять лет. Наращенная сумма составит S = 2.000.000 * e0,1*5= 3.297.744,25 руб. Непрерывное наращение по ставке δ = 10% равнозначно наращению за тот же срок сложных годовых процентов по ставке i=e0,1-1 =0,1051709, или 10,51709%. В самом деле, мы получим ту же наращенную сумму, применив эту ставку. S = 2.000.000(1 + 0.1051.709)5 = 3.297.744,25 руб. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2003, 12:43 |
|
Приложение на Бейсике
|
|||
---|---|---|---|
#18+
Обычно такие задачи не в форумах вывешиваются, а заказываются за деньги. Приложение будет стоить денег и потребует некоторого времени. Если есть желание - можем поторговаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2003, 11:54 |
|
|
start [/forum/moderation_log.php?user_name=Dmitry+Bychkov]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 495ms |
total: | 675ms |
0 / 0 |