资源简介
该课程设计eclipse打开导入即可,本科答辩最终拿到95分,文档质量不低,其实代码不需要贴太多,注释说明有必要,最好拿广工论文标准来修改报告最好,本课设在别人课设成果基础上加以修改,可以拿去参考修改添加功能。
代码片段和文件信息
package banker;
import java.util.ArrayList;
public class BankerAlgorithm {
// 表示系统中资源种类数
private final int _resourceClassesCount; //资源种类
private final int[] _totalResource; //每个资源拥有的数量
private ArrayList _processes = new ArrayList(); //进程信息
private StringBuffer _executeInfo = new StringBuffer(50);
public BankerAlgorithm(int[] totalResource int resourceClassesCount
ArrayList processes) {
_resourceClassesCount = resourceClassesCount;
_totalResource = totalResource;
_processes = processes;
}
//添加新进程
private ArrayList newProcesses() {
ArrayList pList = new ArrayList();
for (Process p : _processes) {
pList.add(p.newProcess());
}
return pList;
}
//获取可供应资源数
public int[] getAvilable() {
int[] avilable = new int[_resourceClassesCount];
for (int i = 0; i < _resourceClassesCount; ++i) {
avilable[i] = _totalResource[i] - getResourceAllocated(i);
}
return avilable;
}
// index代表某个资源的索引结果为某个资源的已分配量.
private int getResourceAllocated(int index) {
int totalAllocated = 0;
for (Process p : _processes) {
int[] allocated = p.getAllocated();
totalAllocated += allocated[index];
}
return totalAllocated;
}
//添加进程
public boolean addProcess(Process p) {
if (isUniqueProcessId(p.getId())) {
_executeInfo.append(p.getId() + “=“ + p.toString());
return _processes.add(p);
} else {
_executeInfo.append(p.getId() + “与已有进程重名.“);
return false;
}
}
//请求资源
private boolean request(Process p int[] resource) {
//请求资源是否超过最大资源数量,供应资源数量,若是退出
if (!isAllAllocatedLowerMax() || !isAllAllocatedLowerTotalResource())
return false;
int[] avilable = getAvilable();
if (p.isLowerMaxNeed(resource _executeInfo)
&& isRequestLowerAvilable(avilable resource)) {
//满足条件,开始进行资源分配
ArrayList pList = newProcesses();
Process newP = getProcessById(pList p.getId());
newP.allocate(resource);
sub(avilable resource);
if (newP.isFinished()) {
_executeInfo.append(p.getId() + “->“);
add(avilable newP.getAllocated());
}
//进程是否通过安全性算法
if (isSecured(pList avilable)) {
p.allocate(resource);
if (p.isFinished()) {
_executeInfo.append(“\n进程“ + p.getId() + “执行完毕.“);
_processes.remove(p);
}
return true;
} else
return false;
} else
return false;
}
// 判断当前系统是否安全
public boolean isSecured() {
return isSecured(newProcesses() getAvilable());
}
private boolean isSecured(ArrayList pList int[] avilable) {
if (!isAllMaxNeedLowerTotalResource(pList))
return false;
while (!isAllFinished(pList)) {
Process p = searchProcessLowerAvilable(pList avilable);
if (p != null) {
int[] need = p.getNeed();
p.allocate(need);
_executeInfo.append(p.getId() + “->“);
sub(avilable need);
add(avilable p.getAllocated());
} else {
_executeInfo.append(“系统中
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 301 2018-01-06 14:27 BankerSystem\.classpath
文件 388 2018-01-06 14:27 BankerSystem\.project
文件 598 2018-01-06 14:27 BankerSystem\.settings\org.eclipse.jdt.core.prefs
文件 8841 2018-01-09 22:28 BankerSystem\bin\banker\BankerAlgorithm.class
文件 4527 2018-01-07 16:47 BankerSystem\bin\banker\Process.class
文件 5534 2018-01-07 16:26 BankerSystem\bin\UI\AddProcessDialog.class
文件 4355 2018-01-07 16:26 BankerSystem\bin\UI\AddResourceDialog.class
文件 12825 2018-01-09 22:28 BankerSystem\bin\UI\BankerMainUI.class
文件 7024 2018-01-07 16:26 BankerSystem\bin\UI\ChangeProcessDialog.class
文件 3384 2018-01-07 16:26 BankerSystem\bin\UI\DeleteProcessDialog.class
文件 4585 2018-01-07 16:26 BankerSystem\bin\UI\RequestResourceDialog.class
文件 7561 2018-01-09 22:28 BankerSystem\src\banker\BankerAlgorithm.java
文件 4164 2018-01-07 16:47 BankerSystem\src\banker\Process.java
文件 5580 2018-01-07 16:26 BankerSystem\src\UI\AddProcessDialog.java
文件 3532 2018-01-07 16:26 BankerSystem\src\UI\AddResourceDialog.java
文件 14870 2018-01-09 22:28 BankerSystem\src\UI\BankerMainUI.java
文件 7020 2018-01-07 16:26 BankerSystem\src\UI\ChangeProcessDialog.java
文件 2662 2018-01-07 16:26 BankerSystem\src\UI\DeleteProcessDialog.java
文件 3791 2018-01-07 16:26 BankerSystem\src\UI\RequestResourceDialog.java
文件 1789120 2018-01-27 20:07 银行家算法报告.docx
文件 28861 2018-01-09 22:31 银行家算法课程设计.jar
目录 0 2018-01-09 22:32 BankerSystem\bin\banker
目录 0 2018-01-09 22:32 BankerSystem\bin\UI
目录 0 2018-01-09 22:32 BankerSystem\src\banker
目录 0 2018-01-09 22:32 BankerSystem\src\UI
目录 0 2018-01-09 22:32 BankerSystem\.settings
目录 0 2018-01-09 22:32 BankerSystem\bin
目录 0 2018-01-09 22:32 BankerSystem\src
目录 0 2018-01-09 22:32 BankerSystem
----------- --------- ---------- ----- ----
............此处省略2个文件信息
- 上一篇:java网站后台管理系统源码
- 下一篇:UEditor-1.4.3.3 JSP版本
相关资源
- android网上服装购物系统
- JSP课设课程设计选题管理系统
- 燕山大学计算机专业javaweb课设大学师
- jlu软件学院软构件与中间件JavaEE课设
- JAVA+SQLserver+影院售票管理系统数据库
- 教师业务档案管理系统数据库课设-源
- JavaWeb课设--网上商城购物.zip
- 软件工程课程设计飞机订票系统Java
- 数据库课设-物流管理系统JAVA+MYSQL完整
- 东北大学数据结构与算法课程设计实
- 网站流量统计web课设jsp
- Javaweb课设||毕业设计点餐系统前后端
- java web课程设计 机房管理系统
- 快递管理系统课设 (servlet+javabean+j
- Java经典程序100个!让你零基础作出不
- 数据库课设--学生成绩管理系统
- Android五子棋代码报告完整
- 长沙学院软件专业javaweb商城课设
- 广工数据库课设java
- Java课设mysql简易考试系统
- java课程设计 中国象棋
- 数据库课设图书馆管理信息系统Java
- java网吧管理系统课设项目+毕业设计
- 教室管理系统 广工数据库课设代码及
- Java mysql 科研信息管理系统(数据库课
- 数据库课设设计_java_SQLserver2008
- Java报刊订阅管理系统
- Android 课设 在线订餐项目源码(含a
- java课设--个人备忘录管理系统
- Java课设--图书信息管理系统
评论
共有 条评论