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

📄 unit2.cpp

📁 广东工业大学 超牛逼的课程设计 值得一看
💻 CPP
📖 第 1 页 / 共 2 页
字号:
          else
          {p2->next=p1->next;
            p1->state='W';
              form2_hready=insert(form2_hready,p1);
             str5="\tID号为: " ;
               str5+=IntToStr(p1->id);
                  str5+=" 的进程由阻塞队列转入就绪队列!\r\n";
              p1=p2->next;
          }//else
      } //大if
        else
       {p2=p1;
        p1=p1->next;
       } //else
       Form2->Memo1->Lines->Add(str5);
} //whlie



}//block
//---------------------------------------------------------------------------
 void testnew()   //检测是否有新的进程产生
 {
 int t;
 AnsiString str6;
 if(r>0)
 {
 t=random(9);         //生成随机数
 if(t<=7)               //如果随机数小于等于7,则产生新进程,否则不产生
 {
  form2_p=getpcb(PCB);
  str6+="有新的进程申请加入:\r\n" ;
  form2_p->id=form2_i++;
  str6+="进程ID:";
  str6+=IntToStr(form2_p->id);
  str6+="\r\n";
  form2_p->ra=(random(a-3));
  str6+="所需A类资源数:";
  str6+=IntToStr(form2_p->ra);
  str6+="\r\n";
  form2_p->rb=(random(b-3));
  str6+="所需B类资源数:";
  str6+=IntToStr(form2_p->ra);
  str6+="\r\n";
  form2_p->rc=(random(c-3));
  str6+="所需C类资源数:";
  str6+=IntToStr(form2_p->ra);
  str6+="\r\n";
  form2_p->ntime=(random(5)+1);
  str6+="所需时间片个数:";
  str6+=IntToStr(form2_p->ntime);
  str6+="\r\n";
  form2_p->rtime=0;
  form2_p->next=NULL;
  if (((a-(form2_p->ra))>=0)&&((b-(form2_p->rb))>=0)&&((c-(form2_p->rc))>=0))
 {                           //进程满足要求,进入阻塞队列
   a=a-(form2_p->ra);
     b=b-(form2_p->rb);
       c=c-(form2_p->rc);
   form2_p->state='w';
   str6+="当前进程状态:";
str6+=(form2_p->state);
str6+="\r\n";
   form2_hready=insert(form2_hready,form2_p);
   str6+="资源满足新进程需求,该进程进入就绪队列!";
    }//if
 else                        //进程不满足要求,进入阻塞队列
  {
   form2_p->state='B';
   form2_hblock=insert(form2_hblock,form2_p);
str6+="当前进程状态:";
str6+=(form2_p->state);
str6+="\r\n";
str6+="资源不能满足新进程需求,该进程进入阻塞队列!" ;
          }//else
  }//for

Form2->Memo1->Lines->Add(str6);


  
    }//if(r>0)
    r--;
       }//testnew
//---------------------------------------------------------------------------
void runmain()   //运行的主函数
{
 AnsiString str,str1;
input();
Form2->Timer1->Enabled=true;
  str+="\r\n";
}
//---------------------------------------------------------------------------
void rescore()
{
   if(a>a1) {Form2->Edit7->Text=IntToStr(a1);}
   if(a<0)  {Form2->Edit7->Text=0;}
   if(a>=0&&a<a1) {Form2->Edit7->Text=IntToStr(a);}
   if(b>b1) {Form2->Edit8->Text=IntToStr(b1);}
   if(b<0)  {Form2->Edit8->Text=0;}
   if(b>=0&&b<=b1) {Form2->Edit8->Text=IntToStr(b); }
   if(c>c1) {Form2->Edit9->Text=IntToStr(c1);}
   if(c<0)  {Form2->Edit9->Text=0;}
   if(c>=0&&c<=c1) {Form2->Edit9->Text=IntToStr(c); }
}
//------------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


//button
//---------------------------------------------------------------------------





void __fastcall TForm2::Button1Click(TObject *Sender)  //开始模拟按钮
{
  runmain();
  Form2->Button1->Enabled=false;
  Form2->Edit1->Enabled=false;
  Form2->Edit2->Enabled=false;
  Form2->Edit3->Enabled=false;
  Form2->Edit4->Enabled=false;
  Form2->Edit5->Enabled=false;
  Form2->Edit6->Enabled=false;

  }
//---------------------------------------------------------------------------









void __fastcall TForm2::Button2Click(TObject *Sender)    //清除屏幕按钮
{




    Form2->Memo1->Clear();
    Button1->Enabled=true;
    h=0;
  Form2->Edit1->Enabled=true;
  Form2->Edit2->Enabled=true;
  Form2->Edit3->Enabled=true;
  Form2->Edit4->Enabled=true;
  Form2->Edit5->Enabled=true;
  Form2->Edit6->Enabled=true;
}
//---------------------------------------------------------------------------






void __fastcall TForm2::Button1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
          Form2->Memo1->Clear();
    Button1->Enabled=true;
    h=0;
  Form2->Edit1->Enabled=true;
  Form2->Edit2->Enabled=true;
  Form2->Edit3->Enabled=true;
  Form2->Edit4->Enabled=true;
  Form2->Edit5->Enabled=true;
  Form2->Edit6->Enabled=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1KeyPress(TObject *Sender, char &Key)
{
    Form2->Memo1->Clear();
    Button1->Enabled=true;
    h=0;
  Form2->Edit1->Enabled=true;
  Form2->Edit2->Enabled=true;
  Form2->Edit3->Enabled=true;
  Form2->Edit4->Enabled=true;
  Form2->Edit5->Enabled=true;
  Form2->Edit6->Enabled=true;
}
//---------------------------------------------------------------------------


void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
        runFcfs();
}

void runFcfs()
{ AnsiString str;
if(form2_hready!=NULL)    //如果就绪队列为非空,则不断运行,直到就绪队列为空为止
{
   check();
 form2_hready=running(form2_hready);

  testblock();
  testnew();
  rescore() ;
   }

else
{
  Form2->Timer1->Enabled=false;
  Form2->Edit7->Text=IntToStr(a1);
  Form2->Edit8->Text=IntToStr(b1);
  Form2->Edit9->Text=IntToStr(c1);
  str+="\r\n\r\n<<<<<<<<<<<<<<<所 有 的 进 程 都 已 经 成 功 运 行 结 束 !>>>>>>>>>>>>>>";
  Form2->Memo1->Lines->Add(str);

}
}

//---------------------------------------------------------------------------

void __fastcall TForm2::N2Click(TObject *Sender)
{
   runmain();
  Button1->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::N8Click(TObject *Sender)
{
    if(Form2->SaveDialog1->Execute())
   {
     FILE* fp=fopen(Form2->SaveDialog1->FileName.c_str(),"w");
     if(fp==NULL)
     {
       MessageBox(NULL,"打开文件出错","信息",MB_OK);
       return;
       }
  for(int i=0;i<Form2->Memo1->Lines->Count;i++)
  {  fputs(Form2->Memo1->Lines->Strings[i].c_str(),fp);
  fputc('\n',fp);
  }
  fclose(fp);
}
}
//---------------------------------------------------------------------------

void __fastcall TForm2::N7Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------




void __fastcall TForm2::N3Click(TObject *Sender)
{
 Close();       
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

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