|
||||||||||||||||||||||
Лабораторные работы по Visual BasicОкончание. Начало см. в № 23/2008. В прошлом номере вниманию коллег была предложена одна лабораторная работа, включающая две программы: “Счастливый номер” и “Таблица умножения”. В этой публикации будут представлены еще четыре работы: Лабораторная работа № 1. Программа “Счастливый номер”. Программа “Таблица умножения”. Лабораторная работа № 2. Программа “Вычисление НДС”. Лабораторная работа № 3. Программа “Времена года”. Лабораторная работа № 4. Программа “Подарки On-line”. Лабораторная работа № 5. Программа “Угадай-ка”. Лабораторная работа № 2. Программа “Вычисление НДС”Задание: разработать программу, по которой по введенным значениям* суммы и процентной ставки налога выводится величина НДС (налога на добавленную стоимость) и сумма без налога (см. рис. 2.1). Если товар не облагается налогом, то процентную ставку налога принять равной нулю.
Рис. 2.1 Указания по выполнению 1. Изменить заголовок формы на Вычисление НДС. 2. Разместить на форме необходимые объекты. Значения свойств объектов установить в соответствии с таблицей (значения свойства Font задать по своему усмотрению): см. табл. на с. 23. 3. Включить проверку переменных (Option Explicit). 4. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Выход” на завершение программы и сделать ее кнопкой отмены. 5. Запрограммировать процедуру обработки события “Щелчок на кнопке Очистить”: 1) все текстовые поля в рамке Стоимость должны быть очищены; 2) включается флажок Облагается налогом (значение свойства Value равно 1); 3) курсор переводится в текстовое окно для суммы (метод SetFocus). Соответствующая процедура: Private Sub CmdClear_Click() 'Текстовые поля очищаются TxtSum.Text = "" TxtNDS.Text = "" TxtNewSum.Text = "" 'Включается флажок Chk.Value = 1 'Курсор устанавливается в текстовое поле Сумма TxtSum.SetFocus End Sub 6. Запрограммировать процедуру обработки события “Щелчок на кнопке Вычислить”. Private Sub CmdNum_Click() Dim S As Currency, N As Currency, SN As Currency 'Вычисления S = Val(TxtSum.Text) If Chk.Value = 1 Then N = S * Val(TxtNDS13.Text) / 100 Else N = 0 SN = S – N 'Вывод на форму TxtSum.Text = Format(S, "currency") TxtNDS.Text = Format(N, "currency") TxtNewSum.Text = Format(SN, "currency") End Sub Примечания 1. Поскольку в текстовое поле для суммы могут быть ошибочно введены не только цифры, но и другие символы, то, прежде чем использовать значение этого поля в вычислениях, содержимое поля переводится в число (функция Val). 2. Результаты вычислений — вещественные числа с несколькими знаками после запятой. Однако в действительности денежные суммы вычисляются с точностью до сотых (копеек). Поэтому для вывода исходной суммы, НДС и суммы без НДС используется денежный формат (функция Format и аргумент "currency"). Лабораторная работа № 3. Программа “Времена года”Задание: разработать программу, по которой в зависимости от выбранного положения переключателя (“Зима”, “Весна”, “Лето”, “Осень”) показывается изображение, соответствующее этому времени года (см. рис. 3.1). Указания по выполнению 1. Изменить заголовок формы на Времена года. 2. Разместить на форме необходимые объекты. Значения свойств объектов установить в соответствии с таблицей. 3. Включить проверку переменных (Option Explicit). 4. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Выход” на завершение программы и сделать ее кнопкой отмены. 5. Для каждого переключателя запрограммировать процедуры обработки события “Щелчок на переключателе”. Как указано в задании, при выборе того или иного переключателя должно показываться соответствующее изображение. Например, для переключателя с надписью Зима (OptWinter) в поле рисунка должен загружаться графический файл, например, winter.jpg пку, что и сам проект. В этом случае при загрузке файла вместо полног(свойство Picture и функция LoadPicture). Поскольку расположение папки с проектом может меняться, то рекомендуется файлы с рисунками записывать в ту же пао имени файла указывается путь к файлу с приложением (стандартное значение App.Path) и через символ “\” — имя файла c рисунком. После этого надо рисунок сделать видимым (свойство Visible): Private Sub OptWinter_Click() Img.Picture = LoadPicture(App.Path & "\winter.jpg") Img.Visible = True End Sub Дополнительное задание Добавить флажок, при включении которого в дополнительной рамке появляются названия месяцев, относящиеся к выбранному времени года (см. рис. 3.2).
Рис. 3.2 Указания по выполнению 1. Разместить на форме необходимые объекты. Значения свойств объектов установить в соответствии с таблицей вверху. 2. Создать процедуру Month, в которой проверяется, включен ли флажок; если да (значение свойства Value равно 1), то в зависимости от того, где “стоит” переключатель, выводятся названия месяцев; если флажок не включен (значение равно 0), то надписи очищаются: Private Sub Month() If Chk.Value = 1 Then If OptWinter.Value Then Lbl1.Caption = "Декабрь" Lbl2.Caption = "Январь" Lbl3.Caption = "Февраль" End If If OptSpring.Value Then Lbl1.Caption = "Март" Lbl2.Caption = "Апрель" Lbl3.Caption = "Май" End If If OptSummer.Value Then Lbl1.Caption = "Июнь" Lbl2.Caption = "Июль" Lbl3 = "Август" End If If OptAutumn.Value Then Lbl1.Caption = "Сентябрь" Lbl2.Caption = "Октябрь" Lbl3.Caption = "Ноябрь" End If Else Lbl1.Caption = "": Lbl2.Caption = "" Lbl3.Caption = "" End If End Sub 3. Запрограммировать процедуру обработки события “Включение флажка”, которая позволяла бы для выбранного переключателя выводить названия месяцев. Для этого нужно вызвать процедуру Month: Private Sub Chk_Click() Call Month End Sub 4. Отредактировать процедуры обработки щелчков мышью по переключателям таким образом, чтобы при выборе времени года на надписях Lbl1, Lbl2, Lbl3 появлялись соответствующие названия месяцев. Например, для зимы: Private Sub OptWinter_Click() Img.Picture = LoadPicture (App.Path & "\winter.jpg") Img.Visible = True Call Month End Sub Задание для самостоятельной работы Разработать программу “Каталог”, в которой в зависимости от выбранного положения переключателя (“Компьютер”, “Монитор”, “Принтер”, “Сканер”) показывается соответствующее изображение (см. рис. 3.3). На форме предусмотреть флажок Цена, при выборе которого в специально отведенном поле указывается цена товара (например, 32 000 для компьютера); если флажок отключен, то поле очищается. В начале работы программы все переключатели и флажок выключены, рисунок — произвольный (см. рис. 3.4). Рис. 3.3. Приложение в работе
Рис. 3.4 Лабораторная работа № 4. Программа “Подарки On-line”Задание: разработать программу, которая обеспечивает формирование набора товаров из предлагаемого списка, подсчет общей стоимости набора и отправку заказа (см. рис. 4.1). Рис. 4.1 Комментарии к заданию 1. В комбинированном поле с надписью Кому выбирается одно из двух значений: Для женщин, Для мужчин. Эти значения заполняются при активации формы; значение по умолчанию — Для женщин. 2. В зависимости от выбранной категории в указанном поле предлагается список имеющихся подарков в список с надписью Подарки. 3. При выборе того или иного пункта в списке подарков в поле рисунка появляется изображение подарка, а в поле Цена — его цена в рублях. Для хранения цен необходимо использовать массивы: W (подарки для женщин) и M (для мужчин). 4. При нажатии на кнопки с надписями Добавить/Удалить выбранный подарок добавляется /удаляется в список (объект ListBox) справа, а сумма увеличивается/уменьшается на стоимость подарка. При щелчке на кнопке Очистить указанный список очищается. 5. При щелчке на кнопке с надписью Купить должно появляться окно сообщений с заголовком Спасибо и текстом Ваш заказ отправлен на обработку. Спасибо за покупку. Примечание. На рис. 4.1 выбрана категория подарков Для женщин, подарки Брошь и Колье добавлены в список покупок, показано изображение колье. Указания по выполнению 1. Изменить заголовок формы. 2. Разместить на форме необходимые объекты. Значения свойств объектов установить в соответствии с таблицей. Значение свойства Font объектов (кроме надписи в верхней части формы) установить следующим: шрифт Tahoma, размер 12 (для кнопок — размер 10). 3. Включить проверку переменных (Option Explicit). 4. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Выход” на завершение программы и сделать ее кнопкой отмены. 5. Предусмотреть заполнение комбинированного поля CboSelect (использовать метод AddItem) при активации формы (метод Activate): 1) перейти в окно программного кода; 2) в раскрывающихся списках Object (Объект) и Procedure (Процедура) в верхней части окна выбрать Form и Activate соответственно — появится “заготовка” для написания процедуры; 3) записать программный код, по которому заполняется список элементов комбинированного поля CboSelect, после чего устанавливается значение Для женщин (порядковый номер 0) по умолчанию и для него формируется список подарков (вызывается процедура CboSelect_Click): Private Sub Form_Activate() 'Заполняем список CboSelect.AddItem "Для женщин" CboSelect.AddItem "Для мужчин" 'Значение по умолчанию CboSelect.Text = CboSelect.List(0) 'Выводим список подарков Call CboSelect_Click End Sub 6. Записать процедуру CboSelect_Click, с помощью которой в зависимости от выбранной категории в комбинированном поле с надписью Кому заполняется значениями список List1 и одновременно ценами — соответствующий массив (W или M). Принять следующие виды подарков и цены: для женщин: “Брошь” (5700), “Колье” (2550), “Сумка” (1700), “Букет” (930); для мужчин: “Портмоне” (420), “Запонки” (2550), “Трубка” (640). Поскольку списки для разных категорий различные, необходимо при каждом обращении к списку List1 очищать его (метод Clear): Sub CboSelect_Click() List1.Clear If CboSelect.Text = "Для женщин" Then List1.AddItem "Брошь" List1.AddItem "Колье" List1.AddItem "Сумка" List1.AddItem "Букет" W(0) = 5700 W(1) = 2550 W(2) = 1700 W(3) = 930 End If If CboSelect.Text = "Для мужчин" Then List1.AddItem "Портмоне" List1.AddItem "Запонки" List1.AddItem "Трубка" M(0) = 420 M(1) = 2550 M(2) = 640 End If End Sub Примечание. Массивы W и M должны быть описаны как глобальные в разделе General Declarations: Dim W(100) As Currency, M(100) As Currency 7. Записать программный код, благодаря которому при выборе того или иного пункта в списке подарков в поле рисунка появляется изображение подарка, а в поле (надписи) Цена — цена подарка. 7.1. Цена подарка определяется следующим образом. Надо в зависимости от выбранной категории (значение комбинированного свойства Text поля CboSelect) обратиться к массиву W или M, взять значение элемента массива с индексом List1.ListIndex (номер строки — значение свойства ListIndex — в списке List1) и занести его в надпись LblNum, т.е. If CboSelect.Text = "Для женщин" Then LblNum.Caption = W(List1.ListIndex) End If Но поскольку значение цены требуется вывести в рублях и копейках, с буквой “р” и с разделителями троек разрядов, то используем функцию Format с аргументом currency: If CboSelect.Text = "Для женщин" Then LblNum.Caption = Format(W(List1.ListIndex), "currency") End If 7.2. Имена файлов с рисунками совпадают с соответствующим значением в списке и отличаются от них только наличием расширения. Для формирования имени файла заведем новую переменную строкового типа NameFile, значение которой будет вычисляться по формуле: NameFile = List1.Text & ".jpg" 7.3. Для вывода изображения подарка используем метод Picture и функцию LoadPicture. Как и в лабораторной работе № 3, файлы с рисунками следует записать в ту же папку, что и сам проект. Тогда имя файла достаточно добавить к пути к файлу с разрабатываемой программой (стандартное значение этого пути — App.Path): Img.Picture = LoadPicture(App.Path & "\" & NameFile) Таким образом, получаем процедуру: Private Sub List1_Click() Dim NameFile As String 'Вывод цены If CboSelect.Text = "Для женщин" Then LblNum.Caption = Format(W(List1.ListIndex), "currency") End If If CboSelect.Text = "Для мужчин" Then LblNum.Caption = Format(M(List1.ListIndex), "currency") End If 'Вывод картинки NameFile = List1.Text & ".jpg" Img.Picture = LoadPicture(App.Path & "\" & NameFile) End Sub 8. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Добавить”. В ней предусмотреть проверку — если в списке подарков выбран хоть один товар (List1.Text <> ""), то занести его во второй список (метод AddItem) и изменить общую сумму подарка (надпись LblSumma); если не выбран ни один товар, то должно появляться окно сообщения с текстом “Выберите товар в первом списке”: Private Sub CmdAdd_Click() If List1.Text <> "" Then 'Добавляем элемент из первого списка во второй List2.AddItem List1.List(List1.ListIndex) 'Меняем значение суммы и выводим на форму Summa = Summa + LblNum.Caption LblSumma.Caption = Format(Summa, "currency") 'Делаем доступной кнопку Купить CmdBuy.Enabled = True Else MsgBox "Выберите товар в первом списке" End If End Sub Примечание. Переменная Summa должна быть описана как глобальная в разделе General Declarations: Dim Summa As Currency 9. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Удалить”. В ней предусмотреть проверку — если во втором списке выбран хоть один товар, то удалить его из списка (метод Remove) и изменить общую сумму подарка; если не выбран ни один товар, то должно появляться окно сообщения: Private Sub CmdDelete_Click() If List2.Text <> "" Then 'Удаляем элемент из второго списка List2.RemoveItem List2.ListIndex 'Меняем значение суммы и выводим на форму Summa = Summa – LblNum.Caption LblSumma.Caption = Format(Summa, "currency") Else MsgBox "Выберите товар во втором списке" End If End Sub 10. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Очистить”: Private Sub CmdClear_Click() 'Очищаем список List2.Clear 'Меняем сумму Summa = 0 LblSumma.Caption = "" 'Делаем недоступной кнопку c надписью "Купить" CmdBuy.Enabled = False End Sub 11. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Купить”: Private Sub CmdBuy_Click() MsgBox "Ваш заказ отправлен на обработку. Спасибо за покупку", , "Спасибо" End Sub Задание для самостоятельной работы 1. Изменить программный код, добавив в список подарков для мужчин очки стоимостью 1200 руб., а в список подарков для женщин — часы (28 600 руб.). 2. Изменить программный код, добавив новую категорию “Для детей” и подарки (цена): “Лего” (810), велосипед (2500), “Домик” (16 400). Для хранения цен использовать еще один массив. Лабораторная работа № 5. Программа “Угадай-ка”Задание: разработать программу, с помощью которой можно играть в игру на отгадывание числа, “загаданного” компьютером (см. рис. 5.1). Сначала выбирается верхний предел диапазона, из которого будет загадываться число. Затем по щелчку на кнопке с надписью Загадать число выбирается и запоминается случайное число из выбранного диапазона. Пользователь вводит число из заданного диапазона, пытаясь угадать задуманное число. В зависимости от ответа выводится одно из сообщений “Ваше число — больше”, “Ваше число — меньше”, “Угадал!”, которые заносятся в “Дневник”. Если число угадано, то на форме появляются скрытые до этого надпись “Угадал!” и рисунок.
Рис. 5.1 Указания по выполнению 1. Изменить заголовок формы. 2. Разместить на форме необходимые объекты. Значения свойств объектов установить в соответствии с таблицей. Значения свойства Font задать по своему усмотрению. 3. Добавить на форму в рамку Frame1 объект для выбора верхней границы в окне До (значение в текстовом окне должно изменяться от 10 до 100). Для этого могут быть использованы элементы управления VScrollBar (Вертикальная полоса прокрутки) или UpDown (Счетчик). Первый объект является стандартным элементом управления. Второй объект первоначально отсутствует на панели инструментов Toolbox. Для его установки надо выбрать пункты меню Project | Components, в появившемся списке установить флажок на Microsoft Common Controls – 2 5.0 (SP2) и щелкнуть на кнопке OK, после чего на панели инструментов добавится соответствующая пиктограмма. Для объекта VScrollBar установить следующие значения свойств:
для объекта UpDown:
4. Включить проверку переменных (Option Explicit). 5. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Выход” на завершение программы и сделать ее кнопкой отмены. 6. Запрограммировать реакцию на изменение содержимого текстового окна TxtTo: а) при использовании объекта VScrollBar: Private Sub VScroll_Change() TxtTo.Text = VScroll.Value End Sub б) при использовании объекта UpDown: Private Sub UpDownl_Change() TxtTo.Text = UpDownl.Value End Sub 7. В разделе General Declarations описать переменную целого типа х (задуманное число). 8. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Загадать число”: а) присвоить переменной х случайное целое число из заданного диапазона; б) запрограммировать действия, которые позволят установить исходные параметры программы (начало игры): — очистить список List; — очистить текстовое поле TxtNum; — снять запрет редактирования с поля TxtNum: TxtNum.Locked = False — перевести фокус на текстовое поле TxtNum: TxtNum.SetFocus — кнопку c надписью Проверить сделать недоступной (свойство Enabled); — сделать невидимыми надпись LblWin и рисунок ImgWin (свойство Visible). 9. Запрограммировать процедуру TxtNum_Change() (обработка события “Изменение в текстовом поле TxtNum”) — кнопка с надписью Проверить должна стать доступной. 10. Запрограммировать процедуру обработки события “Щелчок на кнопке с надписью Проверить”: а) проверить, является ли введенное число значением из заданного диапазона; если нет, то вывести на экран сообщение: MsgBox "Введите число от 1" & " до " & TxtTo.Text, vbOKOnly + vbCritical, "Внимание!" б) если введенное число корректно, то сравнить его с задуманным числом х и в список List добавить одну из надписей: “Ваше число — больше”, “Ваше число — меньше” или “Угадал!”; в) если число угадано, то: — сделать видимыми надпись LblWin и рисунок ImgWin; — запретить редактирование текстового поля TxtNum; г) независимо от того, каким оказалось введенное число, надо: — очистить текстовое поле TxtNum и перевести на него фокус; — кнопку с надписью Проверить сделать недоступной. * Проверка корректности введенных значений с точки зрения их типа не проводится.И.. Д.. Куклина | ||||||||||||||||||||||