import com.ms.wfc.app.*;
import com.ms.wfc.core.*;
import com.ms.wfc.ui.*;
import com.ms.wfc.html.*;/**
 * This class can take a variable number of parameters on the command
 * line. Program execution begins with the main() method. The class
 * constructor is not invoked unless an object of type 'Form1' is
 * created in the main() method.
 */
public class Form1 extends Form
{
//各进程当前拥有的各资源的数目。
private int allocation[][]=new int [4][3];
//各进程还需要的各资源的数目。
private int need[][]=new int [4][3];
//各进程对各类资源的最大需求量
private int max[][]=new int[4][3];
//安全算法检测时,系统可提供给进程继续运行的各类资源数,初始值等于available[][]。
private int work[] =new int [3];
//各资源的可利用量,初始值为系统中所分配的该类全部可利用资源量,其数值随该类资源的分配和回收而动态改变。
private int available[] = new int [3];
//当前检测的进程
private int process[] =new int[4] ;
//当前需要进行安全算法判断的进程中各资源的需求量。
private int request[] = new int [3];
//用于检测计数器是否跳动
private int A[] = {1,1,1,1};
//提出申请的进程号。
private int n;
//计数器计数的值。
private int x0=0,x1=0,x2=0,x3=0;
private String fpro[]={"process1","process2","process3","process4"};

public Form1()
{
// Required for Visual J++ Form Designer support
initForm();
         
// TODO: Add any constructor code after initForm call
/**
 * 调用时间函数,为各各进程设置计数器,以显示进程的各种状态。
 * 开始时进程各各计数器停止不动,设为0,然后根据各种状态来改变其值。
 * 如进程运行时计数器不停的计数,如进程挂起,则计数器停止运行
 * 如进程再次被唤醒且重新调入运行时重新开始计数。
 * (此处需修改为计数器而不是显示系统时间)
 */ 
} /**
 * Form1 overrides dispose so it can clean up the
 * component list.
 */
public void dispose()
{
super.dispose();
components.dispose();
}

/**
 * button1表示确定按钮,按下去则进行安全算法的判断,当安全算法判断完毕
 * 后进行分析,如果通过安全算法,则允许系统进行分配该资源,此时可看到计 
 * 数器在跳动,如果不能进行分配,则计数器仍旧停止不动,该进程被挂起。
 */

private void button1_click(Object source, Event e)
{
/**
 * 判断是否成功,如成功则显示可接受的分配方案,同时改变各资源数目
 * ,并且在分配时也要使的各计数器进行各自应该进行的状态,或计数或停止
 * 如不行,则回复不能分配,当前进程的挂起,计数器停止计数。(要加代码)
*/
    counte();
safetytext(n);
if(safetytext(n))
    {
richEdit1.setText ("process"+n+"申请成功,运行!安全序列为"+process[0]+process[1]+process[2]+process[3]);
for(int i=0;i<available.length ;i++)
{
   need[n][i]-=request[i];
   available[i]+=allocation[n][i];
}
}
else
{
richEdit1.setText ("process"+n+"申请不成功,挂起!");
A[n]=0;
counte();
}
}// button2表示清空,把各值还原成刚登入界面是的状态。
private void button2_click(Object source, Event e)
{
A[0]=A[1]=A[2]=A[3]=0;
counte();
//MAX函数清空。
this.edit1.setText ("");
this.edit2.setText ("");
    this.edit3.setText ("");
this.edit4.setText ("");
this.edit5.setText ("");
this.edit6.setText ("");
this.edit7.setText ("");
this.edit8.setText ("");
this.edit9.setText ("");
this.edit10.setText ("");
this.edit11.setText ("");
this.edit12.setText ("");
//NEED函数清空。
this.edit13.setText ("");
this.edit14.setText ("");
this.edit15.setText ("");
this.edit16.setText ("");
this.edit17.setText ("");
this.edit18.setText ("");
this.edit19.setText ("");
this.edit20.setText ("");
this.edit21.setText ("");
this.edit22.setText ("");
this.edit23.setText ("");
this.edit24.setText ("");
//AVAILABLE函数清空。
this.edit25.setText ("");
this.edit26.setText ("");
this.edit27.setText ("");
//WOKE函数清空。
this.edit28.setText ("");
this.edit29.setText ("");
this.edit30.setText ("");
//ALLOCATION函数清空。
this.edit32.setText ("");
this.edit33.setText ("");
this.edit34.setText ("");
this.edit35.setText ("");
this.edit36.setText ("");
this.edit37.setText ("");
this.edit38.setText ("");
this.edit39.setText ("");
this.edit40.setText ("");
this.edit41.setText ("");
this.edit42.setText ("");
this.edit43.setText ("");
//REQUEST框的各数清空。
this.edit44.setText ("");
this.edit45.setText ("");
this.edit46.setText ("");
this.edit47.setText ("");
//系统分配框清空。
this.richEdit1.setText ("");
}   //max数组进程1,A资源赋值
private void edit1_textChanged(Object source, Event e)
{
max[0][0]=Integer.parseInt(edit1.getText());
}
    //max数组进程1,B资源赋值
private void edit2_textChanged(Object source, Event e)
{
max[0][1]=Integer.parseInt(edit2.getText());
}
    //max数组进程1,C资源赋值
private void edit3_textChanged(Object source, Event e)
{
max[0][2]=Integer.parseInt(edit3.getText());
}
    //max数组进程2,A资源赋值
private void edit4_textChanged(Object source, Event e)
{
max[1][0]=Integer.parseInt(edit4.getText());
}
    //max数组进程2,B资源赋值
private void edit5_textChanged(Object source, Event e)
{
max[1][1]=Integer.parseInt(edit5.getText());
}
    //max数组进程2,C资源赋值
private void edit6_textChanged(Object source, Event e)
{
max[1][2]=Integer.parseInt(edit6.getText());
}
    //max数组进程3,A资源赋值
private void edit7_textChanged(Object source, Event e)
{
max[2][0]=Integer.parseInt(edit7.getText());
}
    //max数组进程3,B资源赋值
private void edit8_textChanged(Object source, Event e)
{
max[2][1]=Integer.parseInt(edit8.getText());
}
    //max数组进程3,C资源赋值
private void edit9_textChanged(Object source, Event e)
{
max[2][2]=Integer.parseInt(edit9.getText());
}
    //max数组进程4,A资源赋值
private void edit10_textChanged(Object source, Event e)
{
max[3][0]=Integer.parseInt(edit10.getText());
}
     //max数组进程4,B资源赋值
private void edit11_textChanged(Object source, Event e)
{
max[3][1]=Integer.parseInt(edit11.getText());
}
     //max数组进程4,C资源赋值
private void edit12_textChanged(Object source, Event e)
{
max[3][2]=Integer.parseInt(edit12.getText());
}
 //need数组进程1,A资源赋值
private void edit13_textChanged(Object source, Event e)
{
need[0][0]=Integer.parseInt(edit13.getText());
}
 //need数组进程1,B资源赋值
private void edit14_textChanged(Object source, Event e)
{
need[0][1]=Integer.parseInt(edit14.getText());
}
 //need数组进程1,C资源赋值
private void edit15_textChanged(Object source, Event e)
{
need[0][2]=Integer.parseInt(edit15.getText());
}
 //need数组进程2,A资源赋值
private void edit16_textChanged(Object source, Event e)
{
need[1][0]=Integer.parseInt(edit16.getText());
}
 //need数组进程2,B资源赋值
private void edit17_textChanged(Object source, Event e)
{
need[1][1]=Integer.parseInt(edit17.getText());
}
   //need数组进程2,C资源赋值
private void edit18_textChanged(Object source, Event e)
{
need[1][2]=Integer.parseInt(edit18.getText());
}
//need数组进程3,A资源赋值
private void edit19_textChanged(Object source, Event e)
{
need[2][0]=Integer.parseInt(edit19.getText());
}
//need数组进程3,B资源赋值
private void edit20_textChanged(Object source, Event e)
{
need[2][1]=Integer.parseInt(edit20.getText());
}
//need数组进程3,C资源赋值
private void edit21_textChanged(Object source, Event e)
{
need[2][2]=Integer.parseInt(edit21.getText());
}
//need数组进程4,A资源赋值
private void edit22_textChanged(Object source, Event e)
{
need[3][0]=Integer.parseInt(edit22.getText());
}
//need数组进程4,B资源赋值
private void edit23_textChanged(Object source, Event e)
{
need[3][1]=Integer.parseInt(edit23.getText());
}
//need数组进程4,C资源赋值
private void edit24_textChanged(Object source, Event e)
{
need[3][2]=Integer.parseInt(edit24.getText());
}
    //available项中A资源赋值
private void edit25_textChanged(Object source, Event e)
{
work[0]=Integer.parseInt(edit25.getText());
}
     //available项中B资源赋值
private void edit26_textChanged(Object source, Event e)
{
work[1]=Integer.parseInt(edit26.getText());
}
    //available项中C资源赋值
private void edit27_textChanged(Object source, Event e)
{
work[2]=Integer.parseInt(edit27.getText());
}
    //allocation数组进程1,A资源赋值
private void edit32_textChanged(Object source, Event e)
{

allocation[0][0]=Integer.parseInt (edit32.getText ());
}
    //allocation数组进程1,B资源赋值
private void edit33_textChanged(Object source, Event e)
{

allocation[0][1]=Integer.parseInt (edit33.getText ());
}
    //allocation数组进程1,C资源赋值
private void edit34_textChanged(Object source, Event e)
{

allocation[0][2]=Integer.parseInt (edit34.getText ());
}
    //allocation数组进程2,A资源赋值
private void edit35_textChanged(Object source, Event e)
{

allocation[1][0]=Integer.parseInt (edit35.getText ());
}
    //allocation数组进程2,B资源赋值
private void edit36_textChanged(Object source, Event e)
{

allocation[1][1]=Integer.parseInt (edit36.getText ());
}
    //allocation数组进程2,C资源赋值
private void edit37_textChanged(Object source, Event e)
{

allocation[1][2]=Integer.parseInt (edit37.getText ());
}
    //allocation数组进程3,A资源赋值
private void edit38_textChanged(Object source, Event e)
{

allocation[2][0]=Integer.parseInt (edit38.getText ());
}
     //allocation数组进程3,B资源赋值
private void edit39_textChanged(Object source, Event e)
{

allocation[2][1]=Integer.parseInt (edit39.getText ());
}
    //allocation数组进程3,C资源赋值
private void edit40_textChanged(Object source, Event e)
{

allocation[2][2]=Integer.parseInt (edit40.getText ());
}
    //allocation数组进程4,A资源赋值
private void edit41_textChanged(Object source, Event e)
{

allocation[3][0]=Integer.parseInt (edit41.getText ());
}
    //allocation数组进程4,B资源赋值
private void edit42_textChanged(Object source, Event e)
{

allocation[3][1]=Integer.parseInt (edit42.getText ());
}
    //allocation数组进程4,C资源赋值
private void edit43_textChanged(Object source, Event e)
{

allocation[3][2]=Integer.parseInt (edit43.getText ());
}
//当前要求系统进行安全算法判断的进程
private void edit44_textChanged(Object source, Event e)
{
n=Integer.parseInt (edit44.getText ());
}
   //REQUEST框中,当前要求进行安全算法检测的进程的A资源需求量
private void edit45_textChanged(Object source, Event e)
{
request[0]=Integer.parseInt (edit45.getText ());
}
   //REQUEST框中,当前要求进行安全算法检测的进程的B资源需求量
private void edit46_textChanged(Object source, Event e)
{
request[1]=Integer.parseInt (edit46.getText ());
}
  //REQUEST框中,当前要求进行安全算法检测的进程的C资源需求量
private void edit47_textChanged(Object source, Event e)
{
request[2]=Integer.parseInt (edit47.getText ());
}

//安全算法的检测过程
private boolean safetytext(int n)
{   
//finish数组表示系统是否有足够的资源分配给进程,使之运行完全。
boolean finish[]={false,false,false,false};
int k=1;
String str;
str="";     if(finish[n]==false)
    {
    if((request[0]<=work[0])&&(request[1]<=work[1])&&(request[2]<=work[2])&&(request[0]<=need[n][0])&&(request[1]<=need[n][1])&&(request[2]<=need[n][2]))
{
for (int i = 0;i< work.length ;i++)
{
    work[i]=work[i]+allocation[n][i];
}
    process[0]=n;
            str=str+fpro[n];
finish[n]=true;
k=k+1;
while(k!=need.length )
{
       for(int i=0;i<need.length ;i++)
           { 
           if (i==n)
           continue;
           else 
       if((need[i][0]<=work[0])&&(need[i][1]<=work[1])&&(need[i][2]<=work[2]))
               {
              finish[i]=true;
      for(int j=0;j<work.length;j++)
      {
                 work[i]=work[i]+allocation[i][j];
      }
              process[k]=i;
              k=k+1;
                }
         }
}
         }
else
finish[n]=false;
}
if(finish[0]&&finish[1]&&finish[2]&&finish[3])
return true;
else
return false;
}

public void counte()
{   
   if(A[0]==1)
      label36.setText(Integer.toString(x0++));
       else
       label36.setText(Integer.toString(x0));
   if(A[1]==1)
   label37.setText(Integer.toString(x1++));
   else
   label37.setText(Integer.toString(x1++));
   if(A[2]==1)
   label38.setText(Integer.toString(x2++));
   else
   label38.setText(Integer.toString(x2));
   if(A[3]==1)
   label39.setText(Integer.toString(x3++));
   else
   label39.setText(Integer.toString(x3));
}
private void Form1_click(Object source, Event e)
{

} private void richEdit1_textChanged(Object source, Event e)
{

} private void label36_click(Object source, Event e)
{

} private void label37_click(Object source, Event e)
{

} private void label38_click(Object source, Event e)
{

} private void label39_click(Object source, Event e)
{

} /**
 * NOTE: The following code is required by the Visual J++ form
 * designer.  It can be modified using the form editor.  Do not
 * modify it using the code editor.
 */
Container components = new Container();
RichEdit richEdit1 = new RichEdit();
Edit edit27 = new Edit();
Edit edit26 = new Edit();
Edit edit25 = new Edit();
Label label4 = new Label();
Label label5 = new Label();
Edit edit12 = new Edit();
Edit edit11 = new Edit();
Edit edit10 = new Edit();
GroupBox groupBox6 = new GroupBox();
Edit edit24 = new Edit();
Edit edit23 = new Edit();
Label label15 = new Label();
Label label14 = new Label();
Label label13 = new Label();
Label label12 = new Label();
Edit edit9 = new Edit();
Edit edit8 = new Edit();
Edit edit7 = new Edit();
Edit edit6 = new Edit();
Edit edit5 = new Edit();
Edit edit4 = new Edit();
Edit edit3 = new Edit();
Edit edit2 = new Edit();
Edit edit1 = new Edit();
Label label8 = new Label();
Label label7 = new Label();
Label label6 = new Label();
Edit edit22 = new Edit();
Edit edit21 = new Edit();
Edit edit20 = new Edit();
Edit edit19 = new Edit();
Edit edit18 = new Edit();
Edit edit17 = new Edit();
Edit edit16 = new Edit();
Edit edit15 = new Edit();
Edit edit14 = new Edit();
Edit edit13 = new Edit();
Label label11 = new Label();
Label label10 = new Label();
Label label3 = new Label();
Label label2 = new Label();
Label label1 = new Label();
Button button1 = new Button();
Button button2 = new Button();
Label label39 = new Label();
Label label38 = new Label();
Label label37 = new Label();
Label label36 = new Label();
Label label27 = new Label();
Label label26 = new Label();
Label label25 = new Label();
Edit edit43 = new Edit();
Edit edit42 = new Edit();
Edit edit41 = new Edit();
Edit edit40 = new Edit();
Edit edit39 = new Edit();
Edit edit38 = new Edit();
Edit edit37 = new Edit();
Edit edit36 = new Edit();
Edit edit35 = new Edit();
Label label24 = new Label();
Edit edit34 = new Edit();
Edit edit33 = new Edit();
Edit edit32 = new Edit();
Label label28 = new Label();
GroupBox groupBox7 = new GroupBox();
GroupBox groupBox1 = new GroupBox();
Edit edit44 = new Edit();
Edit edit45 = new Edit();
Edit edit46 = new Edit();
Edit edit47 = new Edit();
Label label29 = new Label();
Label label30 = new Label();
Label label31 = new Label();
Label label32 = new Label();
GroupBox groupBox2 = new GroupBox();
GroupBox groupBox3 = new GroupBox();
GroupBox groupBox4 = new GroupBox();
GroupBox groupBox5 = new GroupBox();
Label label9 = new Label();
Label label20 = new Label();
Label label21 = new Label();
Edit edit28 = new Edit();
Label label22 = new Label();
Edit edit29 = new Edit();
Label label23 = new Label();
Edit edit30 = new Edit();
Label label33 = new Label();
Label label34 = new Label();
Label label35 = new Label(); private void initForm()
{
this.setText("Form1");
this.setAutoScaleBaseSize(new Point(6, 12));
this.setClientSize(new Point(638, 404));
this.addOnClick(new EventHandler(this.Form1_click)); richEdit1.setFont(Font.DEFAULT_GUI);
richEdit1.setForeColor(Color.WINDOWTEXT);
richEdit1.setLocation(new Point(16, 48));
richEdit1.setSize(new Point(184, 64));
richEdit1.setTabIndex(0);
richEdit1.setText("");
richEdit1.addOnTextChanged(new EventHandler(this.richEdit1_textChanged)); edit27.setLocation(new Point(104, 40));
edit27.setSize(new Point(32, 19));
edit27.setTabIndex(5);
edit27.setText("");
edit27.addOnTextChanged(new EventHandler(this.edit27_textChanged)); edit26.setLocation(new Point(56, 40));
edit26.setSize(new Point(32, 19));
edit26.setTabIndex(4);
edit26.setText("");
edit26.addOnTextChanged(new EventHandler(this.edit26_textChanged)); edit25.setLocation(new Point(8, 40));
edit25.setSize(new Point(32, 19));
edit25.setTabIndex(3);
edit25.setText("");
edit25.addOnTextChanged(new EventHandler(this.edit25_textChanged)); label4.setLocation(new Point(136, 120));
label4.setSize(new Point(32, 23));
label4.setTabIndex(1);
label4.setTabStop(false);
label4.setText("MAX"); label5.setLocation(new Point(432, 120));
label5.setSize(new Point(40, 16));
label5.setTabIndex(2);
label5.setTabStop(false);
label5.setText("NEED"); edit12.setLocation(new Point(104, 144));
edit12.setSize(new Point(32, 19));
edit12.setTabIndex(14);
edit12.setText("");
edit12.addOnTextChanged(new EventHandler(this.edit12_textChanged)); edit11.setLocation(new Point(56, 144));
edit11.setSize(new Point(32, 19));
edit11.setTabIndex(13);
edit11.setText("");
edit11.addOnTextChanged(new EventHandler(this.edit11_textChanged)); edit10.setLocation(new Point(8, 144));
edit10.setSize(new Point(32, 19));
edit10.setTabIndex(12);
edit10.setText("");
edit10.addOnTextChanged(new EventHandler(this.edit10_textChanged)); groupBox6.setLocation(new Point(368, 136));
groupBox6.setSize(new Point(144, 168));
groupBox6.setTabIndex(11);
groupBox6.setTabStop(false);
groupBox6.setText(""); edit24.setLocation(new Point(104, 144));
edit24.setSize(new Point(32, 19));
edit24.setTabIndex(0);
edit24.setText("");
edit24.addOnTextChanged(new EventHandler(this.edit24_textChanged)); edit23.setLocation(new Point(56, 144));
edit23.setSize(new Point(32, 19));
edit23.setTabIndex(1);
edit23.setText("");
edit23.addOnTextChanged(new EventHandler(this.edit23_textChanged)); label15.setLocation(new Point(8, 144));
label15.setSize(new Point(56, 16));
label15.setTabIndex(3);
label15.setTabStop(false);
label15.setText("PROCESS3"); label14.setLocation(new Point(8, 112));
label14.setSize(new Point(56, 16));
label14.setTabIndex(2);
label14.setTabStop(false);
label14.setText("PROCESS2"); label13.setLocation(new Point(8, 80));
label13.setSize(new Point(56, 16));
label13.setTabIndex(1);
label13.setTabStop(false);
label13.setText("PROCESS1"); label12.setLocation(new Point(8, 48));
label12.setSize(new Point(56, 16));
label12.setTabIndex(0);
label12.setTabStop(false);
label12.setText("PROCESS0"); edit9.setLocation(new Point(104, 112));
edit9.setSize(new Point(32, 19));
edit9.setTabIndex(11);
edit9.setText("");
edit9.addOnTextChanged(new EventHandler(this.edit9_textChanged)); edit8.setLocation(new Point(56, 112));
edit8.setSize(new Point(32, 19));
edit8.setTabIndex(10);
edit8.setText("");
edit8.addOnTextChanged(new EventHandler(this.edit8_textChanged)); edit7.setLocation(new Point(8, 112));
edit7.setSize(new Point(32, 19));
edit7.setTabIndex(9);
edit7.setText("");
edit7.addOnTextChanged(new EventHandler(this.edit7_textChanged)); edit6.setLocation(new Point(104, 80));
edit6.setSize(new Point(32, 19));
edit6.setTabIndex(8);
edit6.setText("");
edit6.addOnTextChanged(new EventHandler(this.edit6_textChanged)); edit5.setLocation(new Point(56, 80));
edit5.setSize(new Point(32, 19));
edit5.setTabIndex(7);
edit5.setText("");
edit5.addOnTextChanged(new EventHandler(this.edit5_textChanged)); edit4.setLocation(new Point(8, 80));
edit4.setSize(new Point(32, 19));
edit4.setTabIndex(6);
edit4.setText("");
edit4.addOnTextChanged(new EventHandler(this.edit4_textChanged)); edit3.setLocation(new Point(104, 48));
edit3.setSize(new Point(32, 19));
edit3.setTabIndex(5);
edit3.setText("");
edit3.addOnTextChanged(new EventHandler(this.edit3_textChanged)); edit2.setLocation(new Point(56, 48));
edit2.setSize(new Point(32, 19));
edit2.setTabIndex(4);
edit2.setText("");
edit2.addOnTextChanged(new EventHandler(this.edit2_textChanged)); edit1.setLocation(new Point(8, 48));
edit1.setSize(new Point(32, 19));
edit1.setTabIndex(3);
edit1.setText("");
edit1.addOnTextChanged(new EventHandler(this.edit1_textChanged)); label8.setLocation(new Point(104, 16));
label8.setSize(new Point(32, 16));
label8.setTabIndex(2);
label8.setTabStop(false);
label8.setText("C资源"); label7.setLocation(new Point(56, 16));
label7.setSize(new Point(32, 16));
label7.setTabIndex(1);
label7.setTabStop(false);
label7.setText("B资源"); label6.setLocation(new Point(8, 16));
label6.setSize(new Point(32, 16));
label6.setTabIndex(0);
label6.setTabStop(false);
label6.setText("A资源"); edit22.setLocation(new Point(8, 144));
edit22.setSize(new Point(32, 19));
edit22.setTabIndex(2);
edit22.setText("");
edit22.addOnTextChanged(new EventHandler(this.edit22_textChanged)); edit21.setLocation(new Point(104, 112));
edit21.setSize(new Point(32, 19));
edit21.setTabIndex(3);
edit21.setText("");
edit21.addOnTextChanged(new EventHandler(this.edit21_textChanged)); edit20.setLocation(new Point(56, 112));
edit20.setSize(new Point(32, 19));
edit20.setTabIndex(4);
edit20.setText("");
edit20.addOnTextChanged(new EventHandler(this.edit20_textChanged)); edit19.setLocation(new Point(8, 112));
edit19.setSize(new Point(32, 19));
edit19.setTabIndex(5);
edit19.setText("");
edit19.addOnTextChanged(new EventHandler(this.edit19_textChanged)); edit18.setLocation(new Point(104, 80));
edit18.setSize(new Point(32, 19));
edit18.setTabIndex(7);
edit18.setText("");
edit18.addOnTextChanged(new EventHandler(this.edit18_textChanged)); edit17.setLocation(new Point(56, 80));
edit17.setSize(new Point(32, 19));
edit17.setTabIndex(9);
edit17.setText("");
edit17.addOnTextChanged(new EventHandler(this.edit17_textChanged)); edit16.setLocation(new Point(8, 80));
edit16.setSize(new Point(32, 19));
edit16.setTabIndex(11);
edit16.setText("");
edit16.addOnTextChanged(new EventHandler(this.edit16_textChanged)); edit15.setLocation(new Point(104, 48));
edit15.setSize(new Point(32, 19));
edit15.setTabIndex(13);
edit15.setText("");
edit15.addOnTextChanged(new EventHandler(this.edit15_textChanged)); edit14.setLocation(new Point(56, 48));
edit14.setSize(new Point(32, 19));
edit14.setTabIndex(14);
edit14.setText("");
edit14.addOnTextChanged(new EventHandler(this.edit14_textChanged)); edit13.setLocation(new Point(8, 48));
edit13.setSize(new Point(32, 19));
edit13.setTabIndex(12);
edit13.setText("");
edit13.addOnTextChanged(new EventHandler(this.edit13_textChanged)); label11.setLocation(new Point(104, 16));
label11.setSize(new Point(32, 16));
label11.setTabIndex(10);
label11.setTabStop(false);
label11.setText("C资源"); label10.setLocation(new Point(56, 16));
label10.setSize(new Point(32, 16));
label10.setTabIndex(8);
label10.setTabStop(false);
label10.setText("B资源"); label3.setLocation(new Point(104, 16));
label3.setSize(new Point(32, 16));
label3.setTabIndex(2);
label3.setTabStop(false);
label3.setText("C资源"); label2.setLocation(new Point(56, 16));
label2.setSize(new Point(32, 16));
label2.setTabIndex(1);
label2.setTabStop(false);
label2.setText("B资源"); label1.setLocation(new Point(8, 16));
label1.setSize(new Point(32, 16));
label1.setTabIndex(0);
label1.setTabStop(false);
label1.setText("A资源"); button1.setLocation(new Point(352, 352));
button1.setSize(new Point(75, 23));
button1.setTabIndex(3);
button1.setText("确定");
button1.addOnClick(new EventHandler(this.button1_click)); button2.setLocation(new Point(456, 352));
button2.setSize(new Point(75, 23));
button2.setTabIndex(4);
button2.setText("清空");
button2.addOnClick(new EventHandler(this.button2_click)); label39.setLocation(new Point(520, 280));
label39.setSize(new Point(100, 23));
label39.setTabIndex(20);
label39.setTabStop(false);
label39.setText("计数:");
label39.addOnClick(new EventHandler(this.label39_click)); label38.setLocation(new Point(520, 248));
label38.setSize(new Point(100, 23));
label38.setTabIndex(19);
label38.setTabStop(false);
label38.setText("计数:");
label38.addOnClick(new EventHandler(this.label38_click)); label37.setLocation(new Point(520, 216));
label37.setSize(new Point(100, 23));
label37.setTabIndex(18);
label37.setTabStop(false);
label37.setText("计数:");
label37.addOnClick(new EventHandler(this.label37_click)); label36.setLocation(new Point(520, 184));
label36.setSize(new Point(100, 23));
label36.setTabIndex(17);
label36.setTabStop(false);
label36.setText("计数:");
label36.addOnClick(new EventHandler(this.label36_click)); label27.setLocation(new Point(104, 16));
label27.setSize(new Point(32, 16));
label27.setTabIndex(14);
label27.setTabStop(false);
label27.setText("C资源"); label26.setLocation(new Point(56, 16));
label26.setSize(new Point(32, 16));
label26.setTabIndex(13);
label26.setTabStop(false);
label26.setText("B资源"); label25.setLocation(new Point(8, 16));
label25.setSize(new Point(32, 16));
label25.setTabIndex(12);
label25.setTabStop(false);
label25.setText("A资源"); edit43.setLocation(new Point(104, 144));
edit43.setSize(new Point(32, 19));
edit43.setTabIndex(11);
edit43.setText("");
edit43.addOnTextChanged(new EventHandler(this.edit43_textChanged)); edit42.setLocation(new Point(56, 144));
edit42.setSize(new Point(32, 19));
edit42.setTabIndex(10);
edit42.setText("");
edit42.addOnTextChanged(new EventHandler(this.edit42_textChanged)); edit41.setLocation(new Point(8, 144));
edit41.setSize(new Point(32, 19));
edit41.setTabIndex(9);
edit41.setText("");
edit41.addOnTextChanged(new EventHandler(this.edit41_textChanged)); edit40.setLocation(new Point(104, 112));
edit40.setSize(new Point(32, 19));
edit40.setTabIndex(8);
edit40.setText("");
edit40.addOnTextChanged(new EventHandler(this.edit40_textChanged)); edit39.setLocation(new Point(56, 112));
edit39.setSize(new Point(32, 19));
edit39.setTabIndex(7);
edit39.setText("");
edit39.addOnTextChanged(new EventHandler(this.edit39_textChanged)); edit38.setLocation(new Point(8, 112));
edit38.setSize(new Point(32, 19));
edit38.setTabIndex(6);
edit38.setText("");
edit38.addOnTextChanged(new EventHandler(this.edit38_textChanged)); edit37.setLocation(new Point(104, 80));
edit37.setSize(new Point(32, 19));
edit37.setTabIndex(5);
edit37.setText("");
edit37.addOnTextChanged(new EventHandler(this.edit37_textChanged)); edit36.setLocation(new Point(56, 80));
edit36.setSize(new Point(32, 19));
edit36.setTabIndex(4);
edit36.setText("");
edit36.addOnTextChanged(new EventHandler(this.edit36_textChanged)); edit35.setLocation(new Point(8, 80));
edit35.setSize(new Point(32, 19));
edit35.setTabIndex(3);
edit35.setText("");
edit35.addOnTextChanged(new EventHandler(this.edit35_textChanged)); label24.setLocation(new Point(264, 120));
label24.setSize(new Point(64, 23));
label24.setTabIndex(5);
label24.setTabStop(false);
label24.setText("ALLOCATION"); edit34.setLocation(new Point(104, 48));
edit34.setSize(new Point(32, 19));
edit34.setTabIndex(2);
edit34.setText("");
edit34.addOnTextChanged(new EventHandler(this.edit34_textChanged)); edit33.setLocation(new Point(56, 48));
edit33.setSize(new Point(32, 19));
edit33.setTabIndex(1);
edit33.setText("");
edit33.addOnTextChanged(new EventHandler(this.edit33_textChanged)); edit32.setLocation(new Point(8, 48));
edit32.setSize(new Point(32, 19));
edit32.setTabIndex(0);
edit32.setText("");
edit32.addOnTextChanged(new EventHandler(this.edit32_textChanged)); label28.setLocation(new Point(280, 24));
label28.setSize(new Point(56, 16));
label28.setTabIndex(6);
label28.setTabStop(false);
label28.setText("AVAILABLE"); groupBox7.setLocation(new Point(416, 40));
groupBox7.setSize(new Point(144, 64));
groupBox7.setTabIndex(14);
groupBox7.setTabStop(false);
groupBox7.setText(""); groupBox1.setLocation(new Point(32, 320));
groupBox1.setSize(new Point(240, 80));
groupBox1.setTabIndex(7);
groupBox1.setTabStop(false);
groupBox1.setText(""); edit44.setLocation(new Point(32, 48));
edit44.setSize(new Point(56, 19));
edit44.setTabIndex(0);
edit44.setText("");
edit44.addOnTextChanged(new EventHandler(this.edit44_textChanged)); edit45.setLocation(new Point(104, 48));
edit45.setSize(new Point(32, 19));
edit45.setTabIndex(1);
edit45.setText("");
edit45.addOnTextChanged(new EventHandler(this.edit45_textChanged)); edit46.setLocation(new Point(152, 48));
edit46.setSize(new Point(32, 19));
edit46.setTabIndex(2);
edit46.setText("");
edit46.addOnTextChanged(new EventHandler(this.edit46_textChanged)); edit47.setLocation(new Point(200, 48));
edit47.setSize(new Point(32, 19));
edit47.setTabIndex(3);
edit47.setText("");
edit47.addOnTextChanged(new EventHandler(this.edit47_textChanged)); label29.setLocation(new Point(32, 24));
label29.setSize(new Point(48, 16));
label29.setTabIndex(4);
label29.setTabStop(false);
label29.setText("REQUEST"); label30.setLocation(new Point(104, 24));
label30.setSize(new Point(32, 16));
label30.setTabIndex(5);
label30.setTabStop(false);
label30.setText("A资源"); label31.setLocation(new Point(152, 24));
label31.setSize(new Point(32, 16));
label31.setTabIndex(6);
label31.setTabStop(false);
label31.setText("B资源"); label32.setLocation(new Point(200, 24));
label32.setSize(new Point(32, 16));
label32.setTabIndex(7);
label32.setTabStop(false);
label32.setText("C资源"); groupBox2.setLocation(new Point(80, 136));
groupBox2.setSize(new Point(144, 168));
groupBox2.setTabIndex(8);
groupBox2.setTabStop(false);
groupBox2.setText(""); groupBox3.setLocation(new Point(8, 136));
groupBox3.setSize(new Point(72, 168));
groupBox3.setTabIndex(9);
groupBox3.setTabStop(false);
groupBox3.setText(""); groupBox4.setLocation(new Point(224, 136));
groupBox4.setSize(new Point(144, 168));
groupBox4.setTabIndex(10);
groupBox4.setTabStop(false);
groupBox4.setText(""); groupBox5.setLocation(new Point(240, 40));
groupBox5.setSize(new Point(144, 64));
groupBox5.setTabIndex(12);
groupBox5.setTabStop(false);
groupBox5.setText(""); label9.setLocation(new Point(8, 16));
label9.setSize(new Point(32, 16));
label9.setTabIndex(6);
label9.setTabStop(false);
label9.setText("A资源"); label20.setLocation(new Point(24, 120));
label20.setSize(new Point(48, 16));
label20.setTabIndex(13);
label20.setTabStop(false);
label20.setText("PROCESS"); label21.setLocation(new Point(8, 16));
label21.setSize(new Point(32, 16));
label21.setTabIndex(0);
label21.setTabStop(false);
label21.setText("A资源"); edit28.setLocation(new Point(8, 40));
edit28.setSize(new Point(32, 19));
edit28.setTabIndex(1);
edit28.setText(""); label22.setLocation(new Point(56, 16));
label22.setSize(new Point(32, 16));
label22.setTabIndex(2);
label22.setTabStop(false);
label22.setText("B资源"); edit29.setLocation(new Point(56, 40));
edit29.setSize(new Point(32, 19));
edit29.setTabIndex(3);
edit29.setText(""); label23.setLocation(new Point(104, 16));
label23.setSize(new Point(32, 16));
label23.setTabIndex(4);
label23.setTabStop(false);
label23.setText("C资源"); edit30.setLocation(new Point(104, 40));
edit30.setSize(new Point(32, 19));
edit30.setTabIndex(5);
edit30.setText(""); label33.setLocation(new Point(472, 24));
label33.setSize(new Point(32, 16));
label33.setTabIndex(15);
label33.setTabStop(false);
label33.setText("WOKE"); label34.setLocation(new Point(64, 24));
label34.setSize(new Point(80, 16));
label34.setTabIndex(16);
label34.setTabStop(false);
label34.setText("系统分配情况"); label35.setLocation(new Point(8, 48));
label35.setSize(new Point(24, 16));
label35.setTabIndex(8);
label35.setTabStop(false);
label35.setText("进程"); this.setNewControls(new Control[] {
label39, 
label38, 
label37, 
label36, 
label34, 
label33, 
groupBox7, 
label20, 
groupBox5, 
groupBox6, 
groupBox4, 
groupBox3, 
groupBox2, 
groupBox1, 
label5, 
label28, 
label24, 
button2, 
button1, 
label4, 
richEdit1});
groupBox6.setNewControls(new Control[] {
 label9, 
 label10, 
 label11, 
 edit13, 
 edit14, 
 edit15, 
 edit16, 
 edit17, 
 edit18, 
 edit19, 
 edit20, 
 edit21, 
 edit22, 
 edit23, 
 edit24});
groupBox7.setNewControls(new Control[] {
 edit30, 
 label23, 
 edit29, 
 label22, 
 edit28, 
 label21});
groupBox1.setNewControls(new Control[] {
 label35, 
 label32, 
 label31, 
 label30, 
 label29, 
 edit47, 
 edit46, 
 edit45, 
 edit44});
groupBox2.setNewControls(new Control[] {
 edit12, 
 edit11, 
 edit10, 
 edit9, 
 edit8, 
 edit7, 
 edit6, 
 edit5, 
 edit4, 
 edit3, 
 edit2, 
 edit1, 
 label8, 
 label7, 
 label6});
groupBox3.setNewControls(new Control[] {
 label15, 
 label14, 
 label13, 
 label12});
groupBox4.setNewControls(new Control[] {
 label27, 
 label26, 
 label25, 
 edit43, 
 edit42, 
 edit41, 
 edit40, 
 edit39, 
 edit38, 
 edit37, 
 edit36, 
 edit35, 
 edit34, 
 edit33, 
 edit32});
groupBox5.setNewControls(new Control[] {
 edit27, 
 edit26, 
 edit25, 
 label3, 
 label2, 
 label1});
} /**
 * The main entry point for the application. 
 *
 * @param args Array of parameters passed to the application
 * via the command line.
 */
public static void main(String args[])
{
Application.run(new Form1());
}
}小弟刚学java,不自量力的用它来编写银行家算法。星期天老师就要检查了呀,哪位大侠帮一下呀,要是程序不能通过,期末的操作系统不能考呀。

解决方案 »

  1.   

     to flytsu(卡休):大侠,帮我看看这到底哪里出错了,肯定给高分,拜托,拜托,星期天就要上交了。
      

  2.   

    Form1.java 405行出错,用微软的类,没有办法给你试
      

  3.   

    private boolean safetytext(int n)
    {
    if(n>3) return false;
    ....
    }
      

  4.   

    to knight_qmh(辉): 怎么在安全算法的一开始就判断n了,那个n是代表当前向系统提出资源申请的进程号呀,n是随机的呀。哪位大侠是用VJ++6.0的呀,帮我试试呀
      

  5.   

    各位大侠,那个数组越界我已经调试好了,原来是在
    finish[n]=true;
    k=k+1;
    while(k<need.length )

    private void button1_click(Object source, Event e)
    {
    /**
    * 判断是否成功,如成功则显示可接受的分配方案,同时改变各资源数目
    * ,并且在分配时也要使的各计数器进行各自应该进行的状态,或计数或停止
    * 如不行,则回复不能分配,当前进程的挂起,计数器停止计数。(要加代码)
    */
        counte();
    safetytext(n);
    去掉safetytext(n);
    这两处改一下就不会出错了。
    可是,现在如何加上计数功能了?如何是的在判断当前的进程提出申请时,它的计数器会进行计数了?