• 大小: 57KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签: code  

资源简介

包括实验题目,代码及运行结果
实验4 设备管理(2学时)
一、实验目的
理解设备管理的概念和任务,掌握独占设备的分配、回收等主要算法的原理并编程实现。
二、实验内容
编写程序实现对独占设备的分配与回收的模拟。
三、实验要求
1、实现设备分配、回收、显示系统中设备信息的功能。
2、通过设备类表和设备表记录系统中设备信息、以便进行设备分配。
3、设备类表记录系统中全部设备的情况,每个设备类占一个表目,设备类表的数据结构如表1所示。
设备类
拥有设备数量
可分配设备数量
设备起始地址
图1 设备类表
4、为每一个设备配置一张设备控制表,用于记录本设备的情况。设备控制表的数据结构如图2所示。
绝对号
设备状态(好/坏)
是否分配(是/否)
占有作业名
相对号
图2 设备控制表
5、程序中建立分配设备和回收设备函数。
6、设系统有3类设备,每类设备的设备数分别为2、3、4。
7、要求键盘输入作业名、作业所需设备类和设备相对号。

资源截图

代码片段和文件信息

#include 
#include 
#include 
using namespace std;

/****  设备类表  ****/
struct equipclass{
    char type[10]; // 设备类名
    int have; // 拥有设备数量
    int available; // 可分配设备数量
    int add; // 设备起始地址
}ec[100];
/****  设备控制表  ****/
struct equipreglate{
    char type[10]; // 设备类名
    int abs_num; // 绝对号
    bool state; // 设备状态 1表示好,0表示坏
    bool alloc; // 是否分配 1表示已经分配, 0表示未分配
    char name[10]; // 占有作业名
    int rel_num; // 相对号
}er[10000];
/****  作业  ****/
struct project{
    char name[10]; // 作业名称
    char need[10]; // 作业需要的设备类别
    int rel_num; // 作业需要的设备相对号
    int finish; // 作业是否完成, -1表示没有该作业, 0表示未完成,1表示已经完成
}work[100];

int n;
void input(){
    cout << “请输入设备类别数: “; cin >> n;
    for(int i=0; i        cout << “请输入第“ << i+1 << “类设备的名称拥有设备数量设备起始地址: “;
        cin >> ec[i].type >> ec[i].have >> ec[i].add;
        ec[i].available = ec[i].have;
        int add = ec[i].add;
        bool sta[10000];
        cout << “请输入第“ << i+1 << “类设备的各台设备的好坏(1表示好,0表示坏): “;
        for(int j=add; j            cin >> sta[j];
            if(sta[j] == 0) ec[i].available--;
        }
        for(int j=add; j            strcpy(er[j].typeec[i].type);
            er[j].abs_num = j;
            er[j].state = sta[j];
            er[j].alloc = 0;
            strcpy(er[j].name“NULL“);
            er[j].rel_num = j-add;
        }
    }
    for(int i=0; i<100; i++)
        work[i].finish = -1;
}

void allocation(int id){
    cout << “请输入作业名称作业所需设备类设备相对号: “;
    char name[10]need[10]; int rel_num;
    cin >> name >> need >> rel_num;
    char type[10]; strcpy(typeneed);
    int cnt = -1;
    for(int i=0; i        if(strcmp(typeec[i].type) == 0){
            cnt = i;
            break;
        }
    }
    if(cnt == -1) { cout << “分配失败 没有您所需要的设备“ << endl; return ; }
    int add = ec[cnt].add have = ec[cnt].have ava = ec[cnt].available;
    int t_add = add+rel_num;
    if(er[t_add].alloc == 1) { cout << “分配失败 您所需要的设备被作业“ << er[t_add].name << “所占有“ << endl; return ;}
    if(rel_num >= have) { cout << “分配失败 不存在该相对号的设备“ << endl; return ;}
    if(er[t_add].state == 0) { cout << “分配失败 您所需要的设备处于坏状态 无法工作“ << endl; return ;}
    if(ava == 0) { cout << “分配失败 您所需要的设备已经分配完了“ << endl; return ;}
    strcpy(work[id].namename); strcpy(work[id].needneed); work[id].rel_num = rel_num;
    er[t_add].alloc = 1; strcpy(er[t_add].namework[id].name);
    ec[cnt].available--;
    work[id].finish = 0;
    cout << “分配成功! 设备类别: “ << type << “\t设备绝对号: “ << er[t_add].abs_num << “\t设备相对号: “ << er[t_add].rel_num << endl;
}
void eback(){
    char name[10];
    cout << “请输入已完成的作业名称: “; cin >> name;
    for(int i=0; i<100; i++)
        if(strcmp(namework[i].name) == 0){
            work[i].finish = 1; break;
        }
    int id = -1;
    for(int i=0; i<10000; i++)
        if(strcmp(nameer[i].name) == 0){
            id =

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4866  2018-05-23 15:11  main.cpp
     文件       34304  2018-05-16 15:28  实验题目4.doc
     文件       54816  2018-05-14 20:51  新建 Microsoft Word 文档.docx

评论

共有 条评论