Опубликован: 04.07.2006 | Уровень: для всех | Доступ: свободно
Дополнительный материал 1:

Методические указания к курсовому проектированию в среде VISUAL BASIC

< Лекция 8 || Дополнительный материал 1: 12

Реализация задания

Приводится проект, дающий справку желающим приобрести автомобиль. Создан класс Class1, содержащий компоненты, определяющие название фирмы-изготовителя, модель автомобиля, его стоимость, изображение автомобиля и следующие технические характеристики:

  • тип двигателя (бензин/дизель),
  • число цилиндров/рабочий объём,
  • система питания (карбюратор/впрыскивание),
  • мощность (л.с),
  • максимальная скорость (км/час),
  • разгон 0 - 100 (км/час)/сек,
  • привод (передний/задний/4х4).

Далее создаётся экземпляр класса: Dim av As New Class1, использующий компоненты класса.

Пользователю предлагается решить вопрос о необходимости покупки, выбрать фирму-изготовителя, ответить на вопрос о выводе изображения покупаемого автомобиля, либо его технических характеристик, либо обеих категорий одновременно (используются процедуры Property Get и Property Let, созданные в классе Class1 ), после чего программа адекватно реагирует: либо выводятся вышеперечисленные данные, либо выводится некоторое сообщение.

Для реализации проекта нужно выполнить следующую последовательность действий:

  1. добавить в стандартный проект модуль класса ( Project -> Add Class Module -> Class Module -> Открыть ),
  2. создать:
    • методы класса. Четыре метода создаются в процедурах: 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, см. ниже.
  3. создать на форме:
    • два элемента управления 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 и сохраняются как рисунки).
  4. ввести код в область класса (см. ниже "область проекта Class1"),
  5. ввести код, данный ниже, в области:
    • General Declarations формы,
    • Combo1, событие Click,
    • Combo2, событие Click,
    • Command1, событие Click,
    • Command, событие Click,
    • Form, событие Load,
    • Form, событие Unload,
  6. стартовать проект, получить справку о предполагаемой покупке.
/////////////////////////////область проекта 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 выводится сообщение: "Мы всегда рады помочь! Будем рады новой встрече!" и проводится выход из программы.

Результат работы программы

Рис. 1. Результат работы программы

Заключение

Созданный проект позволяет клиенту получить справочные данные при покупке автомобиля. Представленная программа является лишь небольшим примером использования классов, в реальности же сфера применения cвойств объектно-базирующегося программирования гораздо шире.

< Лекция 8 || Дополнительный материал 1: 12
Константин Новков
Константин Новков

Лекция 3: 2

Для создания возможности использования объектов файловой системы нужно подключить библиотеку DLL, содержащую эти объекты: меню Разработать > Ccылки > Microsoft Scriptlet Component (сделать щелчок на соответствующем элементе управления CheckBox).

Не могу найти меню Разработать (Develop)>Links и т.д.

антонина квасова
антонина квасова