⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form4.frm

📁 我用VB做的一个校园导游系统!界面友好
💻 FRM
📖 第 1 页 / 共 2 页
字号:
 Next js
 

'定义原始数据
Dim a(12, 12) As Integer
For i = 1 To 12
  For j = 1 To 12
  a(i, j) = MAX
  Next j
  Next i
a(1, 2) = 5
a(2, 1) = 5
a(1, 6) = 4
a(6, 1) = 4
a(1, 7) = 3
a(7, 1) = 3
a(2, 3) = 2
a(3, 2) = 2
a(3, 4) = 2
a(4, 3) = 2
a(3, 5) = 4
a(5, 3) = 4
a(5, 10) = 6
a(10, 5) = 6
a(6, 7) = 5
a(7, 6) = 5
a(6, 8) = 3
a(8, 6) = 3
a(7, 8) = 4
a(8, 7) = 4
a(7, 11) = 2
a(11, 7) = 2
a(7, 12) = 2
a(12, 7) = 2
a(8, 9) = 3
a(9, 8) = 3
a(9, 10) = 3
a(10, 9) = 3
a(10, 11) = 1
a(11, 10) = 1

'两点间最短距离算法
  Select Case Form1.Text2.Text
    Case Is = "大门"
      n = 1
    Case Is = "食堂"
      n = 2
    Case Is = "图书馆"
      n = 3
    Case Is = "滨河公园"
      n = 4
    Case Is = "宿舍楼"
      n = 5
    Case Is = "报告厅"
      n = 6
    Case Is = "喷泉"
      n = 7
    Case Is = "教学楼"
      n = 8
    Case Is = "商店"
      n = 9
    Case Is = "运动场"
      n = 10
    Case Is = "实验楼"
      n = 11
    Case Is = "物理实验楼"
      n = 12
  End Select
  
  Select Case Form1.Text3.Text
    Case Is = "大门"
      m = 1
    Case Is = "食堂"
      m = 2
    Case Is = "图书馆"
      m = 3
    Case Is = "滨河公园"
      m = 4
    Case Is = "宿舍楼"
      m = 5
    Case Is = "报告厅"
      m = 6
    Case Is = "喷泉"
      m = 7
    Case Is = "教学楼"
      m = 8
    Case Is = "商店"
      m = 9
    Case Is = "运动场"
      m = 10
    Case Is = "实验楼"
      m = 11
    Case Is = "物理实验楼"
      m = 12
  End Select
   
  drawline(1) = n
  
  Dim jingguo(1 To 12, 1 To 11) As Integer  '跟踪记录关键行产生是的经过点
For i = 1 To 12
 For j = 1 To 11
 jingguo(i, j) = MAX
 Next j
 Next i
For i = 1 To 12
jingguo(i, 1) = 0 '0作为记录尾的标志
Next i
For i = 1 To 12  '转移关键行数值
 dist(i) = a(n, i)
  s(i) = 0
 Next i
 s(n) = 1   '去处起始点
 For i = 1 To 12
 
 min_dist = MAX

 
 For j = 1 To 12       '取得关键行最小值
 If s(j) = 0 And dist(j) < min_dist Then
  u = j
  min_dist = dist(j)
  End If
 Next j
 
 s(u) = 1
 
 For j = 1 To 12
  If s(j) = 0 Then
   dis = dist(u) + a(u, j)
    If dis > dist(j) Then
     dist(j) = dist(j)
     Else: dist(j) = dis
     For k = 1 To 11
     jingguo(j, k) = jingguo(u, k)
     If jingguo(j, k) = 0 Then
     jingguo(j, k) = u
     jingguo(j, k + 1) = 0
     GoTo loop1
     End If
     Next k
     End If
