📄 war1.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 + -