📄 yinhan.frm
字号:
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 + -