📄 form1.vb
字号:
Public Class Form1
Public Structure process '定义进程数据结构
Dim proname As String
Dim createtime As String
Dim proid As Integer
Dim allneedtime As Integer
Dim flishtime As Integer
End Structure
Public h As Integer = 0 '定义就绪和阻塞队列和执行进程
Public runing As process
Public wait(9), signal(9) As process
Sub tianjia() '添加进程程序
Dim i, j, k As Integer
Dim n, p As String
Dim m As Double
Dim d As Date = Date.Now
Dim s As String = d.ToLongTimeString()
j = 10
For i = 0 To 9
If wait(i).proid <> 0 Then
j -= 1
End If
Next
If j = 0 Then
MsgBox("注意!" & Chr(10) & "就绪队列已满,不能再添加进程!", MsgBoxStyle.OkOnly, "警告!")
TextBox1.Text = ""
TextBox3.Text = ""
Exit Sub
Else
For i = 0 To 9
If wait(i).proid = 0 Then
p = TextBox1.Text
n = TextBox3.Text
m = Val(n)
k = m \ 2
j = (m + 1) \ 2
If TextBox1.Text = "" Then
MsgBox("注意!" & Chr(10) & "进程名不能为空,请重输!", MsgBoxStyle.OkOnly, "错误!")
TextBox1.Text = ""
TextBox3.Text = ""
TextBox1.Focus()
Exit Sub
ElseIf Len(p) > 8 Then
MsgBox("注意!" & Chr(10) & "进程名长度不能长于8,请重输1~8长度的进程名!", MsgBoxStyle.OkOnly, "错误!")
TextBox1.Text = ""
TextBox3.Text = ""
TextBox1.Focus()
Exit Sub
ElseIf TextBox3.Text = "" Then
MsgBox("注意!" & Chr(10) & "进程执行时间不能为空,请重输!", MsgBoxStyle.OkOnly, "错误!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
ElseIf m > 1000000000 Then
MsgBox("注意!" & Chr(10) & "进程执行时间超出范围,请重输!", MsgBoxStyle.OkOnly, "错误!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
ElseIf (k * 2 = m Or j * 2 = m + 1) And m > 0 Then
wait(i).proname = TextBox1.Text
wait(i).createtime = s
wait(i).allneedtime = m
h += 1
wait(i).proid = h
TextBox1.Text = ""
TextBox3.Text = ""
Else
MsgBox("注意!" & Chr(10) & "进程执行时间必须是大于零的整数,请重输!", MsgBoxStyle.OkOnly, "错误!")
TextBox3.Text = ""
TextBox3.Focus()
Exit Sub
End If
Exit For
End If
Next
End If
TextBox4.Text = ""
For i = 0 To 9
If wait(i).proid <> 0 Then
TextBox4.Text += "进程:" + wait(i).proname + ".exe 进程标示符:" + wait(i).proid.ToString + " 创建时间:" + wait(i).createtime + " 总需运行时间:" + wait(i).allneedtime.ToString + "秒 已运行时间:" + wait(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
If TextBox5.Text = "" Then
zhixing()
Else
MsgBox("注意!" & Chr(10) & "已有进程正在执行,进程被系统插入就绪队列!", MsgBoxStyle.OkOnly, "提示!")
Exit Sub
End If
End Sub
Sub zhixing() '启动执进程行程序
Dim i As Integer
If wait(0).proid <> 0 Then
runing = wait(0)
For i = 0 To 8
wait(i) = wait(i + 1)
Next
wait(9).allneedtime = 0
wait(9).createtime = ""
wait(9).flishtime = 0
wait(9).proname = ""
wait(9).proid = 0
TextBox4.Text = ""
For i = 0 To 9
If wait(i).proid <> 0 Then
TextBox4.Text += "进程:" + wait(i).proname + ".exe 进程标示符:" + wait(i).proid.ToString + " 创建时间:" + wait(i).createtime + " 需要运行时间:" + wait(i).allneedtime.ToString + "秒 已运行时间:" + wait(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
yunxing()
Else
TextBox4.Text = "所有的就绪进程都已执行完了,请添加进程、唤醒阻塞进程或退出程序!"
Exit Sub
End If
End Sub
Sub yunxing() '正在执行进程程序
TextBox5.Text = "进程:" + runing.proname + ".exe 进程标示符:" + runing.proid.ToString + " 创建时间:" + runing.createtime + " 需要运行时间:" + runing.allneedtime.ToString + "秒 已运行时间:" + runing.flishtime.ToString + "秒。" + vbCrLf
Timer1.Start()
End Sub
Sub shijian() '时间变化程序
runing.flishtime += 1
TextBox5.Text = "进程:" + runing.proname + ".exe 进程标示符:" + runing.proid.ToString + " 创建时间:" + runing.createtime + " 需要运行时间:" + runing.allneedtime.ToString + "秒 已运行时间:" + runing.flishtime.ToString + "秒。" + vbCrLf
If runing.allneedtime = runing.flishtime Then
flish()
TextBox5.Text = ""
Timer1.Stop()
zhixing()
End If
End Sub
Sub flish() '进程完成时显示程序
TextBox6.Text += "进程:" + runing.proname + ".exe 进程标示符:" + runing.proid.ToString + " 创建时间:" + runing.createtime + " 需要运行时间:" + runing.allneedtime.ToString + "秒 已运行时间:" + runing.flishtime.ToString + "秒。" + vbCrLf
runing.allneedtime = 0
runing.createtime = ""
runing.flishtime = 0
runing.proid = 0
runing.proname = ""
End Sub
Sub zusai() '进程阻塞程序
Dim i, j, k As Integer
If TextBox5.Text = "" Then
MsgBox("注意!" & Chr(10) & "当前没有正在执行的进程,不能阻塞正在执行的进程!", MsgBoxStyle.OkOnly, "错误!")
Exit Sub
End If
j = 10
For i = 0 To 9
If signal(i).proid <> 0 Then
j -= 1
End If
Next
If j = 0 Then
MsgBox("注意!" & Chr(10) & "阻塞队列已满,不能再添加到阻塞队列!", MsgBoxStyle.OkOnly, "警告!")
Exit Sub
Else
For i = 0 To 9
If signal(i).proid = 0 Then
signal(i) = runing
Exit For
End If
Next
Timer1.Stop()
TextBox7.Text = ""
For k = 0 To 9
If signal(k).proid <> 0 Then
TextBox7.Text += "进程:" + signal(k).proname + ".exe 进程标示符:" + signal(k).proid.ToString + " 创建时间:" + signal(k).createtime + " 需要运行时间:" + signal(k).allneedtime.ToString + "秒 已运行时间:" + signal(k).flishtime.ToString + "秒。" + vbCrLf
End If
Next
TextBox5.Text = ""
zhixing()
End If
End Sub
Sub huanxing() '唤醒进程程序
Dim i As Integer
If signal(0).proid = 0 Then
MsgBox("注意!" & Chr(10) & "阻塞队列已空,不能再唤醒阻塞进程!", MsgBoxStyle.OkOnly, "警告!")
ElseIf wait(9).proid <> 0 Then
MsgBox("注意!" & Chr(10) & "就绪队列已满,不能再唤醒阻塞进程!", MsgBoxStyle.OkOnly, "警告!")
Else
For i = 0 To 9
If wait(i).proid = 0 Then
wait(i) = signal(0)
Exit For
End If
Next
For i = 0 To 8
signal(i) = signal(i + 1)
Next
signal(9).allneedtime = 0
signal(9).createtime = ""
signal(9).flishtime = 0
signal(9).proname = ""
signal(9).proid = 0
TextBox4.Text = ""
For i = 0 To 9
If wait(i).proid <> 0 Then
TextBox4.Text += "进程:" + wait(i).proname + ".exe 进程标示符:" + wait(i).proid.ToString + " 创建时间:" + wait(i).createtime + " 总需运行时间:" + wait(i).allneedtime.ToString + "秒 已运行时间:" + wait(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
TextBox7.Text = ""
For i = 0 To 9
If signal(i).proid <> 0 Then
TextBox7.Text += "进程:" + signal(i).proname + ".exe 进程标示符:" + signal(i).proid.ToString + " 创建时间:" + signal(i).createtime + " 需要运行时间:" + signal(i).allneedtime.ToString + "秒 已运行时间:" + signal(i).flishtime.ToString + "秒。" + vbCrLf
End If
Next
End If
If TextBox5.Text = "" Then
zhixing()
End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
tianjia()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer '初始化队列
runing.allneedtime = 0
runing.createtime = ""
runing.flishtime = 0
runing.proid = 0
runing.proname = ""
For i = 0 To 9
wait(i).allneedtime = 0
wait(i).createtime = ""
wait(i).flishtime = 0
wait(i).proid = 0
wait(i).proname = ""
signal(i).allneedtime = 0
signal(i).createtime = ""
signal(i).flishtime = 0
signal(i).proid = 0
signal(i).proname = ""
Next
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
huanxing()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
zusai()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
shijian()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -