|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
- }
- }
复制代码
|
|