📄 form1.frm
字号:
Begin VB.Line Line1
Index = 37
X1 = 7800
X2 = 3120
Y1 = 4440
Y2 = 5520
End
Begin VB.Line Line1
Index = 36
X1 = 6840
X2 = 7800
Y1 = 1440
Y2 = 3960
End
Begin VB.Line Line1
Index = 35
X1 = 7800
X2 = 3120
Y1 = 4200
Y2 = 1440
End
Begin VB.Line Line1
Index = 34
X1 = 6480
X2 = 1800
Y1 = 5640
Y2 = 4440
End
Begin VB.Line Line1
Index = 33
X1 = 1680
X2 = 2520
Y1 = 4440
Y2 = 5640
End
Begin VB.Line Line1
Index = 32
X1 = 6480
X2 = 2040
Y1 = 1200
Y2 = 4080
End
Begin VB.Line Line1
Index = 31
X1 = 2760
X2 = 1920
Y1 = 1440
Y2 = 3840
End
Begin VB.Line Line1
Index = 30
X1 = 7800
X2 = 2040
Y1 = 4320
Y2 = 4320
End
Begin VB.Line Line1
Index = 29
X1 = 7800
X2 = 6960
Y1 = 3000
Y2 = 5520
End
Begin VB.Line Line1
Index = 28
X1 = 7800
X2 = 3120
Y1 = 2880
Y2 = 5520
End
Begin VB.Line Line1
Index = 27
X1 = 8160
X2 = 7080
Y1 = 2400
Y2 = 1320
End
Begin VB.Line Line1
Index = 26
X1 = 7800
X2 = 3120
Y1 = 2640
Y2 = 1320
End
Begin VB.Line Line1
Index = 25
X1 = 8160
X2 = 8160
Y1 = 3000
Y2 = 3960
End
Begin VB.Line Line1
Index = 24
X1 = 7800
X2 = 2040
Y1 = 2760
Y2 = 4200
End
Begin VB.Line Line1
Index = 23
X1 = 6480
X2 = 5160
Y1 = 5880
Y2 = 6120
End
Begin VB.Line Line1
Index = 22
X1 = 4560
X2 = 3120
Y1 = 6120
Y2 = 5760
End
Begin VB.Line Line1
Index = 21
X1 = 6720
X2 = 4920
Y1 = 1440
Y2 = 5760
End
Begin VB.Line Line1
Index = 20
X1 = 2880
X2 = 4680
Y1 = 1440
Y2 = 5760
End
Begin VB.Line Line1
Index = 19
X1 = 7800
X2 = 5160
Y1 = 4440
Y2 = 6000
End
Begin VB.Line Line1
Index = 18
X1 = 2040
X2 = 4560
Y1 = 4320
Y2 = 6000
End
Begin VB.Line Line1
Index = 17
X1 = 7800
X2 = 4920
Y1 = 2880
Y2 = 5760
End
Begin VB.Line Line1
Index = 16
X1 = 6480
X2 = 2040
Y1 = 5640
Y2 = 2640
End
Begin VB.Line Line1
Index = 15
X1 = 1920
X2 = 2760
Y1 = 2880
Y2 = 5400
End
Begin VB.Line Line1
Index = 14
X1 = 6480
X2 = 2040
Y1 = 1200
Y2 = 2520
End
Begin VB.Line Line1
Index = 13
X1 = 2520
X2 = 1680
Y1 = 1320
Y2 = 2280
End
Begin VB.Line Line1
Index = 12
X1 = 7800
X2 = 2040
Y1 = 4320
Y2 = 2640
End
Begin VB.Line Line1
Index = 11
X1 = 1680
X2 = 1680
Y1 = 2880
Y2 = 3840
End
Begin VB.Line Line1
Index = 10
X1 = 7800
X2 = 2040
Y1 = 2640
Y2 = 2640
End
Begin VB.Line Line1
Index = 9
X1 = 4560
X2 = 2040
Y1 = 5760
Y2 = 2640
End
Begin VB.Line Line1
Index = 8
X1 = 4920
X2 = 6840
Y1 = 840
Y2 = 5520
End
Begin VB.Line Line1
Index = 7
X1 = 4680
X2 = 2760
Y1 = 840
Y2 = 5400
End
Begin VB.Line Line1
Index = 6
X1 = 6480
X2 = 5040
Y1 = 1200
Y2 = 480
End
Begin VB.Line Line1
Index = 5
X1 = 4440
X2 = 3120
Y1 = 480
Y2 = 1080
End
Begin VB.Line Line1
Index = 4
X1 = 5040
X2 = 7800
Y1 = 840
Y2 = 4200
End
Begin VB.Line Line1
Index = 3
X1 = 4560
X2 = 2040
Y1 = 840
Y2 = 4080
End
Begin VB.Line Line1
Index = 2
X1 = 5040
X2 = 7800
Y1 = 720
Y2 = 2640
End
Begin VB.Line Line1
Index = 1
X1 = 4800
X2 = 4800
Y1 = 840
Y2 = 5760
End
Begin VB.Line Line1
Index = 0
X1 = 4440
X2 = 2040
Y1 = 720
Y2 = 2520
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim a
Dim g As map
Dim p1(1 To 10) As Integer '这里计算机名也为数字,用于在D()中做参数
Dim d1(1 To 10) As Integer
Dim v00 As Integer
'这里计算机名为数字,用于P()中做参数!
Private Sub Shortestpath(g As map, v0 As Integer, p() As Integer, d() As Integer) '不让:Type As String * 1 !?;暂时把G当全局!
Dim final(1 To 11) As Integer
Dim v, i, w, min, pre As Integer '究:能代表全是integer?
For v = 1 To 10
final(v) = 0
d(v) = g.edges(v0, v)
p(v0) = -1
If d(v) < 400 And v <> v0 Then
p(v) = v0
End If
If d(v) = 400 Then
p(v) = -2
End If
Next v
'v=20 为了后面的final(v) = 1不越界:好像也不是这样
d(v0) = 0
final(v0) = 1
For i = 1 To 10
min = 400
For w = 1 To 10
If final(w) = 0 And d(w) < min Then '终于找见症结:这里faulse是用0代替而不是<0!
v = w
min = d(w)
End If
Next w
final(v) = 1
For w = 1 To 10
If final(w) = 0 And min + g.edges(v, w) < d(w) Then '此处0待究?
d(w) = min + g.edges(v, w)
p(w) = v
End If
Next w
Next i
List1(v0 - 1).Clear
u = a
For i = 1 To u ' 在特定的PC列表显示相应的陆由,显示a列!
If p(i) = -2 Then
List1(v0 - 1).AddItem i
Else
List1(v0 - 1).AddItem Str$(i) & "L:" & Str$(d(i)) & "R:" & Str$(i) 'chr$是把‘值’转成相应的字符!
pre = p(i)
While pre > 0
List1(v0 - 1).AddItem "<-" & pre
pre = p(pre)
z = z + 1
Wend
End If
Next i
End Sub
Private Sub Command1_Click()
Dim l As Integer
j = Combo1.Text '界面输入的也是1 到10!
k = Combo2.Text
s = Val(Text2.Text)
l = Val(j + k) '线路标号的标准化判断!
m = Val(k + j)
p = Val(j)
q = Val(k)
If l > m And q <> 10 Then '当第二个数字是10时属特殊情况!
p = Val(k)
q = Val(j)
End If
If p = 10 Then
p = Val(k)
q = Val(j)
End If
g.edges(p, q) = s '似乎不能联写!?
g.edges(q, p) = s
If p = 1 Then '在此添加对应线路的显示!
Line1(q - 2).Visible = "True"
ElseIf p = "2" Then '带上“”也却通过了
Line1(6 + q).Visible = "True"
ElseIf p = "3" Then
Line1(13 + q).Visible = "True"
ElseIf p = "4" Then
Line1(19 + q).Visible = "True"
ElseIf p = "5" Then
Line1(24 + q).Visible = "True"
ElseIf p = "6" Then
Line1(28 + q).Visible = "True"
ElseIf p = "7" Then
Line1(31 + q).Visible = "True"
ElseIf p = "8" Then
Line1(33 + q).Visible = "True"
ElseIf p = "9" Then
Line1(34 + q).Visible = "True"
End If
End Sub
Private Sub Command2_Click()
Dim v00 As Integer
Frame2.Visible = True
For v00 = 1 To a '调a次算法,这里a已是10!
Call Shortestpath(g, v00, p1(), d1())
Next v00
End Sub
Private Sub Command3_Click()
Dim l As Integer
j = Combo1.Text '界面输入的也是1 到10!
k = Combo2.Text
l = Val(j + k) '线路标号的标准化判断!
m = Val(k + j)
p = Val(j)
q = Val(k)
If l > m And q <> 10 Then
p = Val(k)
q = Val(j)
End If
g.edges(p, q) = 400
g.edges(q, p) = 400
If p = "1" Then '在此添加对应线路的显示!
Line1(q - 2).Visible = "false"
ElseIf p = "2" Then
Line1(6 + q).Visible = "false"
ElseIf p = "3" Then
Line1(13 + q).Visible = "false"
ElseIf p = "4" Then
Line1(19 + q).Visible = "false"
ElseIf p = "5" Then
Line1(24 + q).Visible = "false"
ElseIf p = "6" Then
Line1(28 + q).Visible = "false"
ElseIf p = "7" Then
Line1(31 + q).Visible = "false"
ElseIf p = "8" Then
Line1(33 + q).Visible = "false"
ElseIf p = "9" Then
Line1(34 + q).Visible = "false"
End If
End Sub
Private Sub Command4_Click()
If a > 9 Then '需改成9!
Exit Sub
End If
Picture1(a).Visible = "True"
Text1(a).Visible = True
a = a + 1 '待究:后面还要-1
End Sub
Private Sub Form_Load()
a = 0
Frame2.Visible = False
Dim i As Integer
Dim j As Integer '在此增加了PC与线的初始化
For i = 0 To 44
Line1(i).Visible = "false"
Next i
For i = 0 To 9
Picture1(i).Visible = "false"
Text1(i).Visible = False
List1(i).BackColor = &H8000000F
Next i
Dim p(1 To 10) As String * 4 '用P代表了C中的LUJING!
g.vert(1) = "PC1"
g.vert(2) = "PC2"
g.vert(3) = "PC3"
g.vert(4) = "PC4"
g.vert(5) = "PC5"
g.vert(6) = "PC6"
g.vert(7) = "PC7"
g.vert(8) = "PC8"
g.vert(9) = "PC9"
g.vert(10) = "PC10"
For i = 1 To 10
For j = 1 To 10
g.edges(i, j) = 400
Next j
Next i
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -