目录
1、 设计目的: 1
2、 设计内容: 1
3、设计步骤: 2
3.1需求分析 2
3.2 概要设计: 2
3.2.1 设计思想 2
3.2.2 抽象数据类型的定义 3
3.2.3 主程序的流程 4
3.2.3 各程序模块之间的层次(调用)关系。 4
3.3详细设计: 5
3.1.1 函数的调用关系图 6
3.3.2各程序流程图 7
3.4调试分析: 10
3.5 系统测试: 10
3.6 使用说明: 13
4、经验与体会: 13
5、重要数据结构或源程序中的疑难部分说明 13
3、设计步骤:
3.1需求分析
设计主界面以灵活选择某算法,实现以下算法
1、先来先服务算法(FCFS)
2、最短寻道时间优先算法(SSTF)
3、扫描算法(SCAN)
4、循环扫描算法(CSCAN)
并求出每种算法的平均寻道长度。
3.2 概要设计:
3.2.1 设计思想
本次课程设计我们是以面向对象的思想为主,利用eclipse为工具实现模拟磁盘调度。程序主要是利用java的swing架构做图形,用冒泡排序方法、FCFS方法、SSTF方法、SCAN方法、CSCAN方法实现功能。利用菜单式的选择界面,方便的用户操作。最终对每一种模拟磁盘调度输出磁头平均移动的磁道数。
3.2.2 抽象数据类型的定义
bubble():对输入的磁道进行冒泡排序,FCFS():即先来先服务方法,SSTF()方法:本文转载自http://www.biyezuopin.vip/onews.asp?id=15099最短最短寻道时间函数,SCAN():扫描方法,CSCAN():循环扫描方法。各函数之间有点可以相互调用,共同实现要求。
本程序主要用到的数据结构为数组、字符串,包括对字符串的合法性判断,利用数组算磁头移动的平均移动磁道数。
package caozuoxitongkeshe;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Date;
public class LogPane extends JTabbedPane implements ActionListener{
private JScrollPane scroll;
private JTextArea textArea;
static final LogPane log=new LogPane();
public LogPane() {
// TODO 自动生成的构造函数存根
try {
UIManager
.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
textArea=new JTextArea();
textArea.setLineWrap(true);
textArea.setFont(new Font("TimesRoman",Font.PLAIN,18));
scroll=new JScrollPane(textArea);
add(scroll,BorderLayout.CENTER);
this.setTitleAt(0, "Log");
this.setFont(new Font("微软雅黑",Font.BOLD,16));
this.setEnabled(false);
textArea.setEditable(false);
}
public void actionPerformed(ActionEvent arg0) {
}
public void addLog(String log){
textArea.append(log+"\n");
}
public static LogPane getLog(){
return log;
}
public void addLog(String str,Color color){
Date date=new Date();
textArea.setForeground(color);
textArea.append(str+"\t"+date+"\n");
}
}