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

📄 workteam.java

📁 编程,作业调度算法,先来先服务短作业优先
💻 JAVA
字号:
package cn.edubest.work;
//WorkCall.java
//come true the os-program workcall

//java core package
import java.awt.*;
import java.awt.event.*;
//java extension packages
import javax.swing.*;
public class WorkTeam{
	private Work works[]=new Work[4];
	private double T;
	private double W;
	private double timex;

	public WorkTeam()
	{
		for( int i=0;i<4;i++ )
		{
			works[i]=new Work();
		}
	}//end method WorkTeam

	public WorkTeam( WorkTeam WT )
	{
 		for(int i=0;i<4;i++)
		{
			works[i]=new Work(WT.works[i]);
		}
		T=0;
		W=0;
	}

	public Work getWork(int i)
	{
		return works[i];
	}

	public boolean isAllOver()
	{
		for( int i=0;i<4;i++ )
		{
			if( !works[i].isOver() ) return false;
		}
		return true;
	}//end method isAllOver

	public void setName( String names,int i )//用作业i设置作业名
	{
		works[i].setWorkName( names );
	}//end method setName

	public void setHandTime( double time,int i )//为作业i设置提交时间time
	{
		works[i].setWorkHandTime(time);
	}//end method setHandTime

	public void setRunTime( double time,int i )//为作业i设置运行时间time
	{
		works[i].setWorkRunTime(time);
	}//end mehtod setRunTime

	public void setStartTime( double time,int i )//为作业i设置开始执行时间
	{
		works[i].setWorkStartTime(time);
	}//end method setstartTime

	public void setEndTime( double time,int i )//为作业i设置完成时间time
	{
		works[i].setWorkEndTime(time);
	}//end method setEndTime

	public void setTi( double T,int i )//为作业i设置周转时间T
	{
		works[i].setWorkT(T);
	}//end method setTi

	public void setWi( double W,int i )//为作业i设置带权周转时间W 
	{
		works[i].setWorkW(W);
	}//end method setWi

	public void setT( double Ts )//为作业组设置平均周转时间
	{
		T=Ts;
	}//end method sett

	public void setW( double Ws )//为作业组设置平均带权周转时间
	{
		W=Ws;
	}//end mentod setW

	public double getT()
	{
		return T;
	}

	public double getW()
	{
		return W;
	}

	public String getName(int i)
	{
		return works[i].getWorkName();
	}

	public double getStartTime(int i)
	{
		return works[i].getWorkStartTime();
	}

	public double getRunTime(int i)
	{
		return works[i].getWorkRunTime();
	}
	
	public double getEndTime( int  i )
	{
		return works[i].getWorkEndTime();
	}
	
	public double getHandTime( int i )
	{
		return works[i].getWorkHandTime();
	}
	public void setT( double time,int i )//设置某个作业的周转时间
	{
		works[i].setWorkT( time );
	}

	public void setW( double time,int i )//设置某个作业的带权周转时间
	{
		works[i].setWorkW( time );
	}
	public double getT(int i)//取得某个作业的周转时间
	{
		return works[i].getWorkT();
	}

	public double getW( int i )//取得某个作业的带权周转时间
	{
		return works[i].getWorkW();
	}
	public void setTime( double times )//上一个作业完成时刻
	{
		timex=times;
	}
	public double getTime( )
	{
		return timex;
	}

	public void setState( int xia,int i )//把作业xia的状态设置成i
	{
		works[xia].setWorkState( i );
	}

