Программирование в Бейсике

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

t; Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box

  • При выборе определенного маршрута из списка представленных - считывание из файла выбранного маршрута " .txt" данных : номера автобусов, имена их водителей и кондукторов, названия всех остановок и их координаты. Отображение в Picture_Box схемы самого маршрута с помощью линий и остановки Image_Box
  • При нажатии кнопки Новый считывание из файла " Маршруты.txt" названия всех существующих маршрутов и запись их в Combo_Box
  • При выборе кнопок Добавление/Изменение или Удаление соответственно добавление, изменение или удаление в зависимости от определенных параметров
  • При нажатии соответствующих после выбора режима изменения маршрутов кнопок переименование, удаление, перемещение выбранной остановки или добавление новой
  • Перенаправление маршрута и запоминание соответственно уже измененного маршрута
  • При нажатие соответствующей кнопки запись изменений в файл открытого маршрута
  • 4.Создание нового маршрута

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

     

    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