Pages

Stop Exploitasi Hutan Indonesia!

Kamis, 20 Desember 2012

Program Penjadwalan CPU FCFS



Aplikasi untuk mencari arrival waiting time dari penjadwalan cpu dengan menggunakan metode FCFS ( first come first serve ) yang memakai bahasa pemrograman java, di oprasikan menggunakan textpad atau netbeans sebagai berikut :

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class   FCFS_CPU  extends JFrame implements ActionListene // nama kelas FCFS_CPU 
{
   JButton jb[] = new JButton[3];
   JTextField  jt1[],jt2[];
   JLabel  jl[],jl1,jl2,jl3;
   JPanel  jp,jp1;
   Container con;
   int  k,p;
   String str[] = {"Hapus","Kembali","Keluar"};
   String str1[] = {"Proses","   AT","ST","WT","FT","TAT","NTAT"};

   public FCFS_CPU()
                {
       super("Algoritma Penjadwalan CPU -115410126-");
                   con = getContentPane();
                   k= Integer.parseInt(JOptionPane.showInputDialog("Masukkan Jumlah Proses Anda"));
                   jl1 = new JLabel("Proses");
                   jl2 = new JLabel("Arival Time");
                   jl3 = new JLabel("Service Time");
                   jl = new JLabel[k];
       jt1 = new JTextField[k];
                   jt2 = new JTextField[k];

       for(int i=0;i<k;i++)
                                {
                                   jl[i] = new JLabel("proses"+(i+1));
                                   jt1[i]  = new JTextField(10);
           jt2[i]  = new JTextField(10);
                   }

                  for(int i=0;i<3;i++)
                {
                                  jb[i] = new JButton(str[i]);
                  }

                  con.setLayout(new  GridLayout(k+2,3));
                  con.add(jl1);
                  con.add(jl2);
                  con.add(jl3);

                  int l=0;

                  for(int i=0;i<k;i++)
                                {
            con.add(jl[l]);
                                                con.add(jt1[l]);
                                                con.add(jt2[l]);
                                                l++;
                  }
                  l=0;
                  for(int i=0;i<3;i++)
                                {
                                  con.add(jb[l]);
                                  jb[l].addActionListener(this);
                                  l++;
        }
                }//akhir dari konstruktor

                public void actionPerformed(ActionEvent ae)
                {
                                int FT[] = new int[k];
                                int WT[] = new int[k];
                                int TAT[] = new int[k];
                float NTAT[] = new float[k];
                                float sum=0;
        float avg;
                                 JPanel main = new JPanel();
                                 main.setLayout(new BorderLayout());
                                 jp = new JPanel();
                                 jp1 = new JPanel();
                                 jp.setLayout(new GridLayout(k+1,7));
                                 jp1.setLayout(new FlowLayout());

                                if(ae.getSource() == jb[2])
        {
                                                System.exit(0);
                    }
                  else if(ae.getSource() == jb[0])
        {
                                  FT[0] = Integer.parseInt(jt1[0].getText()) +
Integer.parseInt(jt2[0].getText());

                                  for(int i=0;i<k;i++)
                                                {
                                                  if(i==0)
                                                                {
                                                                  WT[i] = 0;
                                                                }
                                                  else
                                                                {
                                                                  if(FT[i-1] < Integer.parseInt(jt1[i].getText()))
                                                                                {
                                                                                  FT[i] =
Integer.parseInt(jt1[i].getText())+Integer.parseInt(jt2[i].getText());
                                                                                  WT[i] = 0;
                                                                                }
                                                                                else
                                                                                {
                                                                                                FT[i] = FT[i-1] + Integer.parseInt(jt2[i].getText());
                                                                                                WT[i] = FT[i-1] - Integer.parseInt(jt1[i].getText());
                                                                                }

                }
                                                                TAT[i] = WT[i]+Integer.parseInt(jt2[i].getText());
                                                                NTAT[i] = TAT[i]/(Integer.parseInt(jt2[i].getText()));
                                                                sum = sum+WT[i];
                                                }//akhir untuk perulangan
            for (int i=0;i<7;i++ )
            {
                                                  jp.add(new JLabel(str1[i]));
            }
                                                for (int i=0;i<k;i++)
                                                {
                                                  jp.add(new JLabel("proses"+(i+1)));
                                                  jp.add(new JLabel("   "+Integer.parseInt(jt1[i].getText())));
                                                  jp.add(new JLabel(""+Integer.parseInt(jt2[i].getText())));
                                                  jp.add(new JLabel(""+WT[i]));
                                                jp.add(new JLabel(""+FT[i]));
                                                jp.add(new JLabel(""+TAT[i]));
                                         jp.add(new JLabel(""+NTAT[i]));
                                                }
                                                avg = sum/k;
                                                String str2 = "Average Waiting Time is "+ avg;
             jp1.add(new JLabel(str2));
                                                 main.add(jp,BorderLayout.NORTH);
                                                 main.add(jp1,BorderLayout.SOUTH);
JOptionPane.showMessageDialog(null,main,"output",JOptionPane.PLAIN_MESSAGE
);
        }
                                else if(ae.getSource() == jb[1])
                                {
                                                setVisible(false);
                                                fcfs  window = new fcfs();
                                                window.setSize(400,300);
                                                window.setVisible(true);
                                                window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                }
                }
                public static void main(String[] args)
                {
            fcfs  window = new fcfs();
                                                window.setSize(400,300);
                                                window.setVisible(true);
                                                window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                }//akhir dari program utama
}//akhir kelas