	public int findMinTime(double time)//查找最先提交但还没有完成的作业
	{
		double minTime=0;
		int xia=0;
		if(time==0)//第一次从作业1开始
		{
			works[0].setWorkState( 1 );
//JOptionPane.showMessageDialog(null,"getWorkHandTime()"+works[0].getWorkHandTime(),"dhn",JOptionPane.INFORMATION_MESSAGE);
			setTime( works[0].getWorkHandTime() );
//JOptionPane.showMessageDialog(null,"works[0].getWorkHandTime()"+timex,"dhn",JOptionPane.INFORMATION_MESSAGE);
			return 0;
		}
		else{
			for( int j=1;j<4;j++ )//找一个没有完成的作业,方便下面比较
			{
				if( !works[j].isOver() )
				{
					minTime=works[j].getWorkHandTime();
					
//JOptionPane.showMessageDialog(null,"minTime "+minTime,"dhn",JOptionPane.INFORMATION_MESSAGE);
				break;
				}	
			}
		 	for( int i=1;i<4;i++ )
			{
				if(!isAllOver())//整个作业组没有全部完成
				{
					if(!works[i].isOver())
					{
					if( minTime>=works[i].getWorkHandTime() )//作业i的提交时间得小于或者等于上一个作业的完成时间
					{
						minTime=works[i].getWorkHandTime();
						
						xia=i;
					}

					}
				}
			}	
		}
works[xia].setWorkState(1);
	return xia;
	}//end method findMinTime
	
	public int findMinRunTime(double time)
	{
		double minTime=0;
		int xia=0;
		if(time==0)
		{
			works[0].setWorkState( 1 );
//JOptionPane.showMessageDialog(null,"getWorkHandTime()"+works[0].getWorkHandTime(),"dhn",JOptionPane.INFORMATION_MESSAGE);
			setTime( works[0].getWorkHandTime() );
//JOptionPane.showMessageDialog(null,"works[0].getWorkHandTime()"+timex,"dhn",JOptionPane.INFORMATION_MESSAGE);
			return 0;
		}
		else{
			for( int j=1;j<4;j++ )//找一个没有完成的作业
			{
				if( !works[j].isOver() )
				{
					minTime=works[j].getWorkRunTime();
					
//JOptionPane.showMessageDialog(null,"没有完成的作业的运行时间minTime "+minTime,"dhn",JOptionPane.INFORMATION_MESSAGE);
				break;
				}	
			}
		 	for( int i=1;i<4;i++ )
			{
				if(!isAllOver())//整个作业组没有全部完成
				{
					if(!works[i].isOver())
					{
					if( minTime>=works[i].getWorkRunTime() )//作业i的运行时间得小于或者等于上一个作业的完成时间
					{
						minTime=works[i].getWorkRunTime();
						
						xia=i;
	//JOptionPane.showMessageDialog(null,"测试中的最小运行时间 "+xia,"dhn",JOptionPane.INFORMATION_MESSAGE);
					}

					}
				}
			}	
		}
 works[xia].setWorkState(1);
JOptionPane.showMessageDialog(null,"最小运行时间 "+xia,"dhn",JOptionPane.INFORMATION_MESSAGE);
	return xia;
	}

	public int findMaxRp( double time ,double Rp[])
	{
		double minTime=0;
		int xia=0;
		if(time==0)
		{
			works[0].setWorkState( 1 );
//JOptionPane.showMessageDialog(null,"getWorkHandTime()"+works[0].getWorkHandTime(),"dhn",JOptionPane.INFORMATION_MESSAGE);
			setTime( works[0].getWorkHandTime() );
//JOptionPane.showMessageDialog(null,"works[0].getWorkHandTime()"+timex,"dhn",JOptionPane.INFORMATION_MESSAGE);
			return 0;
		}
		else{
			for( int j=1;j<4;j++ )//找一个没有完成的作业
			{
				if( !works[j].isOver() )
				{
					minTime=Rp[j];
					
//JOptionPane.showMessageDialog(null,"没有完成的作业的Rp  minTime "+minTime,"dhn",JOptionPane.INFORMATION_MESSAGE);
				break;
				}	
			}
		 	for( int i=1;i<4;i++ )//找最大的响应比
			{
				if(!isAllOver())//整个作业组没有全部完成
				{
					if(!works[i].isOver())
					{
					if( minTime<=Rp[i])
					{
						minTime=Rp[i];
						
						xia=i;
	//JOptionPane.showMessageDialog(null,"测试中的最大Rp "+xia,"dhn",JOptionPane.INFORMATION_MESSAGE);
					}

					}
				}
			}	
		}
 works[xia].setWorkState(1);
JOptionPane.showMessageDialog(null,"最大Rp "+xia,"dhn",JOptionPane.INFORMATION_MESSAGE);
	return xia;
	}
}//end class WorkTeam

⌨️ 快捷键说明

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