Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ІСТУ_ПОСІБНИК.doc
Скачиваний:
94
Добавлен:
21.02.2016
Размер:
14.56 Mб
Скачать

18.3 Приклад рішення задачі у середовищі Microsoft Visual Basic

Задача. Розрахувати суму товару, суму знижки та суму товару зі знижкою. Якщо покупець придбав більше 3 вікон, то йому надається знижка у розмірі 5%. Якщо покупець придбав більше 2 дверей, то йому надається знижка у розмірі 10%. Додатково покупець може одержати знижку у розмірі 1% або 2% при наявності картки покупця, відповідно у будній або вихідний день. Спроектувати форму з елементами управління і створити програмний код для рішення задачі.

Методичні вказівки.

  1. На першому кроці рішення задачі надамо математичне формулювання:

Нехай – ціна (price),– кількість (number),– сума покупки (amount),– сума знижки (discount),– сума зі знижкою (sum). Тоді. Якщо покупець придбав більше 3 вікон, то йому надається знижка у розмірі 5%:. Якщо покупець придбав більше 2 дверей, то йому надається знижка у розмірі 10%:. Якщо умова не виконується, то знижка не надається:. Додатково покупець може одержати знижку у розмірі 1% або 2% при наявності картки покупця, відповідно у будній:або вихідний день:.

  1. На другому кроці рішення задачі створимо блок-схему

3. На третьому кроці рішення задачі створимо форму (візуальний етап). Кожному об’єкту форми надамо властивості і значення.

Об‘єкт

Властивість

Значення

Форма (Form)

(Name)

frm_example

BackColor

білий

Caption

Приклад

BorderStyle

1 – Fixed Single

Етикетка (Label)

(Name)

lbl_price

AutoSize

True

BackStyle

0 – Transparent

Caption

Ціна:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Ціна

Етикетка (Label)

(Name)

lbl_number

AutoSize

True

BackStyle

0 – Transparent

Caption

Кількість:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Кількість

Етикетка (Label)

(Name)

lbl_write_number

Aligment

1 – Right Justify

BackColor

білий

BorderStyle

1 – Fixed Single

Caption

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Кількість товару

Етикетка (Label)

(Name)

lbl_amount

Aligment

0 – Left Justify

BackStyle

0 – Transparent

Caption

Сума покупки:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Сума покупки

Етикетка (Label)

(Name)

lbl_discount

Aligment

0 – Left Justify

BackStyle

0 – Transparent

Caption

Сума знижки:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Сума знижки

Етикетка (Label)

(Name)

lbl_sum

Aligment

0 – Left Justify

BackStyle

0 – Transparent

Caption

Сума зі знижкою:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Сума зі знижкою

Текстове поле

(TextBox)

(Name)

txt_price

Aligment

1 – Right Justify

BackColor

білий

Font

Tahoma, 12

ForeColor

зелений

Text

ToolTipText

Введіть ціну

Горизонтальна лінійка

(HScrollBar)

(Name)

hsb_number

LargeChange

10

Max

100

Список

(ComboBox)

(Name)

cmb_day

BackColor

білий

Font

Tahoma, 12

ForeColor

зелений

List

буденний день

вихідний день

Text

ToolTipText

Виберіть день

Фрейм (Frame)

(Name)

fr_article

BackColor

білий

Caption

Товар:

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Виберіть товар

Перемикач (OptionButton)

(Name)

opt_window

BackColor

білий

Caption

Вікно

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Вікно

Перемикач (OptionButton)

(Name)

opt_door

BackColor

білий

Caption

Двері

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Двері

Прапорець (CheckBox)

(Name)

chk_card

BackColor

білий

Caption

Картка покупця

Font

Tahoma, 12

ForeColor

зелений

ToolTipText

Вибрати, якщо є

Командна кнопка

(CommandButton)

(Name)

cmd_calculation

BackColor

білий

Caption

Розрахунок

Font

Tahoma, 12

Style

1 – Graphical

ToolTipText

Натисніть для розрахунку

Командна кнопка

(CommandButton)

(Name)

cmd_flush

BackColor

білий

Caption

Очищення

Font

Tahoma, 12

Style

1 – Graphical

ToolTipText

Натисніть для очищення

Командна кнопка

(CommandButton)

(Name)

cmd_calculation

BackColor

білий

Caption

Вихід

Font

Tahoma, 12

Style

1 – Graphical

ToolTipText

Натисніть для виходу з програми

4. На четвертому кроці рішення задачі створимо програмний код.

‘Вимога обов'язкового оголошення змінних

Option Explicit

‘Оголошення змінних

Dim p, a, d, s As Currency, n As Byte

‘Програмна кнопка Розрахунок

Private Sub cmd_calculation_Click()

‘Змінній привласнюється значення текстового поля

p = Val(txt_price.Text)

‘Змінній привласнюється значення горизонтальної лінійки прокрутки

n = hsb_number.Value

‘Перевірка (чи всі дані введені)

‘Якщо хоча б одне поле не заповнене

If txt_price.Text = "" Or hsb_number.Value = 0 Or (opt_window.Value = False And opt_door.Value = False) Or cmb_day.Text = "" Then

‘Вікно з повідомленням про помилку

MsgBox "Помилка! Заповніть усі дані!", vbOKOnly + vbCritical, "Помилка!"

