на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Программирование в Бейсике
p align="left">- При выборе определенного маршрута из списка представленных - считывание из файла выбранного маршрута " < Имя маршрута >.txt" данных : номера автобусов, имена их водителей и кондукторов, названия всех остановок и их координаты. Отображение в Picture_Box схемы самого маршрута с помощью линий и остановки - Image_Box

- При нажатии кнопки Новый считывание из файла " Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box

- При выборе кнопок Добавление/Изменение или Удаление соответственно добавление, изменение или удаление в зависимости от определенных параметров

- При нажатии соответствующих после выбора режима изменения маршрутов кнопок переименование, удаление, перемещение выбранной остановки или добавление новой

- Перенаправление маршрута и запоминание соответственно уже измененного маршрута

- При нажатие соответствующей кнопки запись изменений в файл открытого маршрута

4.Создание нового маршрута

- Запись в файл маршрутов названия нового и создание файла самого маршрута

4. Программная часть

Самыми сложными на мой взгляд и наиболее требующими внимания являются следующие части кода программы:

1.Визуализация движения автобусов

For i = 0 To (AllBuses - 1)

Fuel(i) = Fuel(i) - 1 / (10000 * Me.Timer1.Interval)

If i = Misk Then Me.Label13.Caption = Str$(Fuel(Misk))

If Fuel(i) = 0 Then Fuel(i) = 100

Next i

For z = 0 To (Combo1.ListCount - 1)

For i = 0 To (arBusCount(z) - 1)

If z <> 0 Then

a = i

For j = 0 To (z - 1)

i = i + arBusCount(j)

Next j

End If

If arStayPast(z, i) = (arStayCount(z) - 1) Then arStayEdit(z, i)= -1

If arStayPast(z, i) = 0 Then arStayEdit(z, i) = 1

If Val(arStayAbsciss(z, arStayPast(z, i))) > Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _

Then arCoordEdit(z, i) = -1

If Val(arStayAbsciss(z, arStayPast(z, i))) < Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _

Then arCoordEdit(z, i) = 1

If Val(arStayAbsciss(z, arStayPast(z, i))) = Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _

Then arCoordEdit(z, i) = 0

k(z, i) = (Val(arStayOrdinata(z, arStayPast(z, i))) - Val(arStayOrdinata(z, arStayPast(z, i) + arStayEdit(z, i)))) / _

(Val(arStayAbsciss(z, arStayPast(z, i))) - Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))))

b(z, i) = Val(arStayOrdinata(z, arStayPast(z, i))) - k(z, i) * Val(arStayAbsciss(z, arStayPast(z, i)))

Dim c As Single

c = Cos(Atn(k(z, i)))

x0(z, i) = x0(z, i) + c * 2 * arCoordEdit(z, i)

y0(z, i) = k(z, i) * x0(z, i) + b(z, i)

Image1(i).Move x0(z, i) - Image1(i).Width / 2, y0(z, i) - Me.Image1(i).Height / 2

If arCoordEdit(z, i) = 1 Then

If x0(z, i) >= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i))) _

Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)

End If

If arCoordEdit(z, i) = -1 Then

If x0(z, i) <= Val(arStayAbsciss(z, arStayPast(z, i) + arStayEdit(z, i)))_

Then arStayPast(z, i) = arStayPast(z, i) + arStayEdit(z, i)

End If

If z <> 0 Then i = a

Next i

Next z

End Sub

где k(z, i) - угловой коэффициент уравнения движения автобуса " i " по маршруту " z "; b(z, i) - свободный член того же уравнения; arCoordEdit(z, i) - в какую сторону изменять координату автобуса; arStayPast(z, i), arStayEdit(z, i) - соответственно последняя остановка, которую прошел автобус, и величина, показывающая в какую сторону будут изменяться остановки; с - изменение координаты автобуса по X; x0(z, i), y0(z, i) - промежуточные координаты автобуса. В данной процедуре программа сама проверяет в какую сторону должен двигаться определенный автобус, как должна изменяться его координата и где следующий момент времени он будет находиться.

2.Работа с текстовыми файлами при считывании информации об определенном маршруте

Public Static Sub Work_With_Files()

arBusCount(Mis) = 0

arStayCount(Mis) = 0

Open "c:\Курсовая моя\" + Combo1.List(Mis) + ".txt" For Input As 2

Do While Not EOF(2)

Input #2, a$

Select Case a$

Case "автобус": Input #2, arBusNumber(Mis, arBusCount(Mis))

Case "водитель": Input #2, arDriveName(Mis, arBusCount(Mis))

Case "кондуктор": Input #2, arConductorName(Mis, arBusCount(Mis))

arBusCount(Mis) = arBusCount(Mis) + 1

Case "остановка": Input #2, arStayName(Mis, arStayCount(Mis))

Input #2, arStayAbsciss(Mis, arStayCount(Mis))

Input #2, arStayOrdinata(Mis, arStayCount(Mis))

arStayCount(Mis) = arStayCount(Mis) + 1

End Select

Loop

Close 2

End Sub

где Mis - номер текущего маршрута, файл которого читается.

Полный код программы смотрите в Приложении.

Вывод

В данной программе удалось полностью реализовать поставленную задачу.

С помощью Visual Basic получили:

Программу - модель работы оператора по управлению автобусами

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

Предоставили возможность изменения данных по маршруту: непосредственно имени самого маршрута, возможность добавить или удалить автобус, а также изменить данные по автобусам: имена водителя и кондуктора; удалить, добавить, переместить, переименовать остановки или вообще изменить направление движения по маршруту, поменять порядок прохождения остановок автобусами данного маршрута, плюс удаление самого маршрута при необходимости.

