Рефераты
 

Исследование структурной надежности методом статистического моделирования

p align="left">Следующим критерием оценки структурной надежности является интегральный критерий. По этому критерию сеть считается исправной (связной), если имеется связь между всеми ее узлами и задается требование на вероятность такого события.

Последний критерий как раз и используется при оценке структурной надежности сети методом статистического моделирования.

2.2 Разработка алгоритма расчета структурной надежности

2.2.1 Алгоритм расчета структурной надежности сети

связи методом статистического моделирования

Опишем сначала принцип расчета структурной надежности сети методом статистического моделирования [4].

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

(2.1)

где - время наработки на отказ, - среднее время восстановления.

Производится независимых испытаний, каждое из которых можно условно разделить на два этапа.

На первом этапе вырабатывают независимых случайных, равномерно распределенных в интервале чисел . Затем, значения последовательно сравниваются с величинами по следующему алгоритму:

если - элемент сети отказал, результат равен нулю;

если - элемент сети находится в исправном состоянии, результат равен единице.

Результаты сравнения записываются в матрицу , .

На втором этапе производится проверка структуры сети, которая описана матрицей , на связность. Если сеть связна, то исход испытания относится к числу благоприятных .

Результатом оценки структурной надежности сети является значение - отношение числа благоприятных исходов к общему числу испытаний.

Проверка сети на связность может осуществляться, например, на основе процедуры “соединения”. Ее суть заключается в следующем.

На анализируемой сети выбирается произвольный узел. Далее находят смежные ему узлы и соединяют с ним. Это происходит до тех пор, пока сеть не представится в виде одного узла - “точки” (в случае если, сеть связана) или множества узлов (если сеть не связана).

Разработанный на основе всего выше изложенного алгоритм программы, в общем виде, отобразим на рисунке 2.1. Опишем с начала переменные, используемые в этом алгоритме:

i, e и j - переменные используемые в циклах типа for - next основной процедуры расчета надежности сети;

PlasResult - хранит число благоприятных исходов;

x( ) - динамический массив, равномерно распределенных в интервале (0, 1) чисел;

Nnoi - хранит текущий номер испытания;

maxNnoi - хранит общее число испытаний;

PP - хранит значение вероятности события - сеть связна;

Imeny - хранит номер случайно выбранного узла;

S( ) - динамический массив, для хранения номеров смежных узлов;

Nnew - хранит информацию о наличии новых смежных вершин;

sngStartWork(1, 2) - массив дат начала и конца расчета надежности сети;

sngStartWorkSEC - хранит число секунд расчета надежности сети;

bar - промежуточная переменная для хранения текущего номера испытаний.

Рисунок 2.1 - Алгоритм расчета структурной надежности сети

Отобразим более подробно алгоритмы тех процедур, которые непосредственно участвуют в определении события - сеть связна. Алгоритмы этих процедур разместим в порядке их вызова основной программой расчета структурной надежности сети связи методом статистического моделирования. Порядок вызова этих процедур и краткое описание их задачи сведем в таблицу 2.1.

Таблица 2.1 - Процедуры определения связности сети

Имя процедуры

Задача процедуры

VektStrok Nnew, Imeny, S, A

Соединение смежных узлов

SvjazNet Imeny, A, p

Проверка на единичность полученной

вектор-строки

FinishAnswer A, PlasResult, Imeny, p, S, Nnew

Вынесение решения о связности сети, проверка наличия новых смеж-ных узлов для формирования нового массива смежных узлов

Рисунок 2.2 - Алгоритм процедуры “ VektStrok ”

Рисунок 2.3 - Алгоритм процедуры “ SvjazNet ”

Рисунок 2.4 - Алгоритм процедуры “ FinishAnswer ”

2.2.2 Алгоритм интерфейсной части программы расчета надежности сети методом статистического моделирования

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

2.3 Разработка программы расчета структурной надежности методом

статического моделирования

2.3.1 Разработка расчетной части программы расчета структурной надежности сети

Option Explicit

Dim A (200, 200) As Single, p As Integer

Public maxNnoi As Single, flgstopuser As Boolean

Private Sub firstStepp (A( ) As Single, x( ) As Single)

Dim n As Integer

Dim i As Integer

Dim j As Integer

n = 1

For i = 1 To ((FrmSSN.kolvouzlov) - 1) '4

For j = i + 1 To (FrmSSN.kolvouzlov) '5

If A (i, j) > 0 Then

If x (n) < A (i, j) Then

A (i, j) = 1

Else

A (i, j) = 0

End If

n = n + 1

End If

A (j, i) = A (i, j)

Next j

Next i

End Sub

Private Sub VektStrok (Nnew, Imeny As Integer, S( ) As Integer, A( ) As Single)

Dim k As Integer

Dim j As Integer

For k = 1 To (FrmSSN.kolvouzlov)

If S (k) > 0 Then

For j = 1 To (FrmSSN.kolvouzlov)

A (Imeny, j) = A (Imeny, j) + A (k, j)

If A (Imeny, j) > 1 Then

A (Imeny, j) = 1

End If

Next j

End If

Next k

Nnew = 0

End Sub

Private Sub SvjazNet (Imeny As Integer, A( ) As Single, p As Integer)

Dim j As Integer

p = 1

For j = 1 To (FrmSSN.kolvouzlov)

If A (Imeny, j) = 0 Then

p = 0

Exit Sub

End If

Next j

End Sub

Private Sub FinishAnswer (A( ) As Single, PlasResult As Integer, Imeny As Integer, p _ As Integer, S() As Integer, Nnew As Integer)

Dim j As Integer

Dim Pm (1 To 6) As Integer

Dim Nbg As Integer, nUlvekt As Integer

If p <> 0 Then

PlasResult = PlasResult + 1

Exit Sub

End If

Nbg = 0

Nnew = 0

nUlvekt = 0

For j = 1 To (FrmSSN.kolvouzlov)

If A (Imeny, j) = 1 Then

Pm (j) = j

Else: nUlvekt = nUlvekt + 1

End If

Next j

If nUlvekt = (FrmSSN.kolvouzlov) Then

Exit Sub

End If

For j = 1 To (FrmSSN.kolvouzlov)

If Pm (j) <> S (j) Then

S (j) = Pm (j)

Nnew = Nnew + 1

End If

Next j

End Sub

Private Sub FormirNLmassWork ( )

Dim initm As Integer

For initm = 1 To FrmSSN.kolvolin

FrmSSN.numUZmu initm, FrmSSN.kolvouzlov, 2, na1, na2

A (na1, na2) = FrmSSN.UvmLN (initm)

A (na2, na1) = A (na1, na2)

Next initm

End Sub

Public Sub cmdrasch_workmod ( )

Dim i As Integer, j As Integer

Dim PlasResult As Integer, e As Integer

Dim x( ) As Single, C As Integer

Dim Nnoi As Integer

Dim PP As Currency, Imeny As Integer

Dim S ( ) As Integer

Dim Nnew As Integer

Dim sngStartWork (1, 1 To 2) As Date

Dim sngStartWorkSEC As Single, bar As Integer

frmBrWk.PrgBarWSind.Min = 0: frmBrWk.PrgBarWSind.Max = 100

frmBrWk.PrgBarWSind.Visible = False

frmBrWk.LblSwrE(1).Caption = 0

PlasResult = 0

ReDim Preserve x (FrmSSN.kolvolin)

ReDim Preserve S (FrmSSN.kolvouzlov)

Randomize

For Nnoi = 1 To maxNnoi

DoEvents

If MdlWorkSpase.flgstopuser = True Then Exit For

If Nnoi = 1 Then

sngStartWork(1, 1) = Now

sngStartWorkSEC = Timer

frmBrWk.LblSwrE(1).Caption = sngStartWork(1, 1)

End If

For e = 1 To FrmSSN.kolvolin

x (e) = Rnd

Next e

firstStepp A, x'1

Imeny = (((FrmSSN.kolvouzlov) - 1) * Rnd) + 1

S (Imeny) = Imeny

For j = 1 To FrmSSN.kolvouzlov

If A (Imeny, j) = 1 Then

S (j) = j

End If

Next j

VektStr:

VektStrok Nnew, Imeny, S, A'2

SvjazNet Imeny, A, p'3

FinishAnswer A, PlasResult, Imeny, p, S, Nnew'4

If Nnew <> 0 Then

GoTo VektStr

End If

For i = 1 To FrmSSN.kolvouzlov

S (i) = 0

For j = 1 To FrmSSN.kolvouzlov

A (i, j) = 0

Next j

Next i

bar = Nnoi

frmBrWk.PrgBarWSind.Value = ((bar / maxNnoi) * 100)

frmBrWk.PrgBarWSind.Visible = True

Next Nnoi

If MdlWorkSpase.flgstopuser = True Then Exit Sub

PP = (PlasResult / maxNnoi)

sngStartWorkSEC = (Timer - sngStartWorkSEC)

sngStartWork (1, 2) = Now: frmBrWk.LblSwrE(0).Caption = sngStartWork(1, 2)

UserFormVorkClosed sngStartWorkSEC, maxNnoi, PP, sngStartWork

End Sub

Private Sub UserFormVorkClosed (sngStartWorkSEC, maxNnoi, PP, sngStartWork)

Dim work As Integer, TimeWork As String

Dim bufchench1 As Date, bufchench2 As Currency

If sngStartWork (1, 1) <> sngStartWork (1, 2) Then

If (sngStartWork (1, 2) - sngStartWork (1, 1)) > sngStartWorkSEC _

And (sngStartWork (1, 2) - sngStartWork (1, 1)) < 1 Then GoTo 12

bufchench1 = (sngStartWork(1, 2) - sngStartWork(1, 1))

TimeWork = Str(bufchench1)

Else

12:

bufchench2 = sngStartWorkSEC

TimeWork = Str (0) & Str (bufchench2) & " секунды"

End If

work = MsgBox("Расчет структурной надежности закончен !" & vbCrLf & Chr$(13) & "Число испытаний : " & maxNnoi & vbCrLf & "Вероятность связности : " & PP & vbCrLf & "Расчет длился около : " & TimeWork, vbInformation + vbOKOnly, " ")

sngStartWork(1, 1) = 0: sngStartWork(1, 2) = 0

sngStartWorkSEC = 0: frmBrWk.PrgBarWSind.Value = 0

Unload frmBrWk

End Sub

2.3.2 Разработка интерфейсной части программы расчета структурной надежности сети

Интерфейсная часть программы состоит из четырех частей, а именно:

первая, основная часть, располагается в файле формы основного окна

“ FrmSSN ”;

следующая часть располагается в файле формы окна расчета структурной надежности “ frmBrWk ”;

третья часть программы находится в файле формы окна конфигурирования координатной сетки “ FrmPrWeb ”;

четвертая, последняя, часть программы - в файле формы окна ввода числовой характеристики выбранной линии “ FrmNwORsZ ”.

Приведем листинги данных частей, интерфейсной части программы расчета структурной надежности сети, в этом же порядке.

Первая часть

Option Explicit

Public kolvouzlov As Integer, needFRsave As Boolean

Public kolvolin As Integer

Dim znak As Boolean, zamok As Boolean

Dim x1 As Integer, y1 As Integer

Dim x2 As Integer, y2 As Integer

Dim MasKoLuZv(1 To 200, 1 To 5) As Single

Dim keeCH As Boolean

Dim deletealluz As Boolean, deletealllinsv As Boolean

Dim keeAB As Boolean, testimonial As Boolean

Dim testNyn As Boolean, change As Boolean

Dim mlinesSV(1 To 400, 1 To 10) As Single, SFALNAME As String

Const myORno As String = "sns"

Dim zapros As Boolean

Public poweb As Boolean

Public shwebx As Single, shweby As Single

Public bJampWeb As Boolean

Private Sub svayzy (x1, x2, y1, y2, iduzla, Index, mlinesSV, kolvolin)

Dim i As Integer, j As Integer

On Error GoTo metSVx

If deletealllinsv = True And kolvolin > 0 Then

FrmSSN.Enabled = False

FrmSSN.MousePointer = 3

For i = 1 To kolvolin

For j = 1 To 10

mlinesSV(i, j) = 0

Next j: Next i

kolvolin = 0

Else

For i = 1 To kolvolin

If mlinesSV(i, 1) = 0 Then

mlinesSV(i, 1) = iduzla: mlinesSV(i, 2) = Index

mlinesSV(i, 3) = x1: mlinesSV(i, 4) = y1

mlinesSV(i, 5) = x2: mlinesSV(i, 6) = y2

mlinesSV(i, 7) = 0

mlinesSV(i, 8) = 0: mlinesSV(i, 9) = 0 '-номера вершин (новые)

mlinesSV(i, 10) = 0 '-вес линии

Exit Sub

End If

Next i

End If

FrmSSN.Enabled = True

FrmSSN.MousePointer = 0

brcoutSVX:

Exit Sub

metSVx:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutSVX

End Sub

Private Sub LinColorsv (NuMl As Integer, LcolorS, mlinesSV)

On Error GoTo HTYH

Select Case mlinesSV(NuMl, 7)

Case Is = 0

LcolorS = vbBlue

Case Is = 1

LcolorS = vbRed

Case Is = 2

LcolorS = RGB(210, 0, 210)

End Select

HTYH:

End Sub

Private Sub CmdBk_Click ( )

Dim nnoN As Integer

CmdWORKsch.Enabled = False

Cmd1.Visible = True

Cmd2.Visible = True

keeAB = False

For nnoN = 1 To kolvouzlov

nnOuzN((MasKoLuZv(nnoN, 1))).Enabled = False

Next nnoN

CmdFwd.Enabled = False

CmdBk.Enabled = False

Frame1.Enabled = True

Frame1.Caption = ("План сети")

End Sub

Private Sub CmdFwd_Click ( )

CmdFwd.Enabled = False

CmdBk.Enabled = True

If keeAB = False Then Frame1.Caption = ("Параметры")

Cmd1.Visible = False

Cmd2.Visible = False

keeAB = True

If change = True Or change = False Then TestNet testNyn

End Sub

Private Sub TestNet (testNyn) '-проверка связанных узлов

Dim tuZnSvYnOk As Integer, nuzysy As Integer

On Error GoTo metTNx

If change = False And kolvouzlov = 0 Then GoTo 101

For tuZnSvYnOk = 1 To kolvouzlov

If MasKoLuZv(tuZnSvYnOk, 1) > 0 And MasKoLuZv(tuZnSvYnOk, 4) >= 1 Then

nuzysy = nuzysy + 1

End If

Next tuZnSvYnOk

If nuzysy = kolvouzlov And nuzysy > 1 Then

testNyn = True

For tuZnSvYnOk = 1 To kolvouzlov

If MasKoLuZv(tuZnSvYnOk, 1) > 0 Then

nnOuzN(MasKoLuZv(tuZnSvYnOk, 1)).Move (MasKoLuZv(tuZnSvYnOk, 2) - _ (nnOuzN(MasKoLuZv(tuZnSvYnOk, 1)).Width / 2)), (MasKoLuZv(tuZnSvYnOk, 3) -

- (nnOuzN(MasKoLuZv(tuZnSvYnOk, 1)).Height / 2))

nnOuzN(MasKoLuZv(tuZnSvYnOk, 1)).Visible = True: nnOuzN(MasKoLuZv(tuZnSvYnOk, 1)).Enabled = True

End If

Next tuZnSvYnOk

change = False

Else

101: nuzysy = 0

nuzysy = MsgBox(" ВЫ допустили ошибку. Данная сеть НЕ связна !!! " _

& vbCrLf & vbCr & " Это не позволит вам ввести характеристики сети" _

& vbCrLf & " Для исправления ошибки нажмите : << Назад >>" _

, vbCritical + vbOKOnly, " Проверка связности сети ")

