c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

//c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队)

//------头文件---------

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

//-------宏定义---------

#define TURE 1
#define ERROR 0
#define OVERFLOW -2

//------替换及结构体------

typedef int Bool;

typedef struct Node
{
	long OccurTime;
	long LeaveTime;
	struct Node *next;
}Custom,*Customer;//模拟顾客属性

typedef struct
{
	Customer front;//头
	Customer rear;//尾
}LinkQueue;//顾客队列化

//-----全局变量-------

long TotalTime,TotalCustomer;//总时间,总客户量
long OpenTime=420,CloseTime=1020;//银行开门时间和关门时间分别是420/60=7:00 1020/60=17:00 以24小时制计算
LinkQueue q[5];//银行开4个普通窗口,一个应急窗口

//------函数列表------

Bool InitQueue();//初始化队列
Bool DeQueue(int i,Customer c);//离开队列
Bool EnQueue(int i,Customer c);//进入队列
void OpenForDay();//初始化数据
//void Bank(Customer c,long *StartTime);
void CompareTime(Custom c);
void QueueLeagth(int *i);
void Bank_Simulation();
void Rand(Customer c,long *StartTime); 

//-------主函数------

void main()
{
	printf("--------------------系统说明-----------------------\n");
	printf("1.关于银行业务系统的模拟.\n");
	printf("2.银行的营业时间为7:00-17:00.\n");
	printf("3.银行有四个窗口对外接待顾客.\n");
	printf("4.窗口在某一时刻只能接待一位顾客,因此在客户众多的情况下需要排队等候.\n");
	printf("5.若两个窗口均被占,则客户排在最短的窗口.\n");
	printf("6.银行办理业务的时间为10-30分钟不等.\n");
	Bank_Simulation();
	printf("平均每个人在银行的逗留时间:");
	printf("%-5.2f\n",(float)TotalTime/TotalCustomer);
	getchar();
	getchar();
}

//-------其余函数--------

void Bank_Simulation()
{
	Custom c;//定义一个顾客
	long StartTime=420;
	int i=1;
	OpenForDay();
	Rand(&c,&StartTime);
	printf("等待时间\t业务办理时间\t窗口号\t\t到达时间\t离开时间\n");
	while(c.LeaveTime<1020)
	{
		CompareTime(c);
		QueueLeagth(&i);
		EnQueue(i,&c);
		StartTime=c.OccurTime;
		printf("%d\t\t",i);
		printf("%d:%d\t\t",c.OccurTime/60,c.OccurTime%60);
		printf("%d:%d\n",c.LeaveTime/60,c.LeaveTime%60);
		getchar();
		Rand(&c,&StartTime);
	}
}

void OpenForDay()
{
	//int i;
	TotalTime=0;
	TotalCustomer=0;
	InitQueue();
}

void Rand(Customer c,long *StartTime)
{
	srand((unsigned)time(NULL));
	do
	{
		c->OccurTime=rand()%1020;

	}while(c->OccurTime<*StartTime);
}

Bool InitQueue()
{
	int i=1;
	for(;i<=4;i++)
	{
		q[i].rear=q[i].front=(Customer)malloc(sizeof(Custom));
		if(!q[i].front)
		{
			exit(OVERFLOW);
		}
		q[i].front->next=NULL;
	}
	return TURE;
}

Bool DeQueue(int i,Customer c)
{
	Customer t=(Customer)malloc(sizeof(Custom));
	if(!t||q[i].front==q[i].rear)
	{
		exit(OVERFLOW);
	}
	t=q[i].front->next;
	c->OccurTime=t->OccurTime;
	c->LeaveTime=t->LeaveTime;
	q[i].front->next=t->next;
	if(q[i].rear==t)
	{
		q[i].rear=q[i].front;
	}
	free(t);
	return TURE;
}

