Java 实现 磁盘调度算法的实现与分析(计算机 *** 作系统课程设计)-----扫描磁道移动路径可视化实现

Java 实现 磁盘调度算法的实现与分析(计算机 *** 作系统课程设计)-----扫描磁道移动路径可视化实现,第1张

Java 实现 磁盘调度算法的实现与分析(计算机 *** 作系统课程设计)-----扫描磁道移动路径可视化实现

最近期末,计算机 *** 作系统课程设计需要实现----磁盘调度算法。就使用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;i0;j--){
			newArr[i-j]=x[j-1];
		}
		newArr[i]=0;
		for (int o=i+1,h=i;h0;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					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5681374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存