模拟银行排队系统

本文介绍如何使用C++实现一个模拟银行排队系统,包括问题定义、类与算法设计。系统采用事件驱动模拟,通过有序链表管理事件,银行类包含多个队列,每个队列对应一个窗口。算法涉及事件类、客户类和银行类的设计,通过处理客户到达和离开事件,模拟客户选择最短队列、等待和办理业务的过程。
摘要由CSDN通过智能技术生成

文章学习自:小项目分析之C++ 实现模拟银行排队


使用C++实现银行排队系统

一、问题定义与分析

问题定义

•要解决的问题——银行一天之内的:

1.总客户数

2.客户总逗留时间

3.客户平均逗留时间

问题分析

•新来的人找个短的队伍,站在队尾开始排队

•排在队头的人可以办理业务

•排队等待办业务的客户是在分散的、随机的时间点到来的

•特点:离散事件、要排队

•掌握每个客户到达银行和离开银行这两个时刻

•统计出客户总数

•称客户到达银行和客户离开银行这两个时刻发生的事情为“事件”

•整个模拟按事件发生的先后顺序进行处理

•事件驱动模拟

•事件的主要信息是事件类型和事件发生的时刻

•两类事件:客户到达事件和客户离开事件

•事件应存储在有序表里

•有序表按照事件发生的时刻顺序排序

•队列中的客户的主要信息是客户到达的时刻和客户办理业务所需要的时间

•队列数量和银行的窗口数量相同

•每个队列的队头客户就是正在办理业务的客户

•每个队头客户都存在一个将要发生的客户离开事件



二、类与算法设计



类设计

•有序表选用有序链表,主要操作是插入和删除

•队列,客户排队

•类图:用来表示类以及类和类之间的关系的逻辑视图

•利用类图来记录类的结构,这些类构成了程序的架构

银行类:

•要有一个表示队列数量的属性

•要有一个打烊时间属性

•要有一个总客户数属性

•要有一个客户总逗留时间属性

•聚合一个或多个队列和一个有序链表

银行类的方法:

•开门营业

•处理客户到达事件

•处理客户离开事件

•帮助客户选择一个最短的队列

•确保按照事件发生的时间顺序处理事件



算法设计

一共定义三个类事件类Event、客户类Client、银行类Bank

事件类Event:包含两个成员,事件发生的时间,与时间的类型,类型主要是客户到达事件还是客户离开事件。

客户类Client:包含两个成员,客户到达的时间与客户停留的时间

银行类Bank

包括成员队列数量

  • 8
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值