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

📄 war1.java

📁 FCFS和SJF调度算法
💻 JAVA
字号:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class War1 extends Applet implements ActionListener
{
	char[] Pro ={'A','B','C','D','E'};
	int[] Arr = {0,1,2,3,4,5};
	int[] Ser = new int[6];//{1,100,1,100};
	//FCFS
	int [] Ove = new int[6];//FCFS的完成时间
	float [] Dai = new float[6];
	int [] Beg = new int[6];
	int [] Zhou = new int[6];
	//SJF
	int [] Ove2 = new int[6];//SJF的完成时间
	int [] Beg2 = new int[6];
	int [] Zhou2 = new int[6];
	float [] Dai2 = new float[6];
   	int[] flag = new int[6];
   	
    	int [] Ove1 = new int[6];
	int [] Beg1 = new int[6];
	int [] Zhou1 = new int[6];
	float [] Dai1 = new float[6];
    	int[] Arr1 = {0,1,2,3,4,5};
    	
    	
    	int dataInputed = 0;//记录输入的数据个数
    	int FPzhou=0;
    	float FPdai=0;
    	int SPzhou=0;
    	float SPdai=0;
    
    Label prompt = new Label("FCFS和SJF调度算法的性能,请输入6个以下进程的服务时间:"); 
    
    TextField input = new TextField(6);
    
    Button b = new Button("计算比较");
    //Button b1 = new Button("");
    
  
  public void init()
  {
  	add(prompt);
  	add(input);
  	add(b);
  	b.addActionListener(this);
  	input.addActionListener(this);
  	
  }
  
  public void paint (Graphics g)
  {
  	    g.drawString("平均值:",640,80+20*3);
  	    g.drawString("FCFSS算法:",10,80+20*6);
  	    g.drawString("SJF算法:",20,80+20*11);
  	    g.drawString("进程名:",100,80+20*1);
  	    g.drawString("到达时间:",100,80+20*2);
  	    g.drawString("服务时间:",100,80+20*3);
  	    g.drawString("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------",20,80+20*4);
  	    g.drawString("开始时间:",100,80+20*5);
  	    g.drawString("完成时间:",100,80+20*6);
  	    g.drawString("周转时间:",100,80+20*7);
  	    g.drawString("带权周转时间:",100,80+20*8);
  	    g.drawString("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------",20,80+20*9);
  	    g.drawString("完成时间:",100,80+20*10);
  	    g.drawString("周转时间:",100,80+20*11);
  	    g.drawString("带权周转时间:",100,80+20*12);
  	    
  	     g.drawString( Integer.toString(FPzhou/dataInputed),650,80+20*7);
  	     g.drawString(Float.toString(FPdai/dataInputed),650,80+20*8);
  	     g.drawString( Integer.toString(SPzhou/dataInputed),650,80+20*11);
  	     g.drawString(Float.toString(SPdai/dataInputed),650,80+20*12);
  	   for(int i=1;i<=12;i++)
  	   {
  	   	g.drawString("|",80,80+20*i);
  	   	g.drawString("|",600,80+20*i);
  	   }
  			 
  	   for(int j=0;j<7;j++)
  	    {    	
  	     g.drawString(Character.toString(Pro[j]),200+70*j,80+20*1);
  	     
  	     g.drawString(Integer.toString(Arr[j]),200+70*j,80+20*2);

  	     g.drawString(Integer.toString(Ser[j]),200+70*j,80+20*3);
  	
  	     g.drawString(Integer.toString(Beg[j]),200+70*j,80+20*5);
  	     
  	     g.drawString(Integer.toString(Ove[j]),200+70*j,80+20*6);
  	     
  	     g.drawString(Integer.toString(Zhou[j]),200+70*j,80+20*7);
  	     
  	     g.drawString(Float.toString(Dai[j]),200+70*j,80+20*8);
  	     
  	     g.drawString(Integer.toString(Ove2[j]),200+70*j,80+20*10);
  	     
  	     g.drawString(Integer.toString(Zhou2[j]),200+70*j,80+20*11);
  	     
  	     g.drawString(Float.toString(Dai2[j]),200+70*j,80+20*12);
  	     
  	    
  	    } 
  	
  	  
  	 
  	     
  }
   
   public void actionPerformed(ActionEvent e)
   {
   	if(e.getSource()== input)
   	{
   		Ser[dataInputed++]=Integer.parseInt(input.getText());
   		
   		
   		if(dataInputed<6)
   		{
   			prompt.setText("已输入"+dataInputed+"个进程的服务时间,可以继续输入");
   			input.setText("");
   		}
   		else
   		{
   			prompt.setText("已经输入了5个进程,不能输入了");	
   			input.setVisible(false);
   		}
   		
   	}
   	
   	
   	if(e.getSource()==b)
   	{
   		SjfMeth();
   	    FCFSMeth();
   	   
   	}
   	repaint();
   	
   }
 
 

	void FCFSMeth()  
	{
		Ove[0]=Ser[0];
		Zhou[0]=Ser[0];
		Dai[0]=Zhou[0]/Ser[0];
		
		for(int n=1;n<=dataInputed;++n)
		{
			Beg[n]=Beg[n-1]+Ser[n-1];
			Ove[n] = Ser[n]+Beg[n];
			Zhou[n]=Ove[n]-Arr[n];
			Dai[n]=(float)Zhou[n]/Ser[n];
			
		
			
		}
		for(int n=0;n<dataInputed;n++)
		{
			FPzhou=(Zhou[n]+FPzhou);
			FPdai=(float)(Dai[n]+FPdai);
			}
		for(int n=dataInputed;n<6;n++)
	{
		Zhou[n]=Ove[n]=Beg[n]=0;Dai[n]=0;
	}
    	
	}

	void SjfMeth()
	{
		for(int x=0;x<=dataInputed;x++)
		flag[x]=Ser[x];
		int t,i,j;
		for(i=1;i<dataInputed;i++)
		{
			for( j=1;j<dataInputed-i;j++)
		  {
		  	if(flag[j]>flag[j+1])
		  	{
		  		t=flag[j];
		  		flag[j]=flag[j+1];
		  		flag[j+1]=t;
		  	}
		  }
		  	
		}  	
	for( i=1;i<=dataInputed;i++)
	for( j=1;j<=dataInputed;j++)
	{if (flag[j]==Ser[i])
		Arr1[j]=Arr[i];
	 }	
		Ove1[0]=flag[0];
		Zhou1[0]=flag[0];
		Dai1[0]=Zhou1[0]/flag[0];
	for(int n=1;n<=dataInputed;++n)
		{
			Beg1[n]=Beg1[n-1]+flag[n-1];
			Ove1[n] = flag[n]+Beg1[n];
			Zhou1[n]=Ove1[n]-Arr1[n];
			Dai1[n]=(float)Zhou1[n]/flag[n];
		}
		Ove2[0]=Ove1[0];
		Zhou2[0]=Zhou1[0];
		Dai2[0]=Dai1[0];
	for( j=1;j<=dataInputed;j++)
	for( i=1;i<=dataInputed;i++)
	{if (flag[j]==Ser[i])
	{	
	    Ove2[i]=Ove1[j];
		Zhou2[i]=Zhou1[j];
			Dai2[i]=Dai1[j];
			}
	 }
	 for(int n=0;n<dataInputed;n++)
		{
			SPzhou=Zhou2[n]+SPzhou;
			SPdai=(float)(Dai2[n]+SPdai);
			}
	for(int n=dataInputed;n<6;n++)
	{
		Zhou2[n]=Ove2[n]=0;Dai2[n]=0;
	}
			
	
}
}

⌨️ 快捷键说明

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