Обеспечили возможности создания своего маршрута, а также корректировки данных (бортовой номер) по свободным автобусам (которые могут быть задействованы, если это необходимо).

Плюс ко всему, смоделировали (визуализировать) наглядное движение автобусов с учетом зависимости скорости автобусов от времени суток.

Список использованной литературы

1.Visual Basic 6.0 - Мастер - Разработка приложений. Санкт - Петербург, " БХВ - Петербург", 2000

2.Самоучитель по Visual Basic 6.0

Приложение

Form1

Public EditBus As Boolean

Public EditLine As Boolean

Dim DooM As Boolean, Doomy As Boolean, Do_Do As Boolean

Dim Mis As Integer, Mi As Integer

Dim Misk As Integer, disk As Integer

Dim w As Single

Dim arLinesName(0 To 30) As String, LinesCount As Integer '30 - max маршрутов

Dim arBusNumber(0 To 30, 0 To 25) As String, arBusCount(0 To 30) As Integer

Dim AllBuses As Integer '25 - max автобусов

Dim arDriveName(0 To 30, 0 To 25) As String

Dim arConductorName(0 To 30, 0 To 25) As String

Dim arStayName(0 To 30, 0 To 35) As String ' 35 max остановок на одном маршруте

Dim arStayAbsciss(0 To 30, 0 To 35) As String

Dim arStayOrdinata(0 To 30, 0 To 35) As String

Dim arStayCount(0 To 30) As Integer

Dim arName(0 To 30, 0 To 35) As String ' 35 - max остановок на одном маршруте

Dim arAbsciss(0 To 30, 0 To 35) As String

Dim arOrdinata(0 To 30, 0 To 35) As String

Dim arFreeBuses(0 To 100) As String

Dim q As Integer, food As Boolean, Boom As Boolean

Dim e As Integer, mx As Single, my As Single

Dim zzz As Integer, zxz As Integer

Dim aa As Integer, x0 As Single, y0 As Single, nama(0 To 30, 0 To 35) As String

Private Sub Combo1_Click()

Mi = 0

Misk = 0

Boom = True

disk = 999

Do_Do = False

Doomy = False

Command4.Enabled = False

Command5.Enabled = False

Command6.Enabled = False

Combo2.Clear

Combo3.Clear

Combo4.Clear

Text1.Text = "": Text2.Text = "": Text3.Text = "": Text4.Text = ""

Me.Picture1.Visible = True

Combo2.Enabled = True: Combo4.Enabled = True

Command1.Enabled = True: Command2.Enabled = True: Command3.Enabled = True: Command7.Enabled = True

Command5.Enabled = True

Mis = Combo1.ListIndex

If Len(Dir("c:\Курсовая моя\" + Combo1.List(Mis) + ".txt")) = 0 Then

MsgBox "Файл маршрута не найден" + vbCrLf + _

"Проверьте его наличие: 'c:\Курсовая моя\" + Combo1.List(Mis) + ".txt'"

Exit Sub

Else

Files

End If

For i = 0 To arBusCount(Mis) - 1

Combo2.AddItem arBusNumber(Mis, i)

Next i

For i = 0 To 35

Image1(i).Picture = LoadPicture("c:\Курсовая моя\Иконки\Icon2.ico")

Next i

Picture1.Cls

For i = 1 To 35

Me.Image1(i).Visible = False

Me.Label14(i).Visible = False

Next i

Me.Picture1.PSet (arStayAbsciss(Mis, 0), arStayOrdinata(Mis, 0))

w = Me.Image1(0).Width / 2

Me.Image1(0).Move arStayAbsciss(Mis, 0) - w, arStayOrdinata(Mis, 0) - w

Me.Label14(0).Move Image1(0).Left + 2 * w, Image1(0).Top

Me.Label14(0).Caption = arStayName(Mis, 0)

For i = 0 To (arStayCount(Mis) - 1)

Me.Picture1.Line -(arStayAbsciss(Mis, i), arStayOrdinata(Mis, i))

Me.Image1(i).Move arStayAbsciss(Mis, i) - w, arStayOrdinata(Mis, i) - w

Me.Image1(i).Visible = True

Me.Label14(i).Visible = True

Me.Label14(i).Move Image1(i).Left + 2 * w, Image1(i).Top

Me.Label14(i).Caption = arStayName(Mis, i)

Me.Combo4.AddItem arStayName(Mis, i)

Next i

End Sub

Private Sub Combo2_Click()

DooM = False

Text2.Enabled = True: Text3.Enabled = True

Me.Command8.Enabled = True

Misk = Combo2.ListIndex

Text1.Text = arBusNumber(Mis, Misk)

Text2.Text = arDriveName(Mis, Misk)

Text3.Text = arConductorName(Mis, Misk)

End Sub

Private Sub Combo3_Click()

DooM = True

Text2.Enabled = True: Text3.Enabled = True

Mi = Combo3.ListIndex

Text1.Text = Combo3.List(Mi)

Text2.Text = ""

Text3.Text = ""

End Sub

Private Sub Combo4_Click()

disk = Combo4.ListIndex

Text4.Enabled = True

Text4.Text = Combo4.List(disk)

For i = 0 To 35

If Label14(i).Caption = Combo4.List(disk) Then

Image1(i).Picture = LoadPicture("c:\Курсовая моя\Иконки\!conMania.cur")

Else

Image1(i).Picture = LoadPicture("c:\ Курсовая моя\Иконки \Icon2.ico")

Страницы: 1, 2, 3, 4, 5



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.