Frame1.Enabled = False

CmdFwd.Enabled = False

End If

brcoutTN:

Exit Sub

metTNx:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutTN

End Sub

Private Sub CmdWEB_Click ( )

Dim Wsetki As Single, Hsetki As Single

Dim i As Integer, j As Integer

Dim shag As Boolean, LcolorS As Double

Const webxy As Single = 201

On Error GoTo metWEBx

If poweb = False Then

shwebx = webxy

shweby = shwebx

End If

If bJampWeb = True And keeCH = True Then

shag = True: GoTo 7

ElseIf bJampWeb = True And keeCH = False Then

shag = False: GoTo 7

End If

If keeCH = False Then

8: Picture1.DrawStyle = 2

For Wsetki = (shwebx) To (Picture1.Width) Step (shwebx)

Picture1.Line ((Wsetki), 1)-((Wsetki), (Picture1.Height - 1))

Next Wsetki

For Hsetki = (shweby) To (Picture1.Height) Step (shweby)

Picture1.Line (1, Hsetki)-((Picture1.Width - 1), Hsetki)

Next Hsetki

keeCH = True

Else '*перерисовка линий S-T*

7: Picture1.DrawStyle = 6

Picture1.Cls

For i = 1 To kolvolin

If mlinesSV(i, 1) <> 0 Then

LinColorsv i, LcolorS, mlinesSV '- определение цвета линии

Picture1.Line ((mlinesSV(i, 3)), (mlinesSV(i, 4)))-((mlinesSV(i, 5)), _

(mlinesSV(i, 6))), LcolorS

End If '*перерисовка линий E-D*

Next i

If shag = True Then GoTo 8

keeCH = False

End If

Picture1.DrawStyle = 6

brcoutWEB:

Exit Sub

metWEBx:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutWEB

End Sub

Private Sub Cmd1_Click ( ) '-уменьшение узла

Dim ti As Integer, tip As Integer

On Error GoTo metGGG

If Optuzel.Value = False Then Exit Sub:

Picture1.AutoRedraw = False: Picture1.Enabled = False

For ti = Pct1.lBound To kolvouzlov

If (Pct1(0).Width) > 402 Then '-мин размер для индекса=400

If ti > 0 Then tip = MasKoLuZv(ti, 1) Else tip = ti

Pct1(tip).Visible = False

Pct1(tip).Width = (Pct1(0).Width - 20)

Pct1(tip).Height = (Pct1(0).Height - 20)

If ti <> 0 Then

Pct1(tip).Left = (Pct1(tip).Left + 10)

Pct1(tip).Top = (Pct1(tip).Top + 10)

Pct1(tip).Visible = True

End If

End If

Next ti

Picture1.AutoRedraw = True: Picture1.Enabled = True

brcoutGGG:

Exit Sub

metGGG:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutGGG

End Sub

Private Sub Cmd2_Click ( ) '-увеличение узла

Dim i As Integer, pip As Integer

On Error GoTo metTYP

If Optuzel.Value = False Then Exit Sub:

Picture1.AutoRedraw = False: Picture1.Enabled = False

For i = 0 To kolvouzlov

If (Pct1(0).Width) < 700 Then

If i > 0 Then pip = MasKoLuZv(i, 1) Else pip = i

Pct1(pip).Visible = False

Pct1(pip).Width = (Pct1(0).Width + 20)

Pct1(pip).Height = (Pct1(0).Height + 20)

If i <> 0 Then

Pct1(pip).Left = (Pct1(pip).Left - 10)

Pct1(pip).Top = (Pct1(pip).Top - 10)

Pct1(pip).Visible = True

End If

End If

Next i

Picture1.AutoRedraw = True: Picture1.Enabled = True

brcoutTYP:

Exit Sub

metTYP:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutTYP

End Sub

Private Sub CmdWORKsch_Click ( )