‘Інакше (початок розрахунку)

Else

‘Обчислення суми покупки (ціну помножити на кількість)

a = p * n

‘Виведення значення в етикетку

lbl_amount.Caption = "Сума покупки: " + Str(FormatNumber(a)) + " грн."

‘Початок перевірки (аналіз кількості товарів)

‘Якщо більше трьох вікон

If (opt_window.Value = True And n > 3) Then

‘Тоді обчислення суми знижки (5% від суми покупки)

d = a * 0.05

‘Інакше

‘Якщо більше двох дверей

ElseIf (opt_door.Value = True And n > 2) Then

‘Обчислення суми знижки (10% від суми покупки)

d = a * 0.1

‘Інакше

Else

‘Знижка не надається (сума знижки дорівнює нулю)

d = 0

‘Кінець перевірки (аналіз кількості товарів)

End If

‘Початок перевірки (день та картка покупця)

‘Якщо є картка покупця та буденний день

If (cmb_day.Text = "буденний день" And chk_card.Value = 1) Then

‘До суми знижки додається додатково 1% від суми покупки

d = d + a * 0.01

‘Якщо є картка покупця та вихідний день

ElseIf (cmb_day.Text = "вихідний день" And chk_card.Value = 1) Then

‘До суми знижки додається додатково 2% від суми покупки

d = d + a * 0.02

‘Кінець перевірки (день та картка покупця)

End If

‘Виведення значення в етикетку

lbl_discount.Caption = "Сума знижки: " + Str(FormatNumber(d)) + " грн."

‘Обчислення Суми зі знижкою (сума покупки мінус сума знижки)

s = a - d

‘Виведення значення в етикетку

lbl_sum.Caption = "Сума зі знижкою: " + Str(FormatNumber(s)) + " грн."

‘Кінець перевірки (чи всі дані введені)

End If

‘Кінець розрахунку

End Sub

‘Кнапка Вихід

Private Sub cmd_exit_Click()

‘Вікно з запитанням про вихід з програми

If MsgBox("Ви дійсно бажаєте вийти з програми?", vbYesNo + vbQuestion, "Вихід з програми") = vbYes Then End

End Sub

‘Кнопка Очищення

Private Sub cmd_flush_Click()

‘Очищення текстового поля

txt_price.Text = ""

‘Переміщення повзунка лінійки в початок

hsb_number.Value = 0

‘Очищення етикетки

lbl_write_number.Caption = ""

‘Очищення початкового значення списку

cmb_day.Text = ""

‘Відключення перемикача

opt_window.Value = False

opt_door.Value = False

‘Відключення прапорця

chk_card.Value = 0

‘Приведення етикеток до первинного вигляду

lbl_amount.Caption = "Сума покупки:"

lbl_discount.Caption = "Сума знижки:"

lbl_sum.Caption = "Сума зі знижкою:"

End Sub

‘Зміна повзунка лінійки прокрутки

Private Sub hsb_number_Change()

‘Змінній привласнюється значення повзунка

n = hsb_number.Value

‘Виведення значення в етикетку

lbl_write_number.Caption = Str(n)

End Sub

‘Прокрутка повзунка

Private Sub hsb_number_Scroll()

hsb_number_Change

End Sub

‘Аналіз введення даних

Private Sub txt_price_KeyPress(KeyAscii As Integer)

‘Початок перебору

Select Case KeyAscii

‘Десяткова крапка

Case 46

‘Заборона введення крапки, якщо текстове поле порожнє

If txt_price.Text = "" Then KeyAscii = 0

‘Заборона введення крапки, якщо вже одна крапка була введена

If InStr(1, txt_price.Text, ".") <> 0 Then KeyAscii = 0

‘Цифри від нуля до дев‘яти

Case 48 To 57

‘Заборона введення, якщо перший символ є нулем (можна ввести тільки крапку)

If txt_price.Text = "0" Then KeyAscii = 0

‘Спеціальні клавіши

Case 0, 8

‘Інші випадки

Case Else

‘Заборона введення

KeyAscii = 0

‘Вікно з повідомленням про помилку

MsgBox "Помилка! Введіть ціну!", vbOKOnly + vbCritical, "Помилка!"

‘Кінець перебору

End Select

End Sub

‘Блокування введення в полі списку

Private Sub cmb_day_KeyPress(KeyAscii As Integer)

KeyAscii = 0

End Sub

Для запуску програми на виконання використовується команда меню Run - Start.

У випадку виявлення помилок можна завершити виконання програми командою Run - End, внести необхідні виправлення в програму.

5. На п’ятому кроці рішення задачі необхідно виконати дії по збереженню програми.

Щоб зберегти проект на носіях потрібно виконати команду

File - Save Project або скористатися інструментом Save Project.

При зберіганні проекту на диск записується такі файли:

  • файл проекту (файл із розширенням VBP), у якому утримується інформація про проект;

  • файли форм (файл із розширенням FRM) з описом форм.

Щоб файл програми був готовий до виконання, використовується команда меню File - Make <ім'я проекту>. exe.

Для роздруку програми потрібно виконати команду File - Print, у вікні діалогу команди вибрати опцію Current Project (поточний проект), для друку форми включити прапорець Form Image, коду - прапорець Code.