loop1: End If
  Next j
  Next i
  Text1.Text = Form1.Text2.Text
  i = 1
  js = 2
  Do While jingguo(m, i) > 0
    Select Case jingguo(m, i)
      Case Is = 1
        Text1.Text = Text1.Text & "-->" & "大门"
        drawline(js) = 1
        js = js + 1
      Case Is = 2
        Text1.Text = Text1.Text & "-->" & "食堂"
        drawline(js) = 2
        js = js + 1
      Case Is = 3
        Text1.Text = Text1.Text & "-->" & "图书馆"
        drawline(js) = 3
        js = js + 1
      Case Is = 4
        Text1.Text = Text1.Text & "-->" & "滨河公园"
        drawline(js) = 4
        js = js + 1
      Case Is = 5
        Text1.Text = Text1.Text & "-->" & "宿舍楼"
        drawline(js) = 5
        js = js + 1
      Case Is = 6
        Text1.Text = Text1.Text & "-->" & "报告厅"
        drawline(js) = 6
        js = js + 1
      Case Is = 7
        Text1.Text = Text1.Text & "-->" & "喷泉"
        drawline(js) = 7
        js = js + 1
      Case Is = 8
        Text1.Text = Text1.Text & "-->" & "教学楼"
        drawline(js) = 8
        js = js + 1
      Case Is = 9
        Text1.Text = Text1.Text & "-->" & "商店"
        drawline(js) = 9
        js = js + 1
      Case Is = 10
        Text1.Text = Text1.Text & "-->" & "运动场"
        drawline(js) = 10
        js = js + 1
      Case Is = 11
        Text1.Text = Text1.Text & "-->" & "实验楼"
        drawline(js) = 11
        js = js + 1
      Case Is = 12
        Text1.Text = Text1.Text & "-->" & "物理实验楼"
        drawline(js) = 12
        js = js + 1
    End Select
    i = i + 1
  Loop
  Text1.Text = Text1.Text & "-->" & Form1.Text3.Text
  Text1.Text = Text1.Text & Chr(13) + Chr(10) + "总路程为:" & dist(m) * 40 & "米"
  
  '在主窗口画出路径
  Form1.Picture1.Cls
  drawline(js) = m
  js = 1
  Do While drawline(js) > 0
    If drawline(js) = 1 Then
      Select Case drawline(js + 1)
        Case Is = 2
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label10.Left + 200, Form1.Label10.Top - 150)
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label10.Left + 300, Form1.Label10.Top - 250)
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label10.Left + 300, Form1.Label10.Top - 50)
        Case Is = 6
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label12.Left - 100, Form1.Label12.Top + 100)
          Form1.Picture1.Line (Form1.Label12.Left - 100, Form1.Label12.Top + 100)-(Form1.Label12.Left - 200, Form1.Label12.Top + 200)
          Form1.Picture1.Line (Form1.Label12.Left - 100, Form1.Label12.Top + 100)-(Form1.Label12.Left - 200, Form1.Label12.Top)
        Case Is = 7
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label15.Left + 60, Form1.Label15.Top)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 200, Form1.Label15.Top + 150)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left - 80, Form1.Label15.Top + 150)
      End Select
    ElseIf drawline(js) = 2 Then
      Select Case drawline(js + 1)
        Case Is = 1
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label11.Left - 300, Form1.Label11.Top - 130)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 400, Form1.Label11.Top - 30)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 400, Form1.Label11.Top - 230)
        Case Is = 3
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label13.Left + 550, Form1.Label13.Top - 160)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 450, Form1.Label13.Top - 60)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 650, Form1.Label13.Top - 60)
      End Select
    ElseIf drawline(js) = 3 Then
      Select Case drawline(js + 1)
        Case Is = 4
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label16.Left + 500, Form1.Label16.Top + 500)
          Form1.Picture1.Line (Form1.Label16.Left + 500, Form1.Label16.Top + 500)-(Form1.Label16.Left + 600, Form1.Label16.Top + 400)
          Form1.Picture1.Line (Form1.Label16.Left + 500, Form1.Label16.Top + 500)-(Form1.Label16.Left + 600, Form1.Label16.Top + 600)
        Case Is = 2
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label10.Left + 200, Form1.Label10.Top - 150)
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label10.Left + 100, Form1.Label10.Top - 250)
          Form1.Picture1.Line (Form1.Label10.Left + 200, Form1.Label10.Top - 150)-(Form1.Label10.Left + 300, Form1.Label10.Top - 250)
        Case Is = 5
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label14.Left + 450, Form1.Label14.Top + 590)
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label14.Left + 350, Form1.Label14.Top + 690)
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label14.Left + 550, Form1.Label14.Top + 690)
      End Select
    ElseIf drawline(js) = 4 Then
      Select Case drawline(js + 1)
        Case Is = 3
          Form1.Picture1.Line (Form1.Label16.Left + 500, Form1.Label16.Top + 500)-(Form1.Label13.Left + 550, Form1.Label13.Top - 160)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 450, Form1.Label13.Top - 60)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 450, Form1.Label13.Top - 260)
      End Select
    ElseIf drawline(js) = 5 Then
      Select Case drawline(js + 1)
        Case Is = 10
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label5.Left + 370, Form1.Label5.Top + 450)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 270, Form1.Label5.Top + 350)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 270, Form1.Label5.Top + 550)
        Case Is = 3
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label13.Left + 550, Form1.Label13.Top - 160)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 450, Form1.Label13.Top - 260)
          Form1.Picture1.Line (Form1.Label13.Left + 550, Form1.Label13.Top - 160)-(Form1.Label13.Left + 650, Form1.Label13.Top - 260)
      End Select
    ElseIf drawline(js) = 6 Then
      Select Case drawline(js + 1)
        Case Is = 1
          Form1.Picture1.Line (Form1.Label12.Left - 100, Form1.Label12.Top + 100)-(Form1.Label11.Left - 300, Form1.Label11.Top - 130)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 200, Form1.Label11.Top - 230)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 200, Form1.Label11.Top - 30)
        Case Is = 7
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 120)-(Form1.Label15.Left + 60, Form1.Label15.Top)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 260, Form1.Label15.Top - 30)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 200, Form1.Label15.Top + 230)
        Case Is = 8
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 100)-(Form1.Label8.Left + 680, Form1.Label8.Top + 600)
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label8.Left + 580, Form1.Label8.Top + 700)
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label8.Left + 780, Form1.Label8.Top + 700)
      End Select
     ElseIf drawline(js) = 7 Then
      Select Case drawline(js + 1)
        Case Is = 1
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label11.Left - 300, Form1.Label11.Top - 130)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 200, Form1.Label11.Top - 230)
          Form1.Picture1.Line (Form1.Label11.Left - 300, Form1.Label11.Top - 130)-(Form1.Label11.Left - 400, Form1.Label11.Top - 230)
        Case Is = 6
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label12.Left + 200, Form1.Label12.Top - 120)
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 120)-(Form1.Label12.Left + 100, Form1.Label12.Top - 80)
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 120)-(Form1.Label12.Left + 130, Form1.Label12.Top - 240)
        Case Is = 8
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label8.Left + 300, Form1.Label8.Top + 550)
          Form1.Picture1.Line (Form1.Label8.Left + 300, Form1.Label8.Top + 550)-(Form1.Label8.Left + 200, Form1.Label8.Top + 450)
          Form1.Picture1.Line (Form1.Label8.Left + 300, Form1.Label8.Top + 550)-(Form1.Label8.Left + 200, Form1.Label8.Top + 650)
        Case Is = 11
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label7.Left + 300, Form1.Label7.Top + 250)
          Form1.Picture1.Line (Form1.Label7.Left + 300, Form1.Label7.Top + 250)-(Form1.Label7.Left + 200, Form1.Label7.Top + 350)
          Form1.Picture1.Line (Form1.Label7.Left + 300, Form1.Label7.Top + 250)-(Form1.Label7.Left + 400, Form1.Label7.Top + 350)
        Case Is = 12
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label9.Left + 400, Form1.Label9.Top + 850)
          Form1.Picture1.Line (Form1.Label9.Left + 400, Form1.Label9.Top + 850)-(Form1.Label9.Left + 500, Form1.Label9.Top + 750)
          Form1.Picture1.Line (Form1.Label9.Left + 400, Form1.Label9.Top + 850)-(Form1.Label9.Left + 500, Form1.Label9.Top + 950)
      End Select
    ElseIf drawline(js) = 8 Then
      Select Case drawline(js + 1)
        Case Is = 6
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label12.Left + 200, Form1.Label12.Top - 100)
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 100)-(Form1.Label12.Left + 100, Form1.Label12.Top - 200)
          Form1.Picture1.Line (Form1.Label12.Left + 200, Form1.Label12.Top - 100)-(Form1.Label12.Left + 300, Form1.Label12.Top - 200)
        Case Is = 7
          Form1.Picture1.Line (Form1.Label8.Left + 300, Form1.Label8.Top + 550)-(Form1.Label15.Left + 60, Form1.Label15.Top)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 260, Form1.Label15.Top + 50)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 160, Form1.Label15.Top - 150)
        Case Is = 9
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label6.Left + 550, Form1.Label6.Top + 580)
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label6.Left + 450, Form1.Label6.Top + 680)
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label6.Left + 650, Form1.Label6.Top + 680)
      End Select
    ElseIf drawline(js) = 9 Then
      Select Case drawline(js + 1)
        Case Is = 8
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label8.Left + 680, Form1.Label8.Top + 600)
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label8.Left + 580, Form1.Label8.Top + 500)
          Form1.Picture1.Line (Form1.Label8.Left + 680, Form1.Label8.Top + 600)-(Form1.Label8.Left + 780, Form1.Label8.Top + 500)
        Case Is = 10
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label5.Left + 370, Form1.Label5.Top + 450)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 470, Form1.Label5.Top + 350)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 470, Form1.Label5.Top + 550)
      End Select
     ElseIf drawline(js) = 10 Then
      Select Case drawline(js + 1)
        Case Is = 5
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label14.Left + 450, Form1.Label14.Top + 590)
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label14.Left + 550, Form1.Label14.Top + 490)
          Form1.Picture1.Line (Form1.Label14.Left + 450, Form1.Label14.Top + 590)-(Form1.Label14.Left + 550, Form1.Label14.Top + 690)
        Case Is = 11
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label7.Left + 250, Form1.Label7.Top - 20)
          Form1.Picture1.Line (Form1.Label7.Left + 250, Form1.Label7.Top - 20)-(Form1.Label7.Left + 150, Form1.Label7.Top - 120)
          Form1.Picture1.Line (Form1.Label7.Left + 250, Form1.Label7.Top - 20)-(Form1.Label7.Left + 350, Form1.Label7.Top - 120)
        Case Is = 9
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label6.Left + 550, Form1.Label6.Top + 580)
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label6.Left + 450, Form1.Label6.Top + 480)
          Form1.Picture1.Line (Form1.Label6.Left + 550, Form1.Label6.Top + 580)-(Form1.Label6.Left + 450, Form1.Label6.Top + 680)
      End Select
    ElseIf drawline(js) = 11 Then
      Select Case drawline(js + 1)
        Case Is = 10
          Form1.Picture1.Line (Form1.Label7.Left + 250, Form1.Label7.Top - 20)-(Form1.Label5.Left + 370, Form1.Label5.Top + 450)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 270, Form1.Label5.Top + 550)
          Form1.Picture1.Line (Form1.Label5.Left + 370, Form1.Label5.Top + 450)-(Form1.Label5.Left + 470, Form1.Label5.Top + 550)
        Case Is = 7
          Form1.Picture1.Line (Form1.Label7.Left + 300, Form1.Label7.Top + 250)-(Form1.Label15.Left + 60, Form1.Label15.Top)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left + 160, Form1.Label15.Top - 150)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left - 40, Form1.Label15.Top - 150)
      End Select
    ElseIf drawline(js) = 12 Then
      Select Case drawline(js + 1)
        Case Is = 7
          Form1.Picture1.Line (Form1.Label9.Left + 400, Form1.Label9.Top + 850)-(Form1.Label15.Left + 60, Form1.Label15.Top)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left - 100, Form1.Label15.Top + 100)
          Form1.Picture1.Line (Form1.Label15.Left + 60, Form1.Label15.Top)-(Form1.Label15.Left - 100, Form1.Label15.Top - 100)
      End Select
    End If
    js = js + 1
  Loop
End Sub

Private Sub Command3_Click()
  Unload Form4
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -