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

📄 yinhan.frm

📁 vb做的银行家算法 
💻 FRM
📖 第 1 页 / 共 2 页
字号:
Private Sub Combo1_Click()
Combo1.Text = Val(Combo1.Text)
If Combo1.Text > Mx Or Combo1.Text < 1 Then
Call MsgBox("对不起,输入的内容非法", vbOKOnly, "错误信息")
Combo1.Text = 1

End If
Label15.Caption = "请求向量进程号为:" & Combo1.Text & ","
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
Label15.Caption = "请求向量进程号为:" & Combo1.Text & ","
End Sub

Private Sub Command1_Click()
  ' Public Ci, Hi As Integer        '     进程数  与作业数
Mx = Val(Text1.Text)
Ax = Val(Text2.Text)
ReDim RR(Ax)

ReDim Sys(Ax)
ReDim rrbak(Ax)
ReDim sysbak(Ax)
ReDim Psafety(Mx)
ReDim maxx(Mx, Ax) As Integer
ReDim Al(Mx, Ax) As Integer
ReDim Need(Mx, Ax) As Integer
Command3.Enabled = True
Text4.Enabled = True

Label22.Caption = Mx & "个"
Label23.Caption = Ax & "个"

  Dim ndd As Integer
For ndd = 1 To Mx
   Combo1.AddItem (LTrim(Str(ndd)))
   Psafety(Mx) = False
   
Next

Label6.Caption = "请输入第" & Ai & "个已分配进程,的第" & Aj & "资源。"
Label7.Caption = "请输入第" & Mi & "个最大须求,的第" & Mj & "资源。"

End Sub



Private Sub Command2_Click()

If Not Val(Text3.Text) > maxx(Ai, Aj) Then

Text3.SetFocus
Al(Ai, Aj) = Val(Text3.Text)
Need(Ai, Aj) = maxx(Ai, Aj) - Val(Text3.Text)

Aj = Aj + 1

If Aj > Ax Then

    Dim ch, ch1 As String
    Dim NNN As Integer
       For NNN = 1 To Ax
         ch = ch + Str(Al(Ai, NNN)) & ","
         ch1 = ch1 + Str(Need(Ai, NNN)) & ","
         
       Next
Aj = 1
Ai = Ai + 1
List1.AddItem (ch)
List3.AddItem (ch1)


End If
If Ai > Mx Then
  Command2.Enabled = False
  
  Label9.Caption = "请输入第1类的资源剩余量"
  
  
End If


Label6.Caption = "请输入第" & Ai & "个已分配进程,的第" & Aj & "资源。"

Else
   Call MsgBox("对不起,您输入的值非法,已分配资源,不能大于最大须求量!!", vbOKOnly, "错误信息")
   
End If
End Sub

Private Sub Command3_Click()
maxx(Mi, Mj) = Val(Text4.Text)
Text4.SetFocus

Mj = Mj + 1

If Mj > Ax Then

    Dim ch As String
    Dim NNN As Integer
       For NNN = 1 To Ax
         ch = ch + Str(maxx(Mi, NNN)) & ","
       Next
Mj = 1
Mi = Mi + 1
List2.AddItem (ch)

End If

If Mi > Mx Then
  Command3.Enabled = False
  Text3.Enabled = True
  
  Command2.Enabled = True

  Command4.Enabled = True
  
End If




Label7.Caption = "请输入第" & Mi & "个最大须求,的第" & Mj & "资源。"
End Sub

Private Sub Command4_Click()

Text5.SetFocus
If Not sysN > Ax Then
  
    Sys(sysN) = Val(Text5.Text)
    sysbak(sysN) = Val(Text5.Text)
    
    SysList = SysList + Text5.Text & ","
    Label11.Caption = SysList
    
   Else
  Command4.Enabled = False
  Text5.Enabled = False
  Command6.Enabled = True
  Frame6.Enabled = True
  
  
End If
  Label9.Caption = "请输入第" & sysN & "类的资源剩余量"
   sysN = sysN + 1
End Sub

Private Sub Command5_Click()
Command2.Enabled = False
Command3.Enabled = False
Command1.Enabled = False
Command4.Enabled = True
Frame6.Enabled = True

Mx = 5
Ax = 4

ReDim Sys(Ax)
ReDim RR(Ax)
ReDim sysbak(Ax)
ReDim rrbak(Ax)
ReDim Psafety(Mx)

ReDim maxx(Mx, Ax) As Integer
ReDim Al(Mx, Ax) As Integer
ReDim Need(Mx, Ax) As Integer
Label22.Caption = Mx & "个"
Label23.Caption = Ax & "个"


Al(1, 1) = 0
Al(1, 2) = 0
Al(1, 3) = 1
Al(1, 4) = 2

Al(2, 1) = 2
Al(2, 2) = 0
Al(2, 3) = 0
Al(2, 4) = 0

Al(3, 1) = 0
Al(3, 2) = 0
Al(3, 3) = 3
Al(3, 4) = 4

Al(4, 1) = 2
Al(4, 2) = 3
Al(4, 3) = 5
Al(4, 4) = 4

Al(5, 1) = 0
Al(5, 2) = 3
Al(5, 3) = 3
Al(5, 4) = 2

maxx(1, 1) = 0
maxx(1, 2) = 0
maxx(1, 3) = 1
maxx(1, 4) = 2

maxx(2, 1) = 2
maxx(2, 2) = 7
maxx(2, 3) = 5
maxx(2, 4) = 0

maxx(3, 1) = 6
maxx(3, 2) = 6
maxx(3, 3) = 5
maxx(3, 4) = 6

maxx(4, 1) = 4
maxx(4, 2) = 3
maxx(4, 3) = 5
maxx(4, 4) = 6

