|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题如下:
D:\数据结构课程设计\yhyw\yhyw.cpp(207) : error C2065: 'destroyqueue1' : undeclared identifier
D:\数据结构课程设计\yhyw\yhyw.cpp(208) : error C2065: 'destroyqueue2' : undeclared identifier
执行 cl.exe 时出错.
所有代码 如下:
//头文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream.h>
#include<windows.h>
//宏定义
#define MONEY 5000//个人业务值,交易额上限
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int status;
//定义的结构体
typedef struct
{
int arrivetime;//到达时间
int OccurTime;//事件发生时间
int NType;//事件类型,0表示到达事件,1表示离开事件。同时用1表示存款,2表示取款。
int duration;//办理业务时间
long int money;//交易金额
}Event,ElemType1;
typedef struct
{
//等待队列元素
int arrivetime;//到达时间
int duration;//办理业务时间
long int money;//交易金额
}wait,ElemType2;
typedef struct QNode1
{
ElemType1 data;
struct QNode1 *next;
}QNode1,*Queue1;
typedef struct QNode2
{
ElemType2 data;
struct QNode2 *next;
}QNode2,*Queue2;
typedef struct
{
Queue1 front;
Queue1 rear;
}LinkQueue1;
typedef struct
{
Queue2 front;
Queue2 rear;
}LinkQueue2;
//全局变量
long int total_money;//银行现存资金总额
int total_time;//客户逗留总时间
int use_time;//每个客户所用时间
int money;//每个客户办理的金额
int closetime;//银行营业时间
int INTERTIME;//下一个用户到达的时间间隔
int DURATION;//办理业务所需时间
int number;//办理业务的次序
int time1;//系统当前时间
LinkQueue1 Q1;
LinkQueue2 Q2;
Event en;//事件
wait en1;//队列2元素
//初始化队列1
status InitQueue1()
{
Q1.front=Q1.rear=(Queue1)malloc(sizeof(QNode1));
if(!Q1.front)exit(OVERFLOW);
Q1.front->next=NULL;
return OK;
}
//初始化队列2
status InitQueue2()
{
Q2.front=Q2.rear=(Queue2)malloc(sizeof(QNode2));
if(!Q2.front)exit(OVERFLOW);
Q2.front->next=NULL;
return OK;
}
//销毁队列1
status destoryqueue1()
{
while(Q1.front)
{
Q1.rear=Q1.front->next;
free(Q1.front);
Q1.front=Q1.rear;
}
return OK;
}
//销毁队列2
status destoryqueue2()
{
while(Q2.front)
{
Q2.rear=Q2.front->next;
free(Q2.front);
Q2.front=Q2.rear;
}
return OK;
}
//队列1入队列
status EnQueue1()
{
Queue1 p,r,r1;
p=(Queue1)malloc(sizeof(QNode1));
if(!p)exit(OVERFLOW);
p->data.arrivetime=en.arrivetime;
p->data.OccurTime=en.OccurTime;
p->data.NType=en.NType;
p->data.duration=en.duration;
p->data.money=en.money;
r=Q1.front->next;
while(r)
{
if(p->data.arrivetime<r->data.arrivetime)
{
if(r==Q1.front->next)
{
p->next=r;
Q1.front->next=p;
}
else
{
r1->next=p;
p->next=r;
}
}
r1=r;r=r->next;
}
if(!r)
{
if(Q1.front->next==NULL)
{
Q1.front->next=p;
Q1.rear=p;
Q1.rear->next=NULL;
}
else
{
p->next=NULL;
Q1.rear->next=p;
Q1.rear=p;
}
}
return OK;
}
//队列2入队列
status EnQueue2()
{
Queue2 p;
p=(Queue2)malloc(sizeof(QNode2));
if(!p)exit(OVERFLOW);
p->data.arrivetime=en1.arrivetime;
p->data.duration=en1.duration;
p->data.money=en1.money;
p->next=NULL;
Q2.rear->next=p;
Q2.rear=p;
return OK;
}
//若队列1不空,则删除Q1的队头元素,并用en返回其值
status DeQueue1()
{
Queue1 p;
if(Q1.front=Q1.rear) return ERROR;
p=Q1.front->next;
en.arrivetime=p->data.arrivetime;
en.OccurTime=p->data.OccurTime;
en.NType=p->data.NType;
en.duration=p->data.duration;
en.money=p->data.money;
Q1.front->next=p->next;
if(Q1.rear==p) Q1.rear=Q1.front;//只有一个人时
free(p);
return OK;
}
//若队列2不空,则删除Q2的队头元素,并用en1返回其值
status DeQueue2()
{
Queue2 p;
if(Q2.front==Q2.rear)return ERROR;
p=Q2.front->next;
en1.arrivetime=p->data.arrivetime;
en1.duration=p->data.duration;
en1.money=p->data.money;
Q2.front->next=p->next;
if(Q2.rear==p) Q2.rear=Q2.front;//只有一个人时
free(p);
return OK;
}
//营业时间结束,全部客户离开银行
void free_system()
{
destroyqueue1();
destroyqueue2();
}
//产生随机数
status rand_ar(int *intertime,long int *money,int *duration,int *NType)
{
*intertime=rand()%INTERTIME+1;//下个客户到达的时间间隔,不大于INTERTIME
*money=rand()%MONEY+1;//每个顾客办理的金额,不大于MONEY
*duration=rand()%DURATION+1;//客户办理业务所需时间,不大于DURATION
*NType=rand()%2;//事件类型分为0和1两种
return OK;
}
//初始化操作
void OpenForDay()
{
printf("请输入银行的初始存款:");
scanf("%d",&total_money);
printf("请输入银行的营业时间(分钟):");
scanf("%d",&closetime);
printf("请输入最大到达时间间隔(分钟):");
scanf("%d",&INTERTIME);
printf("请输入最短处理时间(分钟):");
scanf("%d",&DURATION);
total_time=0;//客户逗留总时间(初始值)
number=0;//办理业务的次序(初始值)
InitQueue1();//初始化队列1
InitQueue2();//初始化队列2
en.arrivetime=0;//到达时间
en.OccurTime=0;//事件发生时间
en.NType=0;//事件类型,暂时值
en.money=0;//交易金额,暂时值
en.duration=0;//办理业务时间,暂时值
EnQueue1();//事件进队列
}
//查找上一离开事件的发生时间
int find_leave()
{
Queue1 p;
int i=0;
p=Q1.front->next;
while(p!=NULL)
{
if(p->data.NType!=0)
i=p->data.OccurTime;
p=p->next;
}
return i;
}
//处理客户到达事件
void CustomerArrived()
{
int intertime;
int i;
time1=en.OccurTime;
rand_ar(&intertime,&(en.money),&(en.duration),&(en.NType));
//设置一离开事件插入事件表
en.NType++;//0变1,1变2
i=find_leave();//查找上一离开事件的发生时间
if(i==0)//第一位顾客
en.OccurTime=en.arrivetime+en.duration;
else
if(i>=en.arrivetime)//本事件到达时上一事件还未离开
en.OccurTime=i+en.duration;//则此事件的离开时间=上一事件的离开时间+本事件处理时间
else//上一事件离开之后,本事件才到达
en.OccurTime=en.arrivetime+en.duration;//则此事件的离开时间=本事件到达时间+本事件处理时间
EnQueue1();//设置下一用户到达事件插入队列1
en.arrivetime=en.arrivetime+intertime;//下一用户到达时间
en.OccurTime=en.arrivetime;
en.NType=0;//暂时值
en.money=0;//暂时值
en.duration=0;//暂时值
EnQueue1();
}
//返回队列2的长度
int getlong_q2()
{
int i=0;
Queue2 p;
p=Q2.front->next;
while(p)
{
i++;
p=p->next;
}
return i;
}
//顺序检查队列2是否有满足条件者
status check_q2()
{
int i,j,z=0;
i=getlong_q2();//用i返回队列2长度
for(j=1;j<=i;j++)
{
DeQueue2();//队列2出队,用en1返回其值
if(en1.money<=total_money)//若队列2出队元素的需要交易的金额<=银行现存金额,则可以办理
{
if(time1>closetime)
{
printf("--\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n",z,use_time,number,z,
(en1.arrivetime),en1.money);
}
else
{
time1=time1+en1.duration;//更新系统当前时间
use_time=time1-en1.arrivetime;
total_time+=use_time;//更新逗留时间
total_money-=en1.money;//更新资金总额
number++;//更新实现交易的用户数
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t-%d\n",total_money,use_time,number,time1,(en1.arrivetime),(en1.money));
}
}
else
{//若队列2出队元素的要交易的金额>银行现存金额,不能办理
if(time1>closetime)
{
printf("--\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n",z,use_time,
number,z,(en1.arrivetime),en1.money);
}
else
{
EnQueue2();//继续插入队列的队尾,继续等待
}
}
}
return OK;
}
//队列1离开时间减duraion(业务办理时间)
int cut_duration(int e)//e是形参,指代办理业务的时间
{
Queue1 p,q,r;
ElemType1 en;
p=Q1.front->next;
r=Q1.front;
if(p)
{
if(p->data.NType!=0)
{
q=p->next;
r->next=q;//删除结点
en.arrivetime=p->data.arrivetime;//到达时间
en.OccurTime=p->data.OccurTime-e;//事件发生时间
en.NType=p->data.NType;//事件类型
en.duration=p->data.duration;//办理业务时间
en.money=p->data.money;//数额
free(p);
EnQueue1();
}
}
return OK;
}
//处理客户离开事件
void CustomerDeparture()
{
int i;
i=en.NType;//业务类型,1表示存款,2表示取款
time1=en.OccurTime-en.duration;
if(i==OK)//是否是办理存款
{
if(en.OccurTime>closetime)//营业结束,全部客户离开银行
free_system();
else//营业时间没有结束,继续办理
{
use_time=en.OccurTime-en.arrivetime;
total_time+=use_time;//更新逗留的总时间
total_money=total_money+en.money;//更新资金总额
number++;//更新服务的客户数
time1=en.OccurTime;//更新系统当前时间
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n",total_money,use_time,number,en.OccurTime,en.arrivetime,en.money);
check_q2();//检查队列2是否有满足条件者
}
}
else//办理取款
{
if(en.money>total_money)//办理取款,当申请金额不能满足时,离开队列1进入队列2等待
{
cut_duration(en.duration);//从队列1中删除该结点
en1.arrivetime=en.arrivetime;
en1.duration=en.duration;
en1.money=en.money;
EnQueue2();//进入队列2继续等待
}
else//办理取款,当能满足所申请金额时进行队列1
{
if(en.OccurTime>closetime)//营业结束,全部客户离开银行
free_system();
else
{
use_time=en.OccurTime-en.arrivetime;//顾客所用时间=事件发生时间-事件到达时间
total_time+=use_time;//更新逗留时间
total_money-=en.money;//更新资金总额
time1=en.OccurTime;//更新系统当前时间
number++;//更新客户总数
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t-%d\n",total_money,use_time,number,en.OccurTime,en.arrivetime,en.money);
}
}
}
}
//主函数
void main()
{
int n;
printf("========================================\n");
printf(" 欢迎使用银行业务模拟系统\n");
printf("----------------------------------------");
printf(" 班级:测绘1703班 \n");
printf(" 姓名:陈 蕾 \n");
printf(" 学号:631701110304\n");
printf("========================================\n");
printf("请选择开始或结束:\n");
printf("1.进入银行业务模拟系统\n");
printf("0.退出程序\n");
scanf("%d",&n);
while(n==1)
{
OpenForDay();//初始化操作
printf("----------------------------------------\n");
printf("Total_money\tuse_time\tnumber\ten.OccurTime\ten.arrivetime\tmoney\n");
{
while(Q1.front)
{
DeQueue1();//队列1出队列,并用en返回其值
if(en.NType==0)//en.NType等于0表示客户到达,1表示客户离开
CustomerArrived();//处理客户到达事件
else
CustomerDeparture();//处理客户离开事件,业务类型en.NType等于1表示存款,2表示取款
}
printf("1.营业结束后银行现存资金总额(元):%1d\n",total_money);
printf("2.营业时间内实现交易的客户数(人):%d\n",number);
printf("3.客户在银行逗留的总时间(分钟):%d\n",total_time);
printf("4.客户在银行的平均逗留时间(分钟):%f\n",(float)total_time/(float)number);
printf("----------------------------------------");
}
printf("以上为模拟结果!请选择继续或退出:\n");
printf("1.继续模拟\n");
printf("0.退出程序\n");
scanf("%d",&n);
if(n==0)
{
printf("谢谢使用本系统,再见!");
break;
}
}
}
拼写错误。 #include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
//宏定义
#define MONEY 5000//个人业务值,交易额上限
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int status;
//定义的结构体
typedef struct
{
int arrivetime;//到达时间
int OccurTime;//事件发生时间
int NType;//事件类型,0表示到达事件,1表示离开事件。同时用1表示存款,2表示取款。
int duration;//办理业务时间
long int money;//交易金额
}Event, ElemType1;
typedef struct
{
//等待队列元素
int arrivetime;//到达时间
int duration;//办理业务时间
long int money;//交易金额
}wait, ElemType2;
typedef struct QNode1
{
ElemType1 data;
struct QNode1* next;
}QNode1, * Queue1;
typedef struct QNode2
{
ElemType2 data;
struct QNode2* next;
}QNode2, * Queue2;
typedef struct
{
Queue1 front;
Queue1 rear;
}LinkQueue1;
typedef struct
{
Queue2 front;
Queue2 rear;
}LinkQueue2;
//全局变量
long int total_money;//银行现存资金总额
int total_time;//客户逗留总时间
int use_time;//每个客户所用时间
int money;//每个客户办理的金额
int closetime;//银行营业时间
int INTERTIME;//下一个用户到达的时间间隔
int DURATION;//办理业务所需时间
int number;//办理业务的次序
int time1;//系统当前时间
LinkQueue1 Q1;
LinkQueue2 Q2;
Event en;//事件
wait en1;//队列2元素
//初始化队列1
status InitQueue1()
{
Q1.front = Q1.rear = (Queue1)malloc(sizeof(QNode1));
if (!Q1.front)exit(OVERFLOW);
Q1.front->next = NULL;
return OK;
}
//初始化队列2
status InitQueue2()
{
Q2.front = Q2.rear = (Queue2)malloc(sizeof(QNode2));
if (!Q2.front)exit(OVERFLOW);
Q2.front->next = NULL;
return OK;
}
//销毁队列1
status destroyqueue1()
{
while (Q1.front)
{
Q1.rear = Q1.front->next;
free(Q1.front);
Q1.front = Q1.rear;
}
return OK;
}
//销毁队列2
status destroyqueue2()
{
while (Q2.front)
{
Q2.rear = Q2.front->next;
free(Q2.front);
Q2.front = Q2.rear;
}
return OK;
}
//队列1入队列
status EnQueue1()
{
Queue1 p, r, r1;
p = (Queue1)malloc(sizeof(QNode1));
if (!p)exit(OVERFLOW);
p->data.arrivetime = en.arrivetime;
p->data.OccurTime = en.OccurTime;
p->data.NType = en.NType;
p->data.duration = en.duration;
p->data.money = en.money;
r = Q1.front->next;
while (r)
{
if (p->data.arrivetime < r->data.arrivetime)
{
if (r == Q1.front->next)
{
p->next = r;
Q1.front->next = p;
}
else
{
r1->next = p;
p->next = r;
}
}
r1 = r; r = r->next;
}
if (!r)
{
if (Q1.front->next == NULL)
{
Q1.front->next = p;
Q1.rear = p;
Q1.rear->next = NULL;
}
else
{
p->next = NULL;
Q1.rear->next = p;
Q1.rear = p;
}
}
return OK;
}
//队列2入队列
status EnQueue2()
{
Queue2 p;
p = (Queue2)malloc(sizeof(QNode2));
if (!p)exit(OVERFLOW);
p->data.arrivetime = en1.arrivetime;
p->data.duration = en1.duration;
p->data.money = en1.money;
p->next = NULL;
Q2.rear->next = p;
Q2.rear = p;
return OK;
}
//若队列1不空,则删除Q1的队头元素,并用en返回其值
status DeQueue1()
{
Queue1 p;
if (Q1.front = Q1.rear) return ERROR;
p = Q1.front->next;
en.arrivetime = p->data.arrivetime;
en.OccurTime = p->data.OccurTime;
en.NType = p->data.NType;
en.duration = p->data.duration;
en.money = p->data.money;
Q1.front->next = p->next;
if (Q1.rear == p) Q1.rear = Q1.front;//只有一个人时
free(p);
return OK;
}
//若队列2不空,则删除Q2的队头元素,并用en1返回其值
status DeQueue2()
{
Queue2 p;
if (Q2.front == Q2.rear)return ERROR;
p = Q2.front->next;
en1.arrivetime = p->data.arrivetime;
en1.duration = p->data.duration;
en1.money = p->data.money;
Q2.front->next = p->next;
if (Q2.rear == p) Q2.rear = Q2.front;//只有一个人时
free(p);
return OK;
}
//营业时间结束,全部客户离开银行
void free_system()
{
destroyqueue1();
destroyqueue2();
}
//产生随机数
status rand_ar(int* intertime, long int* money, int* duration, int* NType)
{
*intertime = rand() % INTERTIME + 1;//下个客户到达的时间间隔,不大于INTERTIME
*money = rand() % MONEY + 1;//每个顾客办理的金额,不大于MONEY
*duration = rand() % DURATION + 1;//客户办理业务所需时间,不大于DURATION
*NType = rand() % 2;//事件类型分为0和1两种
return OK;
}
//初始化操作
void OpenForDay()
{
printf("请输入银行的初始存款:");
scanf("%d", &total_money);
printf("请输入银行的营业时间(分钟):");
scanf("%d", &closetime);
printf("请输入最大到达时间间隔(分钟):");
scanf("%d", &INTERTIME);
printf("请输入最短处理时间(分钟):");
scanf("%d", &DURATION);
total_time = 0;//客户逗留总时间(初始值)
number = 0;//办理业务的次序(初始值)
InitQueue1();//初始化队列1
InitQueue2();//初始化队列2
en.arrivetime = 0;//到达时间
en.OccurTime = 0;//事件发生时间
en.NType = 0;//事件类型,暂时值
en.money = 0;//交易金额,暂时值
en.duration = 0;//办理业务时间,暂时值
EnQueue1();//事件进队列
}
//查找上一离开事件的发生时间
int find_leave()
{
Queue1 p;
int i = 0;
p = Q1.front->next;
while (p != NULL)
{
if (p->data.NType != 0)
i = p->data.OccurTime;
p = p->next;
}
return i;
}
//处理客户到达事件
void CustomerArrived()
{
int intertime;
int i;
time1 = en.OccurTime;
rand_ar(&intertime, &(en.money), &(en.duration), &(en.NType));
//设置一离开事件插入事件表
en.NType++;//0变1,1变2
i = find_leave();//查找上一离开事件的发生时间
if (i == 0)//第一位顾客
en.OccurTime = en.arrivetime + en.duration;
else
if (i >= en.arrivetime)//本事件到达时上一事件还未离开
en.OccurTime = i + en.duration;//则此事件的离开时间=上一事件的离开时间+本事件处理时间
else//上一事件离开之后,本事件才到达
en.OccurTime = en.arrivetime + en.duration;//则此事件的离开时间=本事件到达时间+本事件处理时间
EnQueue1();//设置下一用户到达事件插入队列1
en.arrivetime = en.arrivetime + intertime;//下一用户到达时间
en.OccurTime = en.arrivetime;
en.NType = 0;//暂时值
en.money = 0;//暂时值
en.duration = 0;//暂时值
EnQueue1();
}
//返回队列2的长度
int getlong_q2()
{
int i = 0;
Queue2 p;
p = Q2.front->next;
while (p)
{
i++;
p = p->next;
}
return i;
}
//顺序检查队列2是否有满足条件者
status check_q2()
{
int i, j, z = 0;
i = getlong_q2();//用i返回队列2长度
for (j = 1; j <= i; j++)
{
DeQueue2();//队列2出队,用en1返回其值
if (en1.money <= total_money)//若队列2出队元素的需要交易的金额<=银行现存金额,则可以办理
{
if (time1 > closetime)
{
printf("--\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n", z, use_time, number, z,
(en1.arrivetime), en1.money);
}
else
{
time1 = time1 + en1.duration;//更新系统当前时间
use_time = time1 - en1.arrivetime;
total_time += use_time;//更新逗留时间
total_money -= en1.money;//更新资金总额
number++;//更新实现交易的用户数
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t-%d\n", total_money, use_time, number, time1, (en1.arrivetime), (en1.money));
}
}
else
{//若队列2出队元素的要交易的金额>银行现存金额,不能办理
if (time1 > closetime)
{
printf("--\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n", z, use_time,
number, z, (en1.arrivetime), en1.money);
}
else
{
EnQueue2();//继续插入队列的队尾,继续等待
}
}
}
return OK;
}
//队列1离开时间减duraion(业务办理时间)
int cut_duration(int e)//e是形参,指代办理业务的时间
{
Queue1 p, q, r;
ElemType1 en;
p = Q1.front->next;
r = Q1.front;
if (p)
{
if (p->data.NType != 0)
{
q = p->next;
r->next = q;//删除结点
en.arrivetime = p->data.arrivetime;//到达时间
en.OccurTime = p->data.OccurTime - e;//事件发生时间
en.NType = p->data.NType;//事件类型
en.duration = p->data.duration;//办理业务时间
en.money = p->data.money;//数额
free(p);
EnQueue1();
}
}
return OK;
}
//处理客户离开事件
void CustomerDeparture()
{
int i;
i = en.NType;//业务类型,1表示存款,2表示取款
time1 = en.OccurTime - en.duration;
if (i == OK)//是否是办理存款
{
if (en.OccurTime > closetime)//营业结束,全部客户离开银行
free_system();
else//营业时间没有结束,继续办理
{
use_time = en.OccurTime - en.arrivetime;
total_time += use_time;//更新逗留的总时间
total_money = total_money + en.money;//更新资金总额
number++;//更新服务的客户数
time1 = en.OccurTime;//更新系统当前时间
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t%d\n", total_money, use_time, number, en.OccurTime, en.arrivetime, en.money);
check_q2();//检查队列2是否有满足条件者
}
}
else//办理取款
{
if (en.money > total_money)//办理取款,当申请金额不能满足时,离开队列1进入队列2等待
{
cut_duration(en.duration);//从队列1中删除该结点
en1.arrivetime = en.arrivetime;
en1.duration = en.duration;
en1.money = en.money;
EnQueue2();//进入队列2继续等待
}
else//办理取款,当能满足所申请金额时进行队列1
{
if (en.OccurTime > closetime)//营业结束,全部客户离开银行
free_system();
else
{
use_time = en.OccurTime - en.arrivetime;//顾客所用时间=事件发生时间-事件到达时间
total_time += use_time;//更新逗留时间
total_money -= en.money;//更新资金总额
time1 = en.OccurTime;//更新系统当前时间
number++;//更新客户总数
printf("%1d\t\t%d\t\t%d\t\t%d\t\t%d\t-%d\n", total_money, use_time, number, en.OccurTime, en.arrivetime, en.money);
}
}
}
}
//主函数
void main()
{
int n;
printf("========================================\n");
printf(" 欢迎使用银行业务模拟系统\n");
printf("----------------------------------------");
printf(" 班级:测绘1703班 \n");
printf(" 姓名:陈 蕾 \n");
printf(" 学号:631701110304\n");
printf("========================================\n");
printf("请选择开始或结束:\n");
printf("1.进入银行业务模拟系统\n");
printf("0.退出程序\n");
scanf("%d", &n);
while (n == 1)
{
OpenForDay();//初始化操作
printf("----------------------------------------\n");
printf("Total_money\tuse_time\tnumber\ten.OccurTime\ten.arrivetime\tmoney\n");
{
while (Q1.front)
{
DeQueue1();//队列1出队列,并用en返回其值
if (en.NType == 0)//en.NType等于0表示客户到达,1表示客户离开
CustomerArrived();//处理客户到达事件
else
CustomerDeparture();//处理客户离开事件,业务类型en.NType等于1表示存款,2表示取款
}
printf("1.营业结束后银行现存资金总额(元):%1d\n", total_money);
printf("2.营业时间内实现交易的客户数(人):%d\n", number);
printf("3.客户在银行逗留的总时间(分钟):%d\n", total_time);
printf("4.客户在银行的平均逗留时间(分钟):%f\n", (float)total_time / (float)number);
printf("----------------------------------------");
}
printf("以上为模拟结果!请选择继续或退出:\n");
printf("1.继续模拟\n");
printf("0.退出程序\n");
scanf("%d", &n);
if (n == 0)
{
printf("谢谢使用本系统,再见!");
break;
}
}
}
|
|