📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, Gauges, ComCtrls;
type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Label4: TLabel;
Edit2: TEdit;
Label5: TLabel;
Edit3: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button1: TButton;
Button2: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Button3: TButton;
Memo1: TMemo;
Memo2: TMemo;
N3: TMenuItem;
Label6: TLabel;
Edit4: TEdit;
Label7: TLabel;
Gauge1: TGauge;
N4: TMenuItem;
procedure N1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:integer;
a:array[1..10] of integer;
sub:array[1..10] of integer;
pro:array[1..10] of string;
time:array[1..10] of integer;
time_pie: integer;
implementation
{$R *.dfm}
procedure TForm1.N1Click(Sender: TObject);
begin
application.Terminate ;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
k: integer;
begin
if edit1.Text ='' then
begin
showmessage('进程名不能为空');
end
else
begin
if edit2.Text ='' then
showmessage('优先级不能为空')
else
begin
if edit3.Text ='' then
showmessage('运行时间不能为空')
else
begin
if edit4.Text ='' then
showmessage('时间片不能为空')
else
begin
if radiobutton1.Checked then
begin
if i=1 then
begin
pro[i]:= Edit1.Text;
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end
else
begin
for k:=1 to i do
begin
if pro[k]= Edit1.Text then
begin
Break;
end;
end;
if k<=i then
begin
ShowMessage('该进程已经存在,请输入一个新的进程名!');
end
else
begin
pro[i]:= Edit1.Text;
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end;
end ;
end;
if radiobutton2.Checked then
begin
if i=1 then
begin
pro[i]:= Edit1.Text;
a[i]:= strtoint(Edit2.Text);
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end
else
begin
for k:=1 to i do
begin
if pro[k]= Edit1.Text then
begin
Break;
end;
end;
if k<=i then
begin
ShowMessage('该进程已经存在,请输入一个新的进程名!');
end
else
begin
pro[i]:= Edit1.Text;
a[i]:= strtoint(Edit2.Text);
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end;
end ;
end;
if radiobutton3.Checked then
begin
if i=1 then
begin
pro[i]:= Edit1.Text;
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end
else
begin
for k:=1 to i do
begin
if pro[k]= Edit1.Text then
begin
Break;
end;
end;
if k<=i then
begin
ShowMessage('该进程已经存在,请输入一个新的进程名!');
end
else
begin
pro[i]:= Edit1.Text;
time[i]:= strtoint(Edit3.Text);
Memo1.lines.Add(Edit1.Text+'-----'+Edit2.Text+'-----'+Edit3.Text);
i:=i+1;
end;
end ;
end;
end;
end;
end;
end;
end; //添加程序设计完毕
procedure TForm1.Button2Click(Sender: TObject);
var
y : integer;
begin
for y:=1 to 10 do
begin
pro[y]:='0';
end;
i:=1;
memo1.Clear;
memo2.Clear;
//gauge1.Progress:=0;
memo1.Lines.Add('进程名---优先级---执行时间');
memo2.Lines.Add('进程名---优先级---执行时间');
end; //清除程序设计完毕
procedure TForm1.Button3Click(Sender: TObject);
var
m: integer;
min:integer;
n:integer;
x:integer;
max_time:integer;
time_num:integer;
flag:array[1..10] of integer;
k:integer;
begin
for n:= 1 to 10 do
begin
flag[n]:=1;
end;
if radiobutton1.Checked then
begin
for n:=1 to i-1 do
begin
gauge1.Progress:=0;
for k:=0 to 100 do
begin
gauge1.Progress := k;
sleep(time[n]);
end;
Memo2.Lines.Add(Memo1.Lines[n]);
end;
for x:=1 to i-1 do
begin
pro[x]:='0';
time[x]:=0;
end;
i:=1;
gauge1.Progress:=0;
end;
if radiobutton2.Checked then
begin
begin
for n:=1 to i-1 do
begin
min:=1;
for m:=1 to i-1 do
begin
if a[m]<a[min] then min:=m;
end;
sub[n]:=min;
a[min]:=65535;
end;
end;
for n:=1 to i-1 do
begin
gauge1.Progress:=0;
for k:=0 to 100 do
begin
Gauge1.Progress :=k;
sleep(time[sub[n]]);
end;
Memo2.Lines.Add(Memo1.Lines[sub[n]]);
end;
for x:=1 to i-1 do
begin
pro[x]:='0';
a[x]:=0;
sub[x]:=0;
time[x]:=0;
end;
i:=1;
gauge1.Progress:=0;
end;
if radiobutton3.Checked then
begin
time_pie:=strtoint(Edit4.Text);
max_time:=1;
for n:=1 to i-1 do
begin
if time[max_time]<time[n] then
begin
max_time:=n;
end;
end;
time_num:=(time[max_time] div time_pie);
if (time[max_time] mod time_pie) <> 0 then
begin
time_num:=time_num+1;
end;
for n:=1 to time_num do
begin
gauge1.Progress:=0;
for k:=0 to 100 do
begin
gauge1.Progress:=k;
sleep(strtoint(edit4.Text));
end;
memo2.Lines.Add('第'+inttostr(n)+'个时间片后完成的进程');
for x:=1 to i-1 do
begin
if flag[x]<>0 then
begin
if time[x]<=n*time_pie then
begin
Memo2.Lines.Add(memo1.Lines[x]);
flag[x]:=0;
end ;
end;
end;
Memo2.Lines.Add('----------------');
gauge1.Progress:=0;
end;
for x:=1 to i-1 do
begin
pro[x]:='0';
time[x]:=0;
flag[x]:=1;
end;
i:=1;
end;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
var
x:integer;
begin
for x:=1 to 10 do
begin
pro[x]:='0';
time[x]:=0;
end;
i:=1;
Edit1.Enabled:=true;
//Edit2.Enabled:=false;
edit2.Visible :=false;
form1.Label4.Visible :=false;
Edit3.Enabled:=true;
//Edit4.Enabled:=false;
Edit1.Text:='1';
Edit2.Text:='1';
Edit3.Text:='50';
Edit4.Text:='20';
memo1.Clear;
memo2.Clear;
memo1.Lines.Add('进程名---优先级---执行时间');
memo2.Lines.Add('进程名---优先级---执行时间');
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
var
x:integer;
begin
for x:=1 to 10 do
begin
pro[x]:='0';
time[x]:=0;
end;
i:=1;
Edit1.Enabled:=true;
edit2.Visible :=true;
form1.Label4.Visible :=true;
Edit2.Enabled:=true;
Edit3.Enabled:=true;
//Edit4.Enabled:=false;
edit4.Visible :=false;
form1.Label6.Visible :=false;
Edit1.Text:='1';
Edit2.Text:='1';
Edit3.Text:='50';
Edit4.Text:='20';
memo1.Clear;
memo2.Clear;
memo1.Lines.Add('进程名---优先级---执行时间');
memo2.Lines.Add('进程名---优先级---执行时间');
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
var
x: integer;
begin
for x:=1 to 10 do
begin
pro[x]:='0';
time[x]:=0;
end;
i:=1;
Edit1.Enabled:=true;
//Edit2.Enabled:=false;
edit2.Visible :=false;
form1.Label4.Visible :=false;
edit4.Visible :=true;
form1.Label6.Visible :=true;
Edit3.Enabled:=true;
Edit4.Enabled:=true;
Edit1.Text:='1';
Edit2.Text:='1';
Edit3.Text:='50';
Edit4.Text:='20';
memo1.Clear;
memo2.Clear;
memo1.Lines.Add('进程名---优先级---执行时间');
memo2.Lines.Add('进程名---优先级---执行时间');
end;
procedure TForm1.N3Click(Sender: TObject);
begin
ShowMessage('程序授权使用!');
end;
procedure TForm1.N2Click(Sender: TObject);
begin
ShowMessage('先选择算法,然后输入进程信息/在一次时间片调度过程中,保证时间片不变');
end;
procedure TForm1.N4Click(Sender: TObject);
begin
showmessage('2005级信息工程1班 ');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -