转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
模拟进程调度(delphi写的)         ★★★★

模拟进程调度(delphi写的)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1849 更新时间:2009/4/23 18:26:30

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, ExtCtrls, Grids, Calendar, Gauges, jpeg;

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Shape2: TShape;
    Shape3: TShape;
    Shape4: TShape;
    Shape5: TShape;
    Shape6: TShape;
    Shape7: TShape;
    Shape8: TShape;
    Shape9: TShape;
    Shape10: TShape;
    Shape11: TShape;
    Shape12: TShape;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Edit15: TEdit;
    Edit16: TEdit;
    Edit17: TEdit;
    Edit18: TEdit;
    Edit19: TEdit;
    Edit20: TEdit;
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    Edit24: TEdit;
    Edit25: TEdit;
    Edit26: TEdit;
    Edit27: TEdit;
    Edit28: TEdit;
    Button1: TButton;
    Edit29: TEdit;
    Timer1: TTimer;
    Timer2: TTimer;
    ListBox1: TListBox;
    Gauge1: TGauge;
    Gauge2: TGauge;
    Gauge3: TGauge;
    Gauge4: TGauge;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit30: TEdit;
    Image1: TImage;
    Label5: TLabel;
    Button2: TButton;
    Timer3: TTimer;
    Button4: TButton;
    Button5: TButton;
    Button3: TButton;
    Label6: TLabel;
    Button6: TButton;
    Timer4: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Timer4Timer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

type

pcb=record
name:string;
arv:integer;
svt:integer;
stt:integer;
fnt:integer;
zzsj:integer;
dqsj:real;
fnhflg:bool;
sttflg:bool;
end;
pcbx=array[1..4]of pcb;
var
nullflag:bool=false;
forword:bool=false;
subtemp:integer=0;
j:integer=1;
openflg:bool=true;
tempid:integer=1;
fnhnum:integer=0;
pcbnum:integer=0;
ntp:bool=false;
tempok:bool=false;
  flag:bool=false;
  Form1: TForm1;
  showt:tdatetime;
  count:integer=-1;
  pro:integer=0;
  //pcbnum:integer=1;
  writeflg:integer=0;
  pcbs:pcbx;
ho,min,sec,msec:word;
method:integer=1;
implementation

uses  Unit3;

{$R *.dfm}


procedure TForm1.Timer1Timer(Sender: TObject);
var
w:integer;
f:integer;
begin
if flag=true and nullflag=false  then      // 改 false 远为 true
begin
count:=count+1;
listbox1.Items.Add(inttostr(count));

for w:=1 to 4 do
begin
if pcbs[w].arv=count then
begin
timer2.Enabled:=false;
pcbnum:=pcbnum+1;
timer2.Enabled:=true;
end;
end;
if openflg=false then
begin
if (count=pcbs[tempid].stt+pcbs[tempid].svt) then
begin
pcbs[tempid].fnhflg:=true;

