Chinaunix首页 | 论坛 | 博客
  • 博客访问: 387237
  • 博文数量: 71
  • 博客积分: 3226
  • 博客等级: 中校
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 14:55
文章分类

全部博文(71)

文章存档

2012年(8)

2011年(12)

2010年(11)

2008年(29)

2007年(11)

分类:

2007-12-28 19:48:49

#include
#include
#include
#include
#include
#include

const int MAX_P=20;
const int MAXA=10; //定义A类资源的数量
const int MAXB=5;
const int MAXC=7;


typedef struct node
{  int a;
   int b;
   int c;
   int remain_a;
   int remain_b;
   int remain_c;
}bank;

typedef struct node1
{  char name[20];
   int a;
   int b;
   int c;
   int need_a;
   int need_b;
   int need_c;
}process;

bank banker;
process processes[MAX_P];
int quantity;

//初始化函数
void initial()
{  int i;
   banker.a=MAXA;
   banker.b=MAXB;
   banker.c=MAXC;
   banker.remain_a=MAXA;
   banker.remain_b=MAXB;
   banker.remain_c=MAXC;

   for(i=0;i   {  strcpy(processes[i].name,"");
      processes[i].a=0;
      processes[i].b=0;
      processes[i].c=0;
      processes[i].need_a=0;
      processes[i].need_b=0;
      processes[i].need_c=0;
   }
}

//新加作业
void add()
{  char name[20];
   int flag=0;
   int t;
   int need_a,need_b,need_c;
   int i;

   cout<   cout<<"新加作业"<   cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<   cout<<"请输入新加作业名:";
   cin>>name;

   for(i=0;i   {  if(!strcmp(processes[i].name,name)){
      flag=1;
      break;
    }
}


if(flag)
{  cout<<"错误,作业已存在"<else
{  cout<<"本作业所需A类资源:";
   cin>>need_a;
   cout<<"本作业所需B类资源:";
   cin>>need_b;
   cout<<"本作业所需C类资源:";
   cin>>need_c;
   t=1;
   cout<   if(need_a>banker.remain_a)
   {  cout<<"错误,所需A类资源大于银行家所剩A类资源"<      t=0;
   }
   if(need_b>banker.remain_b)
   {  cout<<"错误,所需B类资源大于银行家所剩B类资源"<      t=0;
   }
   if(need_c>banker.remain_c)
   {  cout<<"错误,所需C类资源大于银行家所剩C类资源"<      t=0;
   }
   if(t)
   {  strcpy(processes[quantity].name,name);
      processes[quantity].need_a=need_a;
      processes[quantity].need_b=need_b;
      processes[quantity].need_c=need_c;
      quantity++;
      cout<<"新加作业成功"<   }
   else
   {  cout<<"新加作业失败"<}
}

//为作业申请资源
void bid()
{  char name[20];
   int i,p;
   int a,b,c;
   int flag;

   cout<   cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<   cout<<"要申请资源的作业名:";
   cin>>name;

   p=-1;
   for(i=0;i   {  if(!strcmp(processes[i].name,name))
      {  p=i;
         break;
      }
   }
   if(p!=-1)
   {  cout<<"该作业要申请A类资源数量:";
      cin>>a;
      cout<<"该作业要申请B类资源数量:";
      cin>>b;
      cout<<"该作业要申请C类资源数量:";
      cin>>c;

      flag=1;
      if((a>banker.remain_a)||(a>processes[p].need_a-processes[p].a))
      {  cout<<"错误,所申请A类资源大于银行家所剩A类资源或该进程还需数量"<         flag=0;
      }
      if((b>banker.remain_b)||(b>processes[p].need_b-processes[p].b))
      {  cout<<"错误,所申请B类资源大于银行家所剩B类资源或该进程还需数量"<         flag=0;
      }
      if((c>banker.remain_c)||(c>processes[p].need_c-processes[p].c))
      {  cout<<"错误,所申请C类资源大于银行家所剩C类资源或该进程还需数量"<         flag=0;
      }
      if(flag)
      {  banker.remain_a-=a;
         banker.remain_b-=b;
         banker.remain_c-=c;

         processes[p].a+=a;
         processes[p].b+=b;
         processes[p].c+=c;

         cout<<"为作业申请资源成功"<     }
     else  
     {  cout<<"为作业申请资源失败"<   }
   else
   {  cout<<"该作业不存在"<}

//撤消作业
void finished()
{  char name[20];
   int i,p;

   cout<   cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<   cout<<"要撤消作业名:";
   cin>>name;

   p=-1;
   for(i=0;i   {  if(!strcmp(processes[i].name,name))
      {  p=i;
         break;
      }
   }
   if(p!=-1)
   {  banker.remain_a+=processes[p].a;
      banker.remain_b+=processes[p].b;
      banker.remain_c+=processes[p].c;
      for(i=p;i      {  processes[i]=processes[i+1];  }
      strcpy(processes[quantity-1].name,"");
      processes[quantity-1].a=0;
      processes[quantity-1].b=0;
      processes[quantity-1].c=0;
      processes[quantity-1].need_a=0;
      processes[quantity-1].need_b=0;
      processes[quantity-1].need_c=0;

      quantity--;

      cout<<"撤消作业成功"<   }
   else
   {  cout<<"撤消作业失败"<}

//查看资源情况
void view()
{  int i;
   cout<   cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<   cout<<"银行家所剩资源(剩余资源/总共资源)"<   cout<<"A类:"<   cout<<" B类:"<   cout<<" C类:"<
   cout<   if(quantity>0)
   {  for(i=0;i      {  cout<<"作业名:"<         cout<<"A类:"<         cout<<" B类:"<         cout<<" C类:"<         cout<      }
   }
   else
   {  cout<<"当前没有作业"<}

//显示版权信息函数
void version()
{  cout<   cout<<" ┏━━━━━━━━━━━━━━━━━━━━━━━┓"<   cout<<" ┃        银 行 家 算 法         ┃"<   cout<<" ┠───────────────────────┨"<   cout<<" ┃   (c)All Right Reserved Neo       ┃"<   cout<<" ┃      sony006@163.com          ┃"<   cout<<" ┃     version 2004 build 1122      ┃"<   cout<<" ┗━━━━━━━━━━━━━━━━━━━━━━━┛"<   cout<}

void main()
{  int chioce;
   int flag=1;
   initial();

   version();

   while(flag)
   {  cout<<"━━━━━━━━━━━━━━━━━━━━━━━━━━━━"<      cout<<"1.新加作业 2.为作业申请资源 3.撤消作业"<      cout<<"4.查看资源情况 0.退出系统"<      cout<<"请选择:";
      cin>>chioce;

      switch(chioce)
      {  case 1:
           add();
           break;
         case 2:
           bid();
           break;
         case 3:
           finished();
           break;
         case 4:
           view();
           break;
         case 0:
           flag=0;
           break;
         default:
           cout<<"选择错误"<      }
   }
}
阅读(1962) | 评论(0) | 转发(1) |
0

上一篇:下学期的目标

下一篇:

给主人留下些什么吧!~~