Dim parallyn As Integer, zn As Integer

Dim zun As Integer

Dim ikf As Integer

On Error GoTo metBRsy

If testimonial = True Then

zn = 0

For parallyn = 1 To kolvolin

If mlinesSV(parallyn, 10) > 0 And mlinesSV(parallyn, 8) > 0 _

And mlinesSV(parallyn, 9) = 0 Then

For ikf = 1 To kolvouzlov

If MasKoLuZv(ikf, 1) > 0 And MasKoLuZv(ikf, 1) = mlinesSV(parallyn, 2) Then

mlinesSV(parallyn, 9) = MasKoLuZv(ikf, 5)

Exit For

End If

Next ikf

ElseIf mlinesSV(parallyn, 10) > 0 And mlinesSV(parallyn, 8) = 0 _

And mlinesSV(parallyn, 9) > 0 Then

For ikf = 1 To kolvouzlov

If MasKoLuZv(ikf, 1) > 0 And MasKoLuZv(ikf, 1) = mlinesSV(parallyn, 1) Then

mlinesSV(parallyn, 8) = MasKoLuZv(ikf, 5)

Exit For

End If

Next ikf

ElseIf mlinesSV(parallyn, 10) > 0 And mlinesSV(parallyn, 8) = 0 _

And mlinesSV(parallyn, 9) = 0 Then

For ikf = 1 To kolvouzlov

If MasKoLuZv(ikf, 1) > 0 And MasKoLuZv(ikf, 1) = mlinesSV(parallyn, 1) Then

mlinesSV(parallyn, 8) = MasKoLuZv(ikf, 5)

ElseIf MasKoLuZv(ikf, 1) > 0 And MasKoLuZv(ikf, 1) = mlinesSV(parallyn, 2) Then

mlinesSV(parallyn, 9) = MasKoLuZv(ikf, 5)

End If

Next ikf

End If

If mlinesSV(parallyn, 8) > 0 And mlinesSV(parallyn, 9) > 0 _

And mlinesSV(parallyn, 10) > 0 Then zn = zn + 1

Next parallyn

zun = 0

For parallyn = 1 To kolvouzlov

If MasKoLuZv(parallyn, 5) <> 0 Then zun = zun + 1

Next parallyn

If zn = kolvolin And zun = kolvouzlov Then

Load frmBrWk

frmBrWk.Show vbModal

Exit Sub

Else

247:

zn = MsgBox(" Вы ввели НЕ все параметры сети. " & vbCrLf & _

" Проверьте ! ВСЕ ЛИ узлы пронумерованы " & vbCrLf & _

" Для ВСЕХ ЛИ линий вы ввели характеристики ?", _

vbCritical + vbOKOnly, _

" Ошибка ввода числовых характеристик сети !")

Exit Sub

End If

Else

GoTo 247

End If

brcoutZZ:

Exit Sub

metBRsy:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutZZ

End Sub

Private Sub Form_Load ( )

On Error GoTo metLFM

FrmSSN.MousePointer = vbArrow

Picture2.Visible = True

keeCH = False

bJampWeb = False

deletealluz = False

deletealllinsv = False

CmdFwd.Enabled = False

CmdBk.Enabled = False

CmdWORKsch.Enabled = False

keeAB = False

testNyn = False

change = False

testimonial = False

needFRsave = False

zapros = False

poweb = False

'&&& начальная установка подменю

mnuClose.Enabled = False

mnuSave.Enabled = False

mnuSaveAs.Enabled = False

mnuweb.Enabled = False

mnuwebYN.Checked = False

mnuWBconf.Enabled = False

'&&&

Picture1.Visible = False: Frame1.Visible = False

Cmd1.Visible = False: Cmd2.Visible = False

CmdWEB.Enabled = False

brcoutLFM:

Exit Sub

metLFM:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutLFM

End Sub

Private Sub mnuClose_Click ( )

Dim emss As Integer

On Error GoTo metClDf

If needFRsave = True Then

emss = MsgBox(" Вы хотите сохранить внесенные изменения ?",_

vbExclamation + vbYesNo, " Закрытие файла ")

If emss = vbYes Then mnuSave_Click

End If

SFALNAME = ""

Picture2.Visible = True: Picture1.Visible = False

Frame1.Visible = False: Cmd1.Visible = False

Cmd2.Visible = False: CmdWEB.Visible = False

Opt1.Value = True: CmdWORKsch.Enabled = False

zapros = False

poweb = False

mnuOpen.Enabled = True

deletealluz = True: deletealllinsv = True

Picture1.Cls: svayzy 0, 0, 0, 0, 0, 0, mlinesSV, kolvolin

NeWorKorrkolUZ 0, kolvouzlov, 0, 0, 0

LblLN(1).Caption = 0

LbluZ(1).Caption = 0

mnuNew.Enabled = True

mnuClose.Enabled = False

mnuSave.Enabled = False

mnuSaveAs.Enabled = False

mnuweb.Enabled = False

mnuwebYN.Checked = False

keeAB = False

testimonial = False

needFRsave = False

CmdFwd.Enabled = False

CmdBk.Enabled = False

brcoutDf:

Exit Sub

metClDf:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcoutDf

End Sub

Private Sub mnuExit_Click ( )

Dim emss As Integer

If needFRsave = True Then

emss = MsgBox(" Вы хотите сохранить внесенные изменения ?", _

vbExclamation + vbYesNo, " Завершение работы с программой ")

If emss = vbYes Then mnuSave_Click

End If

Unload FrmSSN

Set FrmSSN = Nothing

End Sub

Private Sub mnuNew_Click ( )

On Error GoTo metOUTsbA

Picture2.Visible = False: Picture1.Visible = True

Frame1.Visible = True: Cmd1.Visible = True

Cmd2.Visible = True: CmdWEB.Visible = True

mnuOpen.Enabled = False

mnuNew.Enabled = False

mnuClose.Enabled = True

mnuSave.Enabled = True

mnuSaveAs.Enabled = True

mnuweb.Enabled = True

deletealluz = False

deletealllinsv = False

testimonial = False

needFRsave = False

brcoutA0:

Exit Sub

metOUTsbA:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", _

vbCritical, "Error"

GoTo brcoutA0

End Sub

Private Sub mnuOpen_Click ( )

Dim ORnost As String, msNMF As Integer

Dim nF As Integer

Dim BREDpt As Boolean

On Error GoTo metERSSst

BREDpt = False

mnuNew.Enabled = False

mnuweb.Enabled = True

deletealluz = False

deletealllinsv = False

cldfilfunk.Flags = cdlOFNHideReadOnly

cldfilfunk.ShowOpen

SFALNAME = cldfilfunk.FileName

ORnost = Right$(SFALNAME, 4)

If Len(SFALNAME) = 0 Then

564:mnuNew.Enabled = True

mnuweb.Enabled = False

Exit Sub

End If

If myORno = Right$(SFALNAME, 3) And 46 = Asc(Mid(ORnost, 1, 1)) Then

FCnetR BREDpt

cldfilfunk.FileName = ""

If BREDpt = True Then GoTo 564

netUPload

Else

msNMF = MsgBox("Данный файл НЕ является файлом приложения SSN", _

vbCritical + vbOKOnly, " Не верный формат файла ")

cldfilfunk.FileName = " "

mnuNew.Enabled = True

mnuweb.Enabled = False

Exit Sub

End If

brcout77:

Exit Sub

metERSSst:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", _

vbCritical, "Error"

GoTo brcout77

End Sub

Private Sub netUPload ( )

Dim w As Integer

On Error GoTo metERSS03

For w = 1 To kolvouzlov

Load nnOuzN(MasKoLuZv(w, 1))

Load Pct1(MasKoLuZv(w, 1))

Pct1(MasKoLuZv(w, 1)).Move MasKoLuZv(w, 2) -

- Pct1(MasKoLuZv(w, 1)).Width / 2, _

MasKoLuZv(w, 3) - Pct1(MasKoLuZv(w, 1)).Height / 2

Pct1(MasKoLuZv(w, 1)).Visible = True

If MasKoLuZv(w, 1) > 0 Then

nnOuzN(MasKoLuZv(w, 1)).Move (MasKoLuZv(w, 2) -

- (nnOuzN(MasKoLuZv(w, 1)).Width / 2)), _

(MasKoLuZv(w, 3) - (nnOuzN(MasKoLuZv(w, 1)).Height / 2))

nnOuzN(MasKoLuZv(w, 1)).Visible = True

nnOuzN(MasKoLuZv(w, 1)).Enabled = True

End If

If testimonial = True And MasKoLuZv(w, 5) > 0 Then

nnOuzN(MasKoLuZv(w, 1)).Text = MasKoLuZv(w, 5)

nnOuzN(MasKoLuZv(w, 1)).BackColor = RGB(0, 250, 243)

nnOuzN(MasKoLuZv(w, 1)).Locked = True

End If

Next w

bJampWeb = True

CmdWEB_Click

bJampWeb = False

Picture2.Visible = False: Picture1.Visible = True

Frame1.Visible = True: Cmd1.Visible = True

Cmd2.Visible = True: CmdWEB.Visible = True

mnuClose.Enabled = True

mnuSave.Enabled = True

mnuSaveAs.Enabled = True

mnuOpen.Enabled = False

LbluZ(1).Caption = kolvouzlov

LblLN(1).Caption = kolvolin

If keeAB = True Then

Cmd1.Visible = False

Cmd2.Visible = False

End If

brcout3:

Exit Sub

metERSS03:

MsgBox "Error № " & Err.Number & " " & " (" & Err.Description & ") occured.", vbCritical, "Error"

GoTo brcout3

End Sub

Private Sub FcnetR (Bpt As Boolean)

Dim st0 As String, j As Integer

Dim nF As Integer, nwwd As Integer

Dim clermgs As String, st1 As String

Dim stx As String

On Error GoTo kasjakmet

nF = FreeFile

st1 = "777*NSN!& - _

&!SEV_*_ftAC*&&&*015401680161013101470146013600163046014101740162 _

0174099016801610168011209901700*777"

Open SFALNAME For Input As #nF

Input #nF, st0

If st0 <> st1 Then

clermgs = "Данный файл НЕ является файлом приложения SSN"

GoTo 22

End If

Input #nF, stx

keeAB = CBool(stx)

Input #nF, stx

testimonial = CBool(stx)

Input #nF, stx

kolvouzlov = CInt(stx)

For nwwd = 1 To kolvouzlov

For j = 1 To 5

Input #nF, MasKoLuZv(nwwd, j) 'stx

Next j

Next nwwd '-конец ввода массива узлов

Input #nF, stx

Input #nF, stx

kolvolin = CInt(stx)

For nwwd = 1 To kolvolin

For j = 1 To 10

If j = 10 Then

Input #nF, mlinesSV(nwwd, j)

mlinesSV(nwwd, j) = mlinesSV(nwwd, j) / 1000

Else

Input #nF, mlinesSV(nwwd, j) 'stx

End If

Next j

Next nwwd '- конец ввода массива линий

23:

Close #nF

Exit Sub

kasjakmet:

Select Case Err

Case Is = 76

clermgs = " Путь " & SFALNAME & " НЕ найден "

Case Is = 62

GoTo 23

Case Else

clermgs = "Данный файл НЕ является файлом приложения SSN"

End Select

22:

nwwd = MsgBox(clermgs, vbInformation + vbOKOnly, " Ошибка чтения файла")

Bpt = True

GoTo 23

End Sub

Private Sub mnuSave_Click ( )

If SFALNAME <> "" And needFRsave = True And zapros = False Then

cldfilfunk.Flags = cdlOFNOverwritePrompt

FCnetM

ElseIf needFRsave = True Then

mnuSaveAs_Click

End If

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


© 2010 BANKS OF РЕФЕРАТ