fnhnum:=fnhnum+1;
if fnhnum=4 then
begin
flag:=false;
pcbs[1].fnt:=pcbs[1].stt+pcbs[1].svt;
pcbs[1].zzsj:=pcbs[1].fnt-pcbs[1].arv;
pcbs[1].dqsj:=pcbs[1].zzsj/(pcbs[1].fnt-pcbs[1].stt);
pcbs[2].fnt:=pcbs[2].stt+pcbs[2].svt;
pcbs[2].zzsj:=pcbs[2].fnt-pcbs[2].arv;
pcbs[2].dqsj:=pcbs[2].zzsj/(pcbs[2].fnt-pcbs[2].stt);
pcbs[3].fnt:=pcbs[3].stt+pcbs[3].svt;
pcbs[3].zzsj:=pcbs[3].fnt-pcbs[3].arv;
pcbs[3].dqsj:=pcbs[3].zzsj/(pcbs[3].fnt-pcbs[3].stt);
pcbs[4].fnt:=pcbs[4].stt+pcbs[4].svt;
pcbs[4].zzsj:=pcbs[4].fnt-pcbs[4].arv;
pcbs[4].dqsj:=pcbs[4].zzsj/(pcbs[4].fnt-pcbs[4].stt);
edit13.Text:=inttostr(pcbs[1].stt);
edit14.Text:=inttostr(pcbs[1].stt+pcbs[1].svt);
edit15.Text:=inttostr(pcbs[1].zzsj);
edit16.Text:=floattostr(pcbs[1].dqsj);
edit17.Text:=inttostr(pcbs[2].stt);
edit18.Text:=inttostr(pcbs[2].stt+pcbs[2].svt);
edit19.Text:=inttostr(pcbs[2].zzsj);
edit20.Text:=floattostr(pcbs[2].dqsj);
edit21.Text:=inttostr(pcbs[3].stt);
edit22.Text:=inttostr(pcbs[3].stt+pcbs[3].svt);
edit23.Text:=inttostr(pcbs[3].zzsj);
edit24.Text:=floattostr(pcbs[3].dqsj);
edit25.Text:=inttostr(pcbs[4].stt);
edit26.Text:=inttostr(pcbs[4].stt+pcbs[4].svt);
edit27.Text:=inttostr(pcbs[4].zzsj);
edit28.Text:=floattostr(pcbs[4].dqsj);   
end;
openflg:=true;  //改!!!!!true 应为 false
tempok:=false;
end;
end;
for f:=1 to 4 do
begin
if ((count=pcbs[f].stt+pcbs[f].svt) and pcbs[f].fnhflg=true) then
listbox1.Items.Add(pcbs[f].Name+''''完成!!!'''');
end; //for
end;//flag=ture
if openflg=false then
begin
case tempid of
1:begin
if pcbs[1].svt=1 then
begin
gauge1.MaxValue:=2;
gauge1.Progress:=2;
end
else
begin
gauge1.MaxValue:=pcbs[1].svt;
gauge1.Progress:=count-pcbs[1].stt;
end;
end;//1;
2:begin
gauge2.MaxValue:=pcbs[2].svt;
gauge2.Progress:=count-pcbs[2].stt;
end;//2;
3:begin
gauge3.MaxValue:=pcbs[3].svt;
gauge3.Progress:=count-pcbs[3].stt;
end;//3;
4:begin
gauge4.MaxValue:=pcbs[4].svt;
gauge4.Progress:=count-pcbs[4].stt;
end; //4;
end;//case of over
end;// if openflg=false then over
if pcbs[1].fnhflg=true then
gauge1.Progress:=pcbs[1].svt;
if pcbs[2].fnhflg=true then
gauge2.Progress:=pcbs[2].svt;
if pcbs[3].fnhflg=true then
gauge3.Progress:=pcbs[3].svt;
if pcbs[4].fnhflg=true then
gauge4.Progress:=pcbs[4].svt;

end;//procedure over
procedure TForm1.Button1Click(Sender: TObject);
begin
button2.Enabled:=false;
timer3.Enabled:=false;
timer2.Enabled:=true;
timer1.Enabled:=true;
timer4.Enabled:=false;
try
flag:=true;
pcbs[1].name:=edit1.text;
pcbs[1].arv:=strtoint(edit2.text );
pcbs[1].svt:=strtoint(edit3.text );
pcbs[1].sttflg:=false;
pcbs[1].fnhflg:=false;
pcbs[2].name:=edit4.text;
pcbs[2].arv:=strtoint(edit5.text );
pcbs[2].svt:=strtoint(edit6.text );
pcbs[2].sttflg:=false;
pcbs[2].fnhflg:=false;
pcbs[3].name:=edit7.text;
pcbs[3].arv:=strtoint(edit8.text );
pcbs[3].svt:=strtoint(edit9.text );
pcbs[3].sttflg:=false;
pcbs[3].fnhflg:=false;
pcbs[4].name:=edit10.text;
pcbs[4].arv:=strtoint(edit11.text );
pcbs[4].svt:=strtoint(edit12.text );
pcbs[4].sttflg:=false;
pcbs[4].fnhflg:=false;
nullflag:=false;
except
nullflag:=true;
showmessage(''''请将数据填完整'''');
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
i:integer;
begin
if fnhnum<pcbnum then
begin
if ((openflg=true) and (pcbnum>0)) then
begin
for i:=1 to pcbnum do
begin
if pcbs[i].fnhflg=false then
begin
if tempok=false then
begin
subtemp:=tempid;
tempid:=i;
tempok:=true;
end;
if pcbs[i].svt<pcbs[tempid].svt then
begin
//timer1.Enabled:=false;
tempid:=i;
//timer1.Enabled:=true;
end;//if pcbs[i].svt<pcbs[tempid].svt then
end;//for
end;
openflg:=false;
pcbs[tempid].stt:=count;
pcbs[tempid].sttflg:=true;
//listbox1.Items.Add(''''进程''''+pcbs[subtemp].name+''''fnh'''');
listbox1.Items.Add(''''进程''''+pcbs[tempid].name+''''被调度'''');
end;//if(openflg=true and pcbnum>0)then
end;//if fnhnum<pcbnum then

end; //procedure

procedure TForm1.Button2Click(Sender: TObject);
begin
button1.Enabled:=false;
timer1.Enabled:=false;
timer2.Enabled:=false;
timer3.Enabled:=true;
timer4.Enabled:=true;
try
flag:=true;
pcbs[1].name:=edit1.text;
pc

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台