Bool EnQueue(int i,Customer c)
{
	long DurTime,WaitTime=0;
	Customer t=(Customer)malloc(sizeof(Custom));
	if(!t)
	{
		exit(OVERFLOW);
	}
	if(q[i].front==q[i].rear)
	{
		WaitTime=0;
	}
	else
	{
		WaitTime=q[i].rear->LeaveTime-q[i].rear->OccurTime;
	}
	srand((unsigned)time(NULL));
	do
	{
		DurTime=rand()%31;

	}while(DurTime<10);
	c->LeaveTime=c->OccurTime+WaitTime+DurTime;
	printf("%ld\t\t%ld\t\t",WaitTime,DurTime);
	t->OccurTime=c->OccurTime;
	t->LeaveTime=c->LeaveTime;
	TotalTime+=c->LeaveTime-c->OccurTime;
	t->next=NULL;
	q[i].rear->next=t;
	q[i].rear=t;
	TotalCustomer++;
	return TURE;
}

void CompareTime(Custom c)
{
	int i;
	Custom t;
	Customer s;
	for(i=1;i<=4;i++)
	{
		s=q[i].front->next;
		while(s&&q[i].front!=q[i].rear)
		{
			if(c.OccurTime>=s->LeaveTime)
			{
				DeQueue(i,&t);
				s=q[i].front->next;
			}
			else
			{
				s=s->next;
			}
		}
	}
}

void QueueLeagth(int *i)
{
	int min,j,k,a[4];
	Customer s;
	for(j=0;j<4;j++)
	{
		k=0;
		s=q[j+1].front;
		if(q[j+1].front==q[j+1].rear)
		{
			a[j]=0;
		}
		else
		{
			while(s!=q[j+1].rear)
			{
				s=s->next;
				a[j]=++k;
			}
		}
	}
	min=a[0];
	*i=1;
	for(j=0;j<4;j++)
	{
		if(min>a[j])
		{
			min=a[j];
			*i=j+1;
		}
	}
}


 

 

银行排号(C语言) 银行为改善服务,设置了排号系统,顾客办理业务时,通过排号机生成一个号码,然后坐在休息区等候排号系统按号码进行呼叫。要求编程序,模拟排号系统。 阅读详情

相关推荐

银行排队系统》

该程序运用了线性结构,除了第一个和最后一个元素外,每个元素前后都只有一个元素,且元素之间存在唯一的顺序关系。在非空的线性结构中,有且仅有一个开始结点a1,它没有直接前驱,而只有一个直接后继a2;有且仅有一个终端结点an,它没有直接后继,而仅有一个直接前驱an-1

m0_69254737的博客 1844

C语言银行排队系统

内含客户存取款、逗留时间、营业时间、银行接待客户人数等多种功能

利用C语言银行排队系统

银行排队系统实现 功能要求: (1) 客户进入排队系统,两种情况 VIP 和普通客户; (2) 客户离开; (3) 查询当前客户前面还有几人; (4) 查询截至目前总共办理多少客户。 输出要求:每进行一次操作后,输出当前排队成员情况。

银行排队系统 c语言,C++实现银行排队系统

#include #include #include int cnt=0; //当日客流量int sum=0; //当日客户排队总时间typedef struct pnode{int number;int cometime;int leavetime;struct pnode *next;}*person;typedef struct node{person front;person rear;i...

weixin_34673225的博客 1806

萌新小白自己银行排队系统,感觉有用可自取

