求 C或c++ 语言下的 银行排队系统代码 ,急用啊,QQ:458556778. 不胜感激
非常感谢您,但还有些要求,希望您多多指点,1、编程实现一个“银行排队模拟系统”1)该程序模拟客户到银行取号-排队-被叫号-被服务的过程;2)程序执行流程如下:Step1:...
非常感谢您,但还有些要求,希望您多多指点,
1、 编程实现一个“银行排队模拟系统”
1) 该程序模拟客户到银行取号-排队-被叫号-被服务的过程;
2) 程序执行流程如下:
Step1: 客户到达银行,并从取号机取号;
Step2: 如果大厅中有空闲座位,则座下等待,否则,在大厅外等待;
Step3: 银行职员如果发现有客户等待,则依次叫号服务,否则休息;
Step4: step1-step4重复执行
3) 大厅中座椅数量为20个;
4) 服务窗口为2个;
5) “客户到来”通过命令行输入客户名字模拟;
6) 为了模拟实际情况,每个客户服务时间不小于20秒,可随机确定;
7) 程序顺序列出不同窗口服务客户的:名称,窗口号,服务时间
2、 提示
1) 需一个主控进程,随时监控客户到来,并为之创建进程;
2) 取号机应视为互斥型临界资源
3) 座椅应视为临界资源
4) 客户等待及被叫号应视为进程间同步过程 展开
1、 编程实现一个“银行排队模拟系统”
1) 该程序模拟客户到银行取号-排队-被叫号-被服务的过程;
2) 程序执行流程如下:
Step1: 客户到达银行,并从取号机取号;
Step2: 如果大厅中有空闲座位,则座下等待,否则,在大厅外等待;
Step3: 银行职员如果发现有客户等待,则依次叫号服务,否则休息;
Step4: step1-step4重复执行
3) 大厅中座椅数量为20个;
4) 服务窗口为2个;
5) “客户到来”通过命令行输入客户名字模拟;
6) 为了模拟实际情况,每个客户服务时间不小于20秒,可随机确定;
7) 程序顺序列出不同窗口服务客户的:名称,窗口号,服务时间
2、 提示
1) 需一个主控进程,随时监控客户到来,并为之创建进程;
2) 取号机应视为互斥型临界资源
3) 座椅应视为临界资源
4) 客户等待及被叫号应视为进程间同步过程 展开
1个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int n=0;//记录队列的长度
void InitQueue(LinkQueue &s)
{
s.front=s.rear=(QueuePtr)malloc(sizeof(QNode));
s.front->next=NULL;
}
void EnQueue(LinkQueue &s,int e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
s.rear->next=p;
s.rear=p;
n++;
}
void DeQueue(LinkQueue &s)
{
QueuePtr p;
p=s.front->next;
printf("%d \n",p->data);
s.front->next=p->next;
if(s.rear==p)
s.rear=s.front;
free(p);
n--;
}
void main()
{
int a;
LinkQueue s;
int e=10001;
InitQueue(s);
do
{
scanf("%d",&a);
switch(a)
{
case 1:
{
EnQueue(s,e);
printf("标号为%4d入队,前面还有%4d人\n",s.front->next->data,n-1);
e++;
break;}
case 2:
{
if(n-1>0)
DeQueue(s);
if(n-1<0)
printf("此时无人\n");
else
printf("前面还有%4d人\n",n-1);
break;}
}
} while(1);
}
#include <stdlib.h>
typedef struct QNode
{
int data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue;
int n=0;//记录队列的长度
void InitQueue(LinkQueue &s)
{
s.front=s.rear=(QueuePtr)malloc(sizeof(QNode));
s.front->next=NULL;
}
void EnQueue(LinkQueue &s,int e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
s.rear->next=p;
s.rear=p;
n++;
}
void DeQueue(LinkQueue &s)
{
QueuePtr p;
p=s.front->next;
printf("%d \n",p->data);
s.front->next=p->next;
if(s.rear==p)
s.rear=s.front;
free(p);
n--;
}
void main()
{
int a;
LinkQueue s;
int e=10001;
InitQueue(s);
do
{
scanf("%d",&a);
switch(a)
{
case 1:
{
EnQueue(s,e);
printf("标号为%4d入队,前面还有%4d人\n",s.front->next->data,n-1);
e++;
break;}
case 2:
{
if(n-1>0)
DeQueue(s);
if(n-1<0)
printf("此时无人\n");
else
printf("前面还有%4d人\n",n-1);
break;}
}
} while(1);
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询