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

📄 利用fcfs算法模拟实现处理机调度.java

📁 随机创建进程队列
💻 JAVA
字号:
import java.util.Date;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.JOptionPane;
import javax.swing.*;


class win extends Frame implements ActionListener
{

    Label label;
	Button button1,button2;
	TextField text1;
	TextArea  area;
	
 	win()
	
	{  setLayout(null);
	 setBounds(0,0,400,600);
	  label =new Label("请输入进程数:");
	   button1 =new Button("确定");
	   button2 =new Button("清除");
	   text1= new TextField();
	 
	   area = new TextArea();
	   label.setBounds(10,70,90,25);
	   text1.setBounds(110,70,80,30);
	   button1.setBounds(210,70,50,30);
	   button2.setBounds(290,70,50,30);
	   area.setBounds(10,110,360,400);
	   add(label);add(button1);add(text1);add(area);
	   add(button2);
	   setVisible(true);
	    button1.addActionListener(this);
	    button2.addActionListener(this);
	   text1.addActionListener(this);
	   
	}
	  
	  
	   public void actionPerformed(ActionEvent e)
	   {  
	     if(e.getSource()==button1||e.getSource()==text1)
	     
	     {
	     	 LinkedList create=new LinkedList(); //创建队列
	     	 
	 
	     	  String   ss=text1.getText().trim();
	     	
	     	   char  a1[]=ss.toCharArray();  int bi=0;
	     	
	     	   for(int a=0;a<a1.length;a++)
         {  if(!(Character.isDigit(a1[a])))
                         { bi=1; }
           } 
            if(bi==1)
          {  JOptionPane.showMessageDialog(this,"您输入了非法字符,请重新输入","警告对话框",
          	      
          	        JOptionPane.WARNING_MESSAGE);
          	      text1.setText(null);   
          	     
          }
          
        
          
          
          else {
          
	     	//int a=(int)(Math.random()*(Math.random()*500))+1;
	     	int a=Integer.parseInt(text1.getText().trim());
	        int b[]=new int[a];//进程提交时间
	        int c[]=new int[a];//执行时间
	        int t=0;//时间
	           int c1[]=new int[a];
	       // int length;
	     int p[]=new int[a];
	     //int p2[]=new int[a];
	     int num=0;
	     int t1[]=new int[a];
	        area.append("进程名称 "+"提交时间 "+"执行时间 "+'\n');
	 
	        for(int i=0;i<a;i++)
	       {
	       	   
	       	  // b[i]=(int)(Math.random()*10)+1;
	       	   
	        	c1[i]=c[i]=(int)(Math.random()*20)+1;
	       	   b[i]=(int)(Math.random()*(Math.random()*30))+1;
	       	  
	        //	c[i]=(int)(Math.random()*(Math.random()*100))+1;
	       
	          
	       }  
	            for(int i=0;i<a;i++)
	            {
	            	    area.append(""+i+"          "+b[i]+"       "+c[i]+'\n');
	            }
	             area.append(""+'\n');area.append(""+'\n');
	             area.append("执行后:"+'\n');
	          //   area.append("执行顺序 "+"提交时间 "+"执行时间 "+"平均周转时间 "+"平均带权周转时间"+'\n');
	           //  area.append("sdaf");
            
            for(;t<1000;)
            {int i=0;
                //area.append(""+t);        
              for(;i<a;i++) 
              {
              	if(b[i]-t==0)
              	 	{
              	 	  create.add(""+b[i]);
              	 	   
              	  
              	 
              	 	  //area.append(""+i+"          "+b[i]+"       "+c[i]+'\n');
              	   // break;
              	 	}
              	 	
             
             
              }
              
            
               
               	//p[m]=(int)(Math.random()*10)+1;
              	  
              	 
             t++; 	 
            
           
            if(create.size()!=0)
              	 
              	 {  
              	        
              	 
              	 
              	 String n3= (String)create.getFirst();
	          	 int n4=Integer.parseInt(n3);
	          	 for(int n=0;n<a;n++)
	          	 {
	          	 	if(b[n]==n4)
	          	 	{
	          	 		c[n]=c[n]-1;    
	          	 		
	          	 	
	          	 	
	          	 		if(c[n]==0)
	          	 		{ 
	          	 		   t1[n]=t; 
	          	 		   	area.append("进程执行顺序: "+n);
	          	 	    	area.append(""+'\n');   
	          	 		   area.append("    "+n+"进程完成时间: "+t1[n]+'\n');
	          	 		   create.removeFirst();
	          	 		   //break;
	          	 		}
	          	 		
	          	 	
	          	 	}
	          	 }
	          	 }
               
               
           
               
             
             
	         
           
       }     
              	
           
        
       
            int z[]=new int[a];  int zz=0;
                float d[]=new float[a];   float dd=0;
           
                  for(int n=0;n<a;n++)
                  {
                  	z[n]=t1[n]-b[n]; 
                  	// area.append(z[n]+""+'\n');  
                  	d[n]=(float)z[n]/c1[n];
                  	 //area.append(d[n]+""+'\n');  
                  }

                   for(int s=0;s<a;s++)
                   {
                   	  zz=zz+z[s];   dd=dd+d[s];
                   }
                   int z_z=zz/a;  float d_d=dd/a;
                  area.append("平均周转时间"+z_z+'\n');
                  area.append("平均带权周转时间"+d_d+'\n');
                  
        
        
            	 
        
        }  }
        
        if(e.getSource()==button2)
	          {
	          	area.setText(null);text1.setText(null);
	          }
}

}

public class wujian 
{
	public static void main(String  args[])
	{  
	    	 try{
 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    	 
    	}
   
    catch(Exception e){}
		win w=new win();
		w.setVisible(true);
 	  	  
 	  	   w.addWindowListener(new WindowAdapter()
 	  	   {
 	  	   	 public void windowClosing(WindowEvent e)
 	  	   	  {
 	  	   	  	System.exit(0);
 	  	   	  }
 	  	   });
	}
}

⌨️ 快捷键说明

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