.基本功能1)设立三个窗口进行取票服务 (2)普通用户排队 ①会显示当前窗口等待人员(显示所有窗口和窗口等待的号码及其位次) ②选择窗口预约取号并等待返回主界面 (考虑到每个服务都有时间.一般取号后都会返回到主界面等待服务时间 我选择了排在队头的客户可以自主选择结束) (3)vip用户通道 直接插队,选择窗口后排在窗口第一位优先处理 (4)显示当前窗口等待人员 显示当前窗口等待人员(显示所有窗口和窗口等待的号码及其位次) (对于课设要求是客户需要知道自己当前的号码 设计的是在进入排队

m0_51700479的博客 970

银行排队(bank)

银行排队(bank)详细注解版

qq_62795094的博客 821

c语言队列模拟排队编程,c语言版数据结构奇迹冬瓜-队列实战1离散事件模拟(银行排队)...

//c语言版数据结构(奇迹冬瓜)-队列实战(1)离散事件模拟(银行排队)//------文件---------#include#include#include//-------宏定义---------#define TURE 1#define ERROR 0#define OVERFLOW -2//------替换及结构体------typedef int Bool;typedef st...

weixin_35826751的博客 756

C语言模拟银行排队叫号(链队)

本文与上一篇博客一起对比观看,主要是用链队实现银行叫号模拟

墨城烟柳ベ旧人殇的博客 3079

数据结构之单队列--银行排队系统

队列银行排队系统 项目名称:银行业务之单队列多窗口服务 1 实验目的 熟练掌握队列的基本操作,理解队列的应用。 2 实验内容 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。 本题要求输出前来等待服务的N位顾客的平均等待时间、最长等待时间、最后完成时间,并且...

Recently祝祝的博客 2853

数据结构实验二(C语言):银行排队系统

银行排队系统

濉溪的博客 2万+

银行业务模拟系统的设计与实现(C语言

熟练使用C链队列模拟银行各个窗口前排队的情况。

Geek-C 1万+

C语言模拟银行排队叫号(顺序队)

本文主要是通过模拟银行排队叫号来对队列的顺序存储结构进行练习。

墨城烟柳ベ旧人殇的博客 5267

用c语言银行队列系统,C语言学习之用队列实现银行排队系统

队列操作的接口:http://blog..net/qlx846852708/article/details/43666927数据结构C语言实现:http://blog..net/qlx846852708?viewmode=contents本文件是用队列实现银行排队系统,上面的连接是我实现的队列的接口实现。#include #include #include #include "seqQueue.h...

weixin_33907300的博客 1300

数据结构银行排队系统c语言,数据结构-银行排队系统.doc

数据结构-银行排队系统.doc宁波大红鹰学院信息工程学院课程设计报告项目名称:银行排队系统项目组长:白钰琦项目成员:项鸿伟、徐海域、徐程凯一、 系统总体描述- 1 -二、模块设计(包括文档设计、项目流程设计)- 1 -三、程序设计(界面设计、后台详细设计)- 3 -四、设计总结- 7 -五、设计总结- 16 -1、完成情况- 16 -2、心得体会- 16 -系统总体描述银行排队系统是利用现代网络通...

weixin_35090568的博客 2927

银行排队系统模拟数据结构

银行排队系统模拟数据结构 假设某银行有n个窗口对外接待客户,从早晨银行9点开门起到5点关门,不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进银行的客户。如果某个窗口的业务员正空闲,则可上前输业务。反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。

Andream的博客 3万+

c 语言银行排队系统,C++实现银行排队系统

#include #include #include int cnt=0; //当日客流量int sum=0; //当日客户排队总时间typedef struct pnode{int number;int cometime;int leavetime;struct pnode *next;}*person;typedef struct node{person front;person rear;i...

weixin_30127493的博客 1797

C语言银行排队系统仿真

C语言银行排队系统仿真 语言:C语言 时间:202111月27日 要求:银行排队系统仿真 基本功能:模拟一个单队列、多窗口的银行排队系统一天的运行情况,随机生成顾客的到达时间和办理业务所需时间等数据。一天结束后,统计顾客的平均等待时间和窗口的平均占用率。 (1)改变顾客办理业务所需时间或银行的窗口数,观察顾客平均等待时间和窗口平均占用率如何变化; (2)假设每位顾客有一个容忍时间,等待超过容忍时间之后顾客将离开,统计顾客的离开率; (3)假设银行有两个队列,其中一个是VIP队列,另一个是普通队列,窗口服

程序设计 2100

用c语言模拟简单的银行排队系统

此程序模拟银行排队系统,用链表实现队列排队 List.h 1 #ifndef LIST_H 2 #define LIST_H 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 #define OK 0 7 #define ERROR -1 8 //defi...

weixin_30758821的博客 349
上一篇: c语言版数据结构(奇迹冬瓜)-栈实战(4)表达式求值
下一篇: c语言版数据结构(奇迹冬瓜)-单链式队列
utral董东东
博客等级 码龄16年 158粉丝 33原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值