Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
23
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

Используемые переменные

Реквизит

Имя

Назначение

Расходi

curРасход

Расход денег в текущем месяце, грн.

SОбщ

curSОбщ

Общий расход денег за планируемый период, грн.

SПред

curSПред

Предельная сумма денег, грн.

i

i

Номер текущего месяца

6.4.5. Интерфейс с пользователем

Среди исходных данных есть величина, общая для всей задачи – предельная сумма денег. Ее можно ввести с помощью текстового поля txtSПред на форме. Все остальные исходные данные (расходы по месяцам) вводятся с помощью окна ввода. Результат выводится в вогнутую область на форме, которая представляется надписью lblРезультат. Процесс ввода расхода денег по месяцам и вывода результатов начинается после щелчка на кнопке «Вычислить». Таким образом, задача решается с помощью формы, приведенной на рис. 6.9.

В области результата выводится сообщение "За первых i месяцев Вы предполагаете израсходовать SОбщ грн. Это больше предельной суммы на SОбщ - SПред" или сообщение "За год Вы предполагаете израсходовать SОбщ грн.". Здесь вместо i, SОбщ и SПред будут подставлены соответствующие значения.

Ввод данных по расходам за i-тый месяц производится с помощью окна ввода (рис. 6.10).

Рис. 6.9. Форма для Рис. 6.10.Окно для ввода

решения задачи расходов

6.4.6. Код программы

В процедуре обработки события "Щелчок на кнопке «Вычислить»" используются следующие операторы

Option Explicit

Private Sub cmdВычислить_Click()

Const KМес = 3 'Количество месяцев при планировании

Dim curРасход As Currency, _

curSОбщ As Currency, _

curSПред As Currency, _

i As Integer

'Ввод предельной суммы

curSПред = CCur(txtSПред)

curSОбщ = 0

i = 0

'Планирование расходов по месяцам

Do

i = i + 1

curРасход = CCur(InputBox("Введите расходы", _

Str(i) & "-й месяц"))

curSОбщ = curSОбщ + curРасход

Loop Until (i = KМес) Or (curSОбщ > curSПред)

'Подготовка и вывод результата

If curSОбщ > curSПред Then

lblРезультат = "За первых " & Str(i) _

& " месяцев Вы предполагаете израсходовать " _

& Format(curSОбщ, "0.00") & " грн." & vbCrLf _

& "Это больше предельной суммы на" _

& Format(curSОбщ - curSПред, "0.00") & " грн."

Else

lblРезультат = _

"За год Вы предполагаете израсходовать " _

& Format(curSОбщ, "0.00") & " грн."

End If

End Sub

6.4.7. Анализ проекта

В проектеиспользована константа КМес для определения количества месяцев, в течение которых будут производиться расходы планируемых финансов. Это позволяет быстро изменять период планирования. Например, при отладке программы достаточно взять 3 месяца, а для эксплуатации программы – 12 месяцев.

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

Для организации повторений по обработке планируемых расходов по месяцам использован цикл Do ...Loop, т.к. заранее не известно количество повторений. Оно определяется предельной суммой и величиной расходов за каждый месяц. Поскольку в планировании участвует, по крайней мере, хотя бы один месяц (т. е. операторы тела цикла должны выполниться не менее одного раза), то использована модификация цикла с нижним окончанием.

Условием выхода из цикла является или окончание планируемого периода (i = КМес), или превышение предельной суммы денег (curSОбщ  curSПред), или то и другое. Поэтому эти два условия объединены логической операцией Or. Так как при выполнении хотя бы одного из этих условий должно прекращаться дальнейшее планирование расходов (выход из цикла), то в операторе цикла используется ключевое слово Until.

Поскольку выход из цикла возможен по двум разным причинам, то и дальнейшие действия будут зависеть от соответствующей причины. Поэтому после оператора цикла используется оператор If, в котором проверяется, был ли выход из-за превышения предельной суммы. В случае положительного ответа формируется результат решения задачи. Ответ состоит из двух предложений. Чтобы второе предложение выводилось с начала новой строки, используется константа Visual Basic vbCrLf (переход в начало новой строки). В случае отрицательного ответа формируется другой результат.

В каждом из случаев сформированные строки ответов присваиваются надписи lblРезультат, что обеспечивает их вывод на форму в область, отведенную для результата.