设备管理(3)

2019-04-13 22:45

if(!temp_chct->blockqueue) //阻塞队列为空 {

temp_chct->blockqueue=head; }

else //阻塞队列不为空 {

PCB* t=temp_coct->blockqueue; while(t)

t=t->next; if(!t) {

temp_dct->blockqueue=NULL; } else

t->next=head; } }

else //通道可用 {

temp_chct->use=head;

temp_chct->state=false; //通道状态置忙

cout<<\该设备已经成功申请,请输入下一条指令.\ } } } }

else if(l==2) //删除设备 {

vector::iterator ator; vector::iterator ator1;

cout<<\现在系统拥有的设备如下:\

for(ator=SDT_table.begin();ator!=SDT_table.end();ator++) {

cout

cout<<\请输入想要删除的设备名:\cin>>name;

for(ator=SDT_table.begin();ator!=SDT_table.end();ator++) {

if(ator->equipmentID==name) //查找到了该设备 {

ator1=ator->dct;

COCT *temp=ator1->front; ator->dct=NULL;

SDT_table.erase(ator); //从设备表中删除 ator=SDT_table.begin(); /*

for(ator=SDT_table.begin();ator!=SDT_table.end();ator++) cout

if(temp->use) {

if(temp->use->equipment==name) //该设备正在占用控制器 {

if(!temp->blockqueue) //控制器的等待队列为空 {

temp->state=true; temp->use=NULL; }

else //控制器的等待队列有内容 {

PCB *tt=temp->blockqueue; temp->blockqueue->next=tt->next; temp->use=tt; tt->next=NULL; } }

else //该设备没有占用控制器 {

temp->blockqueue=NULL; }

}

ator1->blockqueue=NULL; ator1->front=NULL; ator1->use=NULL; vector::iterator ator2; vector D;

for(ator2=DCT_table.begin();ator2!=DCT_table.end();ator2++) {

if(ator2!=ator1)

D.push_back(*ator2); }

DCT_table=D;

// ator1=DCT_table.erase(ator1); //删除该设备 break; } }

if(ator==SDT_table.end()) //判断是否查找到设备 {

cout<<\没有该设备,请重新输入操作指令\ } else {

cout<<\成功删除该设备,请输入下一条操作指令。\ } }

else if(l==3) //添加设备 {

SDT SDT_add; DCT DCT_add; int select;

cout<<\输入要添加的设备名称:\cin>>DCT_add.equipmentID;

SDT_add.equipmentID=DCT_add.equipmentID;

cout<<\输入设备的类型(单个数字或单个字母):\cin>>DCT_add.type;

SDT_add.type=DCT_add.type; SDT_add.dct=&DCT_add; DCT_add.blockqueue=NULL; DCT_add.use=NULL; DCT_add.state=true;

SDT_table.push_back(SDT_add); DCT_table.push_back(DCT_add);

cout<<\是否需要新增控制器: 1.新增 2.使用已存在的\cin>>select;

if(select==1) //新增 {

COCT c;

c.blockqueue=NULL; c.state=true;

cout<<\输入控制器的名称(如:控制器1):\cin>>c.controllerID; c.use=NULL;

DCT_add.front=&c;

cout<<\cout<<\链接到哪个通道:\cin>>select;

if(select==1) //链接到两个不同的通道 {

c.front=h1; } else {

c.front=h2; }

cout<<\连接成功.\COCT_table.push_back(c); }

else //利用以前的控制器 {

for(vector::iterator ator=COCT_table.begin();ator!=COCT_table.end();ator++) 现有控制器名称 {

cout

cout<<\选择的控制器名是(如:控制器1):\cin>>name;

for(ator=COCT_table.begin();ator!=COCT_table.end();ator++) //按名字进行选择 {

if(ator->controllerID==name) {

DCT_add.front=ator;

cout<<\链接成功,请输入下一条指令.\break; } } } }

else if(l==4) //释放设备资源 {

cout<<\想要释放的设备名:\cin>>name;

DCT *DCT_temp; //暂存DCT COCT *COCT_temp; //暂存COCT

//输出 CHCT *CHCT_temp; //暂存CHCT

for(vector::size_typei=0;i

if(SDT_table[i].equipmentID==name) {

DCT_temp=SDT_table[i].dct; COCT_temp=DCT_temp->front; CHCT_temp=COCT_temp->front;

if(!DCT_temp->use) //如果该设备没有被使用 {

cout<<\该设备未被占用,无需释放。\break; }

else //设备现在被占用 {

if(CHCT_temp->use->ID==name) //该设备目前占用通道时 {

if(!CHCT_temp->blockqueue) //通道的等待队列无内容 {

CHCT_temp->state=true; CHCT_temp->use=NULL; }

else //通道的等待队列不为空 {

CHCT_temp->use=CHCT_temp->blockqueue;

CHCT_temp->blockqueue=CHCT_temp->blockqueue->next; } }

if(COCT_temp->use->ID==name) //设备占用控制器 {

if(!COCT_temp->blockqueue) //控制器的等待队列为空 {

COCT_temp->use=NULL; COCT_temp->state=true; }

else //控制器等待队列有内容 {

COCT_temp->use=COCT_temp->blockqueue;

COCT_temp->blockqueue=COCT_temp->blockqueue->next; }

}

if(!DCT_temp->blockqueue) //设备自身的等待队列 { //为空 DCT_temp->state=true; DCT_temp->use=NULL; break; }

else //该设备目前被其他进程申请(队列不空) {

DCT_temp->use=DCT_temp->blockqueue;

DCT_temp->blockqueue=DCT_temp->blockqueue->next; break; }

if(!COCT_temp->use) {

COCT_temp->use=DCT_temp->use; COCT_temp->state=false; if(!CHCT_temp->use) {

CHCT_temp->use=COCT_temp->use; CHCT_temp->state=false;

} } } } }

if(i==SDT_table.size()) {

cout<<\该设备不存在,请重新输入下一条操作指令。\ } else {

cout<<\成功释放该设备,请输入下一条指令。\ } } }

return 0; }


设备管理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年初级护士资格证考试《专业实践能力》模拟试卷及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: