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

📄 diaodu.java

📁 进程调度实验 选择一个调度算法
💻 JAVA
字号:
import javax.swing.*;
import javax.swing.text.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import javax.swing.event.*;
public class diaodu
{   public static void main(String args[])
     {   Windows win=new Windows("计算机操作系统实验一   胡 迪"); 
     }
}

class Windows extends JFrame implements DocumentListener,ItemListener,ActionListener
{   JButton Okey,Qing;
    JRadioButton radiobutton1,radiobutton2;
    JTextArea text1,text2;
    JLabel L1,L2,L3;
    ButtonGroup suanfa;
    Windows(String s)
    {   super(s);
        setSize(600,500);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container con=getContentPane();
        con.setLayout(new BorderLayout());
        Okey=new JButton("确定");
        Qing=new JButton("清空");
        Okey.addActionListener(this);
        Qing.addActionListener(this);
        radiobutton1=new JRadioButton("优先数调度");
        radiobutton2=new JRadioButton("片轮转法");
        radiobutton1.addItemListener(this);
        radiobutton2.addItemListener(this);
        suanfa=new ButtonGroup();
        suanfa.add(radiobutton1);
        suanfa.add(radiobutton2);   
        L1=new JLabel("进程名   优先数   时间片   进程状态    ");
        L2=new JLabel("  进程名   优先数   CPU占时   时间片   进程状态");
        L3=new JLabel("计本(4)        105032004028       胡 迪");
        text1=new JTextArea(19,20);
		text2=new JTextArea(19,25);
		text2.setEditable(false);
        (text1.getDocument()).addDocumentListener(this);
        JPanel pNorth,pSouth,pCenter;
        pNorth=new JPanel();
        pSouth=new JPanel();
        pCenter=new JPanel();          
        pNorth.add(radiobutton1);
        pNorth.add(radiobutton2);
        pNorth.add(Okey);
        pNorth.add(Qing);
        pCenter.add(L1);
        pCenter.add(L2);
        pCenter.add(new JScrollPane(text1));
        pCenter.add(new JScrollPane(text2));
        pSouth.add(L3);
        con.add(pNorth,BorderLayout.NORTH);
        con.add(pCenter,BorderLayout.CENTER);
        con.add(pSouth,BorderLayout.SOUTH);
        con.validate();
        validate();
    }
public void itemStateChanged(ItemEvent e)
{   if(e.getSource()==radiobutton1)
    {   
    }
    if(e.getSource()==radiobutton2)
    {  
    }
}
public void actionPerformed(ActionEvent e)
{   if(e.getSource()==Okey)
    {  if(radiobutton1.isSelected())        //优先算法
       {   text2.setText("");
           String s=text1.getText();
           StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
           int n=fenxi.countTokens();
           String a[]=new String[n];
           int m=n/4;
           for(int i=0;i<=n-1;i++)
               {   String temp=fenxi.nextToken();
                   a[i]=temp;
               }
               String[] name=new String[n];
               String[] pri=new String[n];
               String[] state=new String[n];
               String[] time=new String[n];
               int p=0,q=0,r=0,t=0;
               boolean flag=true;
               String[] mcpu=new String[n];              
           for(int i=0;i<=n-1;i++)
               {   mcpu[i]=new String("0");
                   if(i%4==0)
                   {  name[p]=new String(a[i]);
                      p++;
                   }
                    if(i%4==1)
                   {  pri[q]=new String(a[i]);
                      q++;
                   }
                   if(i%4==2)
                   {  time[r]=new String(a[i]);
                      r++;
                   }
                   if(i%4==3)
                   {  state[t]=new String(a[i]);
                      t++;
                   }
               }  
           int count=0,i=0;       
          while(flag)
           {  int position=0,max=-100; 
              for(i=0;i<m;i++)
                 {   int pp=Integer.parseInt(pri[i]);
                     if(pp>=max)
                       {   if(state[i].equals("R"))
                            { 	max=pp;
                                position=i;
                            }
                       }
                 }
                int linshi=Integer.parseInt(pri[position]);
                linshi=linshi-3;
                pri[position]=String.valueOf(linshi);
                linshi=Integer.parseInt(mcpu[position]);
                linshi=linshi+1;
                mcpu[position]=String.valueOf(linshi);
                linshi=Integer.parseInt(time[position]);
                linshi=linshi-1;
                time[position]=String.valueOf(linshi);
                if(linshi==0)
                    {  state[position]=new String("F");
                       count++;
                    }
                 text2.append("  "+name[position]+"      "+pri[position]+"      "+mcpu[position]+"      "+time[position]+"      "+state[position]+"\n"); 
               if(count==m)
		           {   flag=false;
		           }
		   }
		   
       }
       if(radiobutton2.isSelected())       //片轮转算法
       {   int count=0;
           text2.setText("");
           String s=text1.getText();
           StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
           int n=fenxi.countTokens();
           String a[]=new String[n];
           int m=n/4;
           for(int i=0;i<=n-1;i++)
               {   String temp=fenxi.nextToken();
                   a[i]=temp;
               }
               String[] name=new String[n];
               String[] pri=new String[n];
               String[] state=new String[n];
               String[] time=new String[n];
               int p=0,q=0,r=0,t=0;
               boolean flag=true;
               String[] mcpu=new String[n];              
           for(int i=0;i<=n-1;i++)
               {   mcpu[i]=new String("0");
                   if(i%4==0)
                   {  name[p]=new String(a[i]);
                      p++;
                   }
                    if(i%4==1)
                   {  pri[q]=new String(a[i]);
                      q++;
                   }
                   if(i%4==2)
                   {  time[r]=new String(a[i]);
                      r++;
                   }
                   if(i%4==3)
                   {  state[t]=new String(a[i]);
                      t++;
                   }
               }
            while(flag)
            {   
        for(int i=0;i<m;i++)
                  {   int shijian=Integer.parseInt(time[i]);
                      int shuchu=0;
                      if(shijian!=0)
                      {   int linshi=Integer.parseInt(pri[i]);
                              linshi=linshi-3;
                              pri[i]=String.valueOf(linshi);
                              linshi=Integer.parseInt(mcpu[i]);
                              linshi=linshi+1;
                              mcpu[i]=String.valueOf(linshi);
                              linshi=Integer.parseInt(time[i]);
                              linshi=linshi-1;
                              time[i]=String.valueOf(linshi);
                              if(linshi==0)
                                {   state[i]=new String("F");
                                    count++;
                                }
                      text2.append("  "+name[i]+"      "+pri[i]+"      "+mcpu[i]+"      "+time[i]+"      "+state[i]+"\n"); 
                  }
                  if(count==m)
                  {   flag=false;
                  }
           }
           } 
       }
       
    }
    if(e.getSource()==Qing)
    {   text1.setText("");
        text2.setText("");
    }
}
public void changedUpdate(DocumentEvent e)
{  /* String s=text1.getText();
    StringTokenizer fenxi=new StringTokenizer(s," ,'\n'");
    int n=fenxi.countTokens();
    String[][] a=new String[n][5];
    for(int i=0;i<=n-1;i++)
       for(int j=0;i<=3;j++)
    {   String temp=fenxi.nextToken();
        a[i][j]=temp;
        a[i][4]="0";
    }*/
    changedUpdate(e);
}
public void removeUpdate(DocumentEvent e)//接口方法。
{//	changedUpdate(e);
}
public void insertUpdate(DocumentEvent e)//接口方法。
{//	changedUpdate(e);
}
}

⌨️ 快捷键说明

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