maxx(5, 1) = 0
maxx(5, 2) = 6
maxx(5, 3) = 5
maxx(5, 4) = 2

Call Shaxin
  Dim ndd As Integer
For ndd = 1 To Mx
   Combo1.AddItem (LTrim(Str(ndd)))
   Psafety(Mx) = False
   
Next

Command5.Enabled = False

End Sub

Private Sub Command6_Click()
Text6.SetFocus
If Not rrn > Ax Then
   If Val(Text6.Text) > Sys(rrn) Then
      Call MsgBox("对不起,您输入的请求超过须求量。", vbOKOnly, "错误信息")
      
     Else
    'MsgBox Need(Val(Combo1.Text), rrn)
     
     
     
     
    If Val(Text6.Text) <= Need(Val(Combo1.Text), rrn) Then
       RR(rrn) = Val(Text6.Text)
       jch = Val(Combo1.Text)
       rrbak(rrn) = Val(Text6.Text)
       ' MsgBox "Record" & jch & rrn
         Sys(rrn) = Sys(rrn) - RR(rrn)
         Al(jch, rrn) = Al(jch, rrn) + RR(rrn)
         Need(jch, rrn) = Need(jch, rrn) - RR(rrn)
         
      '   MsgBox Al(jch, rnn)
       Call Shaxin
         Dim a As Integer
         Dim ss As String
         
         
            Label11.Caption = ""
            ss = ""
           For a = 1 To rrn
              ss = Sys(a) & ","
              Label11.Caption = Label11.Caption + ss
           Next
       
           
           
            
         
       rrn = rrn + 1
       Label16.Caption = Label16.Caption + Str(Text6.Text) & ","
       Label14.Caption = "第" & rrn & "个资源请求"
       Text6.Text = 0
       Combo1.Enabled = False
       
     Else
       Call MsgBox("对不起,系统资源不足......", vbOKOnly, "错误信息")
    End If
   End If
  '  SysList = SysList + Text6.Text & ","
 
    
   Else
  Command4.Enabled = False
  Text5.Enabled = False
  Combo1.Enabled = True
  Command7.Enabled = True
  Command6.Enabled = False
  
  
  
  
  
End If
 ' Label9.Caption = "请输入第" & sysN & "类的资源剩余量"
   
End Sub

Private Sub Command7_Click()
Call SafethText
Command7.Enabled = False


End Sub

Private Sub Command8_Click()
Call Command5_Click
  Dim di As Integer
     For di = 1 To Ax
 '    MsgBox sysbak(di)
        Sys(di) = sysbak(di)
        RR(di) = rrbak(di)
     Next
     
     Call Shaxin
     
End Sub

Private Sub Form_Load()
Ai = 1
Aj = 1
Mi = 1
Mj = 1
sysN = 1
rrn = 1
Command4.Enabled = False
End Sub

Private Sub AddValue()


End Sub
Private Sub Shaxin()
Dim i, j As Integer
List1.Clear
List2.Clear
List3.Clear

Dim chd, chd1, chd2 As String
   For i = 1 To Mx
      For j = 1 To Ax
         chd = chd + Str(maxx(i, j)) & ","     '   maxx
        chd1 = chd1 + Str(Al(i, j)) & ","     '   al
        Need(i, j) = maxx(i, j) - Al(i, j)
        chd2 = chd2 + Str(Need(i, j)) & ","
    
      Next

      
      
      List2.AddItem (chd)
      List1.AddItem (chd1)
      List3.AddItem (chd2)
      j = 1
      chd = ""
      chd1 = ""
      chd2 = ""
   Next
   
                           Dim baki As Integer
                         Label11.Caption = ""
                         For baki = 1 To Ax
                             ss = Sys(baki) & ","
                             Label11.Caption = Label11.Caption + ss
                            
                         Next
   
   
   
End Sub

Private Sub Label19_Click()
Unload yinhan

End Sub

Private Sub SafethText()     '
  List4.Clear
  
  Dim P, pp As Integer
  Dim jjj As Integer
  Dim ok, Okend As Integer
  Dim st, ss As String
  
      ok = 1
      Okend = Mx    '   控制转向
  
      P = 1
      While P <= Mx
    
  '  MsgBox "P=" & P & ok
      If Psafety(P) = False Then
         For jjj = 1 To Ax
         
             If Sys(jjj) < Need(P, jjj) Then
                ok = 2
             End If
         Next
         Else
         ok = 1
         
      End If
              If ok = 2 Or Psafety(P) = True Then
                '  Psafety(P) = False                    '     分配失败
                '    st = "进程(" & P & ")=False"
             '       List4.AddItem (st)
             
                    Else
                     If Psafety(P) = False Then
                     
                        Psafety(P) = True                   '   分配成功
                        st = "进程(" & P & ")=True"
                        List4.AddItem (st)
                        Dim baki As Integer
                         Label11.Caption = ""
                         For baki = 1 To Ax
                            Sys(baki) = Sys(baki) + Al(P, baki)
                             ss = Sys(baki) & ","
                             Label11.Caption = Label11.Caption + ss
                            
                         Next
                        ' MsgBox ("进程安全执")
                     End If
               End If
                       ok = 1
               If P = Mx And Okend > 1 Then
                  P = 1
                  Okend = Okend - 1
               End If
               
               
           '     Exit If P
                
   
                P = P + 1
    Wend               ' Next p
    
      
End Sub

Private Sub Text3_Change()
Text3.Text = Val(Text3.Text)
End Sub

Private Sub Text4_Change()

Text4.Text = Val(Text4.Text)

End Sub

Private Sub Text5_Change()
Text5.Text = Val(Text5.Text)
End Sub

Private Sub Text6_Change()
Text6.Text = Val(Text6.Text)
End Sub

⌨️ 快捷键说明

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