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

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

//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;
		}
	}
}


 

 

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

相关推荐

利用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的博客 1813

C语言编写的银行排队系统

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

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

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

m0_51700479的博客 973

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑

本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。

ik67890123的博客 682

学习C++的递归函数(包含汉诺塔讲解)

简单来讲,递归函数就是函数本身自己调用自己,那么函数又是什么呢?#include <stdio.h> //这行是头文件,不同的头文件可以用不同的函数int main() //这里就是一个main函数//这里是你要编写程序的内容return 0;(这是个小细节如下)所以我们平时用来练习的就是一个main函数,而且是一个整型类型的函数,而这也是最后一句话为什么要加一句 return 0;了,因为它最后要返回整数类型,其它整数也可以,但是大家规定为0,这是C++自带的函数。

2302_81032013的博客 2594

银行排队(bank)

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

qq_62795094的博客 825

VL53L0X测距不准?手把手教你做RefSPAD校准与环境补偿(附Arduino/STM32代码)

本文详细解析了VL53L0X激光测距传感器精度不足的原因,并提供了RefSPAD校准与环境补偿的完整解决方案。通过Arduino和STM32代码示例,手把手教你实现毫米级测距稳定性,适用于机器人避障、工业检测等场景。

weixin_28744423的博客 258

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

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

weixin_35826751的博客 759

国产麒麟系统中的PaddleOCR离线绿色部署:高效安全的文字识别新纪元

摘要:本文详细介绍了PaddleOCR在银河麒麟V10SP1系统上的离线部署方案。通过Conda虚拟环境隔离依赖,采用离线包安装方式实现无网络部署,支持80+语言识别。重点讲解了模型量化剪枝优化、多线程处理等性能调优技巧,并提供了完整的OCR识别代码示例。该方案具有数据本地化处理的安全优势,适用于医疗票据数字化等对隐私要求严格的场景,同时解决了模型加载失败、内存不足等常见问题。

墨夶的博客 1230

AutoSAR开发实战:如何用Matlab/Simulink从零搭建SWC组件(附完整代码示例)

本文详细介绍了使用Matlab/Simulink从零开发AutoSAR SWC组件的全流程,包括环境配置、ARXML文件导入、算法模型开发、代码生成与集成验证等关键步骤。通过实战案例和完整代码示例,帮助开发者掌握AutoSAR标准下的软件开发技术,提升汽车电子系统的开发效率。

weixin_29093017的博客 256

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

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

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

保姆级教程:在华为云Ubuntu服务器上快速搭建RAGflow开发环境(避坑指南)

本文提供了一份在华为云Ubuntu服务器上快速搭建RAGflow开发环境的保姆级教程。针对网络拉取镜像等常见问题,详细介绍了从服务器选型、系统优化、Docker配置到RAGflow部署与验证的全流程,并给出生产环境调优建议,帮助开发者高效避坑,快速构建企业级应用环境。

weixin_29250403的博客 87

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

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

Recently祝祝的博客 2858

高云FPGA系列教程(7):ARM GPIO外部中断

高云GN1NSR-4C共有16个GPIO,每个GPIO可配置成输入或输出模式,支持中断输入,触发方式可选择:上升沿、下降沿、高电平、低电平触发。中断优先级可通过NVIC进行设置,支持 0-7 级可编程中断优先级。

whik1194的博客 1376

分子对接时,如何批量处理小分子受体和蛋白配体,让他们快速转化为pdbqt格式,然后用vina跑?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1222

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

银行排队系统

濉溪的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

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

Geek-C 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

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

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

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

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

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

weixin_33907300的博客 1302

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

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

weixin_35090568的博客 2933

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

银行排队系统模拟—数据结构 假设某银行有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的博客 1799

C语言银行排队系统仿真

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

程序设计 2109

用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的博客 351
上一篇: 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、付费专栏及课程。

余额充值