课程设计题目:银行家算法
设计要求:
(1)有录入界面动态录入进程数、资源种类数、各类资源总数、t0时刻各进程的最大需求数、已分配数等信息;
(2)有算法选择界面,能够进行安全性检测、对进程动态请求资源的银行家算法检查、退出等的功能选择,要求可以进行多进程多次的资源请求;
(3)有输出界面,要求能够输出安全性检测的结果、如安全能够输出安全序列、能够输出进程请求资源后是否分配的结果,若不能分配要输出原因,如果能够分配,要输出分配后进程及资源的状态。
package OSkeshe;
import java.util.Scanner;
public class Bank {
Scanner in = new Scanner(System.in);
int progressNum;
int typeNum;
int[] Ssum;
int[][] Max;
int[][] Allocation;
int[][] Need;
int[] Available;
int[] Work;
boolean[] Finish = new boolean[50];
public Bank() {
start();
}
public void start() {
System.out
.println("***********************************************************");
System.out
.println(" 欢迎使用银行家算法");
System.out
.println(" 17060212118 张东 ");
System.out
.println("***********************************************************");
System.out.println("请选择操作:\n\t1.开始使用\n\t2.退出");
int a;
a = in.nextInt();
if (a == 1) {
input();
} else {
quit();
}
}
public void input() {
System.out.println("请输入进程个数:");
this.progressNum = in.nextInt();
System.out.println("请输入资源种类数:");
this.typeNum = in.nextInt();
this.Ssum = getSsum();
this.Max = getMax();
this.Allocation = getAllocation();
this.Need = getNeed();
this.Available = getAvailable(progressNum, typeNum);
System.out.println("该时刻的资源分配表:");
output();
this.Check_Safe(Available);
this.Ask_Distribution(false);
}
public int[] getSsum() {
Ssum = new int[typeNum];
System.out.println("请输入各类资源总数:");
for (int i = 0; i < typeNum; i++) {