Лекция 3: 2 Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox). Не могу найти меню Разработать (Develop)>Links и т.д. |
Методические указания к курсовому проектированию в среде VISUAL BASIC
Реализация задания
Приводится проект, дающий справку желающим приобрести автомобиль. Создан класс Class1, содержащий компоненты, определяющие название фирмы-изготовителя, модель автомобиля, его стоимость, изображение автомобиля и следующие технические характеристики:
- тип двигателя (бензин/дизель),
- число цилиндров/рабочий объём,
- система питания (карбюратор/впрыскивание),
- мощность (л.с),
- максимальная скорость (км/час),
- разгон 0 - 100 (км/час)/сек,
- привод (передний/задний/4х4).
Далее создаётся экземпляр класса: Dim av As New Class1, использующий компоненты класса.
Пользователю предлагается решить вопрос о необходимости покупки, выбрать фирму-изготовителя, ответить на вопрос о выводе изображения покупаемого автомобиля, либо его технических характеристик, либо обеих категорий одновременно (используются процедуры Property Get и Property Let, созданные в классе Class1 ), после чего программа адекватно реагирует: либо выводятся вышеперечисленные данные, либо выводится некоторое сообщение.
Для реализации проекта нужно выполнить следующую последовательность действий:
- добавить в стандартный проект модуль класса ( Project -> Add Class Module -> Class Module -> Открыть ),
- создать:
- методы класса. Четыре метода создаются в процедурах: Public Function Met1(), Public Function Met2(), Public Function Met3(), Public Function Met4() ( Tools -> Add Procedure -> ввести имя { Met1, Met2, Met3, Met4}-> выбрать Function -> выбрать Public -> OК ),
- свойства класса. Свойства задаются с использованием процедур Property Get и Property Let ( Tools -> Add Procedure ?ввести имя (здесь - varian) -> выбрать Property -> выбрать Public -> OК ),
- поля класса - avto, firma, model, stoim, pict, var, см. ниже.
- создать на форме:
- два элемента управления ComboBox с именами Combo1 и Combo2,
- два элемента управления CommandButton с именами Command1 и Cоmmand2 ; значению свойства Caption объекта Command1 присвоить значение "OK", Cоmmand2 - "Exit",
- элементы управления Label1 - Label4, значениям свойств Caption присвоить: Label1 - "Хотите ли Вы купить машину?", Label2 - "Выберите фирму-изготовитель", Label3 - "Хотите ли Вы увидеть изображение выбранного автомобиля или его технические характеристики ?", Label4 - "", свойству Visible объекта Label4 присвоить False,
- массив элементов управления OptionButton (присвоить значения свойствам - Option1(0).Caption= "да", Option1(1).Caption= "нет" ),
- массивы элементов управления PictureBox: Picture1(0) - Picture1(12) и Picture2(0) - Picture(12). Свойству Visible всех элементов управления присвоить значение False. Свойству Picture каждого элемента управления присвоить значение изображения соответствующего автомобиля и списка технических характеристик (эти списки создаются в приложении Excel, далее таблицы передаются в приложение Paint и сохраняются как рисунки).
- ввести код в область класса (см. ниже "область проекта Class1"),
- ввести код, данный ниже, в области:
- General Declarations формы,
- Combo1, событие Click,
- Combo2, событие Click,
- Command1, событие Click,
- Command, событие Click,
- Form, событие Load,
- Form, событие Unload,
- стартовать проект, получить справку о предполагаемой покупке.
/////////////////////////////область проекта Class1//////////////////////////////// Public avto As Boolean Public firma As String Public model As String Public stoim As String Public pict As String Dim var As String Private Sub Class_Initialize() ' инициализация полей класса avto = False: firma = "": model = "": stoim = "": var = "" End Sub Public Function Met1() ' Если пользователь нажал кнопку (OptionButton) - Да, то выполнить процедуры ' Met2, Met3, Met4, результатом выполнения которых является вывод данных: ' марка, стоимость, изображение и технические характеристики, иначе ' Met1 = False и выводится сообщение "Приносим свои извинения, мы даем ' информацию для желающих купить автомобиль" If avto = True Then model = Met2() stoim = Met3() pict = Met4() ' поле pict определяет номера элементов массивов ' PictureBox, см. Met4 Met1 = True Else Met1 = False End If End Function ' после щелчка на кнопках Да/Нет (два переключателя OptionButton) и выбора ' фирмы из списка ComboBox c именем Combo1 определить марку автомобиля Public Function Met2() Select Case firma Case "AUDI": Met2 = "A6" Case "CITROEN": Met2 = "C5" Case "FORD": Met2 = "Focus" Case "HONDA": Met2 = "Accord" Case "HYUNDAI": Met2 = "Elanta" Case "JEEP": Met2 = "Grand Cherokee LTD" Case "LAND ROVER": Met2 = "Land Rover Discovery" Case "LEXSUS": Met2 = "RX330" Case "MITSUBISHI": Met2 = "Pajero III" Case "NISSAN": Met2 = "Primera(1.8)" Case "PEUGEOT": Met2 = "307 XR" Case "PORSCHE": Met2 = "Cayenne Turbo" Case "RENAULT": Met2 = "Laguna II" End Select End Function ' определить стоимость автомобиля в долларах США Public Function Met3() Select Case firma Case "AUDI": Met3 = "41500" Case "CITROEN": Met3 = "20100" Case "FORD": Met3 = "12430" Case "HONDA": Met3 = "33900" Case "HYUNDAI": Met3 = "13790" Case "JEEP": Met3 = "41690" Case "LAND ROVER": Met3 = "40850" Case "LEXSUS": Met3 = "65500" Case "MITSUBISHI": Met3 = "56640" Case "NISSAN": Met3 = "25100" Case "PEUGEOT": Met3 = "13808" Case "PORSCHE": Met3 = "140500" Case "RENAULT": Met3 = "22900" End Select End Function Public Function Met4() ' при выборе данных из списка ComboBox с именем Combo2 ' (после щелчка на кнопке "OК" ) определяется номер элемента массива ' PictureBox, соответствующий выбранной фирме-изготовителю и ' на экран позднее выводится соответствующая фотография ' и/или технические характеристики автомобиля Select Case firma Case "AUDI": Met4 = "0" Case "CITROEN": Met4 = "1" Case "FORD": Met4 = "2" Case "HONDA": Met4 = "3" Case "HYUNDAI": Met4 = "4" Case "JEEP": Met4 = "5" Case "LAND ROVER": Met4 = "6" Case "LEXSUS": Met4 = "7" Case "MITSUBISHI": Met4 = "8" Case "NISSAN": Met4 = "9" Case "PEUGEOT": Met4 = "10" Case "PORSCHE": Met4 = "11" Case "RENAULT": Met4 = "12" End Select End Function ' процедура Property Let используется для задания значения свойства, ' Property Get - для считывания значения свойства Public Property Get varian() As String Select Case var Case Is = 0: varian = "pict" Case Is = 1: varian = "texn" Case Is = 2: varian = "all" End Select End Property Public Property Let varian(ByVal vNewValue As String) Select Case vNewValue Case "изображение": var = 0 Case "технические параметры": var = 1 Case Else: var = 2 End Select End Property /////////////////////////////////область проекта Form1///////////////////////////// Dim av As Class1 ' av - экземпляр класса Dim v As String Dim i As Integer, j As Integer Private Sub Combo1_Click() ' сделать невидимыми элементы управления Label и Picture ' (формирующие фотографии, технические характеристики, фирму, ' марку и стоимость), для того, чтобы впоследствии на форму ' выводились только те из них, которые определяет своими ' действиями покупатель Label5.Visible = False For i = 0 To 12 Picture1(i).Visible = False Picture2(i).Visible = False Next Dim ot As String ' переменная для хранения сообщения программы av.firma = Combo1.Text ' значение поля firma объекта av взять из ' списка ComboBox с именем Combo1 av.avto = Option1(0).Value ' значение поля avto объекта av взять ' из поля массива OptionButton If av.Met1 = True Then ot = " " & CStr(av.firma) & vbCrLf: ot = ot & " " & vbCrLf ot = ot & " модель " & CStr(av.model) & vbCrLf: ot = ot & " " & vbCrLf ot = ot & " цена в $ " & CStr(av.stoim) & vbCrLf: ot = ot & " " & vbCrLf ot = ot & "Для получения более полной информации обращайтесь_ по телефону 7077888" MsgBox Title:="Мы можем предложить", Prompt:=ot Else Label5.Visible = False Picture1(Val(av.pict)).Visible = False ' аргумент Picture1: (av.pict) ' определяет индекс элемента массива PictureBox ot = "Приносим свои извинения, мы даем информацию для желающих_ купить автомобиль" MsgBox Title:="Автосалон START", Prompt:=ot End If End Sub Private Sub Combo2_Click() av.varian = Combo2.Text ' см. процедуру Property Let. Присваиваем ' свойству varian значение выбранные из списка ComboBox с именем Combo2 End Sub Private Sub Command1_Click() Label5.Visible = False Label5.Caption = "" For i = 0 To 12 Picture1(i).Visible = False Picture2(i).Visible = False Next v = av.varian ' см. процедуру Property Get. Переменной v присваиваем ' значение свойства varian объекта av av.avto = Option1(0).Value If av.Met1 = True Then Select Case v Case "pict" Picture1(Val(av.pict)).Visible = True Case "texn" Picture2(Val(av.pict)).Visible = True ' технические характеристики ' хранятся как изображения в соответствующих элементах ' массива PictureBox2 Case "all" Picture1(Val(av.pict)).Visible = True Picture2(Val(av.pict)).Visible = True Label5.Visible = True Label5.Caption = CStr(av.firma) & " " & CStr(av.model) & _ vbCrLf & "цена в $ " & CStr(av.stoim) End Select Else Picture1(Val(av.pict)).Visible = False Picture2(Val(av.pict)).Visible = False MsgBox Title:="Автосалон START", Prompt:="Приносим свои_ извинения, мы даем информацию для желающих купить автомобиль" End If End Sub Private Sub Command2_Click() MsgBox Title:="Автосалон START", Prompt: = "Мы всегда рады помочь!_ Будем рады новой встрече!" End ' выход из программы после сообщения MsgBox. End Sub Private Sub Form_Load() Set av = New Class1 ' описание объектной переменной дано выше ' заполнение списка ComboBox с именем Combo1 названиями фирм Combo1.AddItem "AUDI" Combo1.AddItem "CITROEN" Combo1.AddItem "FORD" Combo1.AddItem "HONDA" Combo1.AddItem "HYUNDAI" Combo1.AddItem "JEEP" Combo1.AddItem "LAND ROVER" Combo1.AddItem "LEXSUS" Combo1.AddItem "MITSUBISHI" Combo1.AddItem "NISSAN" Combo1.AddItem "PEUGEOT" Combo1.AddItem "PORSCHE" ' заполнение списка ComboBox с именем Combo2 предложениями для ' выбора данных в процедурах Property Get и Property Let Combo2.AddItem "изображение" Combo2.AddItem "технические параметры" Combo2.AddItem "все данные" End Sub Private Sub Form_Unload(Cancel As Integer) Set av = Nothing ' удалить объект из памяти End Sub
Работа пользователя с проектом
Вид разработанной справочной системы представлен на рис.1. После старта проекта при отрицательном ответе на вопрос "Хотите ли Вы купить машину?" выводится сообщение: "Приносим свои извинения, мы даем информацию для желающих купить автомобиль". При положительном ответе на вопрос и выборе фирмы-изготовителя из списка на экран выводится сообщение о фирме, марке и стоимости автомобиля.
Далее покупатель может просмотреть или внешний вид, или технические характеристики, или одновременно обе категории, выбрав соответствующую строку во втором списке и сделав щелчок на кнопке OК (используются процедуры Property Get и Property Let ), см. рис.1, где дан результат работы программы при выборе строки "все данные" . При щелчке на кнопке Exit выводится сообщение: "Мы всегда рады помочь! Будем рады новой встрече!" и проводится выход из программы.
Заключение
Созданный проект позволяет клиенту получить справочные данные при покупке автомобиля. Представленная программа является лишь небольшим примером использования классов, в реальности же сфера применения cвойств объектно-базирующегося программирования гораздо шире.