最近期末,计算机 *** 作系统课程设计需要实现----磁盘调度算法。就使用Java写个图形界面的磁盘调度算法。
实现磁盘调度的四种算法:
先来先服务算法(FCFS)
最短寻道时间优先算法(SSTF)
扫描算法(SCAN)
循环扫描算法(C-SCAN)
实现原理:数组的排序,画笔的绘制
运行截图:
代码如下:复制即用
package com.huang; import java.awt.*; import java.awt.event.*; import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors; import javax.swing.*; public class Demo extends Jframe implements ActionListener{ //主面板 JButton btnFCFS; //先来先服务算法(FCFS) JButton btnSSTF; //最短寻道时间优先算法(SSTF) JButton btnSCAN; //扫描算法(SCAN) JButton btnCSCAN; //循环扫描算法(C-SCAN) JPanel jMainPanel = new JPanel(); //按钮面板 JPanel buttons = new JPanel(); //绘图面板 JLabel jLabel1; JLabel jLabel2; StringBuffer s; int start; int[] arr; int fcfsNUM=0; int sstfNUM=0; int scanNUM=0; int cscanNUM=0; public Demo(){ } public Demo(int start, int[] arr){ super("绘制形状"); this.start=start; this.arr=arr; StringBuffer stringBuffer=new StringBuffer(); for (int tt=0;tt resultList = Arrays.stream(arr).boxed().collect(Collectors.toList());//最短寻道时间优先算法(SSTF) int min=300; int temp1 = 0; int jiLuID=0; int start1=start; int[] newArr=new int[10]; for (int i=0;i=Math.abs((int)(resultList.get(j))-start1)){ min=Math.abs((int)(resultList.get(j))-start1); temp1=(int)resultList.get(j); jiLuID=j; } } newArr[i]=temp1; min=300; resultList.remove(jiLuID); start1=temp1; } int sstfNUM=0; int temp2=start; for (int i=0;i=Math.abs((int)(resultList.get(j))-start)){ min=Math.abs((int)(resultList.get(j))-start); temp=(int)resultList.get(j); jiLuID=j; } } newArr[i]=temp; min=300; resultList.remove(jiLuID); start=temp; } this.x = newArr; } public void paintComponent(Graphics g){ g.drawString(String.valueOf(start),start*4+2,10); g.drawLine(start*4, 0,x[0]*4,20); g.drawLine(x[0]*4,20 ,x[1]*4,40 ); g.drawLine(x[1]*4,40 ,x[2]*4,60 ); g.drawLine(x[2]*4,60 ,x[3]*4,80 ); g.drawLine(x[3]*4,80 ,x[4]*4,100); g.drawLine(x[4]*4,100,x[5]*4,120); g.drawLine(x[5]*4,120,x[6]*4,140); g.drawLine(x[6]*4,140,x[7]*4,160); g.drawLine(x[7]*4,160,x[8]*4,180); g.drawLine(x[8]*4,180,x[9]*4,200); for (int i=0;i 0;j--){ newArr[i-j]=x[j-1]; } newArr[i]=0; for (int o=i+1,h=i;h 0;j--){ newArr[12-j]=x[d];d++; } this.x =newArr; } public void paintComponent(Graphics g){ g.drawString(String.valueOf(start),start*4+2,10); g.drawLine(start*4, 0,x[0]*4,20); g.drawLine(x[0]*4,20 ,x[1]*4,40 ); g.drawLine(x[1]*4,40 ,x[2]*4,60 ); g.drawLine(x[2]*4,60 ,x[3]*4,80 ); g.drawLine(x[3]*4,80 ,x[4]*4,100); g.drawLine(x[4]*4,100,x[5]*4,120); g.drawLine(x[5]*4,120,x[6]*4,140); g.drawLine(x[6]*4,140,x[7]*4,160); g.drawLine(x[7]*4,160,x[8]*4,180); g.drawLine(x[8]*4,180,x[9]*4,200); g.drawLine(x[9]*4,200,x[10]*4,220); g.drawLine(x[10]*4,220,x[11]*4,240); for (int i=0;i 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)