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