- 33
- 0
- 约1.3万字
- 约 11页
- 2019-03-16 发布于未知
- 举报
?
HYPERLINK /yanjiashang/article/details/6359652 ?c++版模拟银行窗口排队叫号系统
c++版模拟银行窗口排队叫号系统?看了两位LZ的银行排队系统blog,感觉不错,就也产生了用C++写个排号系统,原因有二,1、对Java不太熟悉,没有看太懂。2、练练手。3、提高一下C++的人气。进入主题:对于这一块的业务系统需求没有做过多的分析,只在两位LZ的基础做了小小的改动,然后用C++实现。题目:模拟实现银行业务调度系统逻辑,具体需求如下:??? 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。??? 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。??? 异步随机生成各种类型的客户,生成各类型用户的概率比例为:??????? VIP客户:普通客户:快速客户? =? 1 :6 :3。??? 客户办理业务所需时间有最大值和最小值,在该范围内随机设定每个VIP客户以及普通客户办理业务所需的时间,快速客户办理业务所需时间为最小值(提示:办理业务的过程可通过线程Sleep的方式模拟)。??? 各类型客户在其对应窗口按顺序依次办理业务。??? 当VIP(6号)窗口和快速业务(5号)窗口没有客户等待办理业务的时候,这两个窗口可以处理普通客户的业务,而一旦有对应的客户等待办理业务的时候,则优先处理对应客户的业务。??? 随机生成客户时间间隔以及业务办理时间最大值和最小值自定,可以设置。??? 不要求实现GUI,只考虑系统逻辑实现,可通过Log方式展现程序运行结果。修改:1、在这里为了简化程序的设计(只省了只行代码),FAST和VIP窗口只办理对应的客户,不办普通客户的业务。????? 2、由于对于客户的到来,也采用1S来一个的做法,但因为在console程序对于时间不太好控制,在这里只是设定了客户数,即每个1秒来一个客户,根据来的客户数控制时间。开发环境:Linux代码:文件constances.h
该文件中定义了一些常量,其中MAX_WAITING_CLIENT_NUM指的是,最多正在等待的客户数,如果客户数到达最大,后来的客户将会离开。
[cpp]? HYPERLINK /yanjiashang/article/details/6359652 \o view plain view plain HYPERLINK /yanjiashang/article/details/6359652 \o copy copy
#ifndef?CONSTANCES_H_??
#define?CONSTANCES_H_??
enum?{??
????MAX_SERVICE_TIME?=?10,??
????MIN_SERVICE_TIME?=?1,??
????CLIENT_INTERVAL_TIME?=?1,??
????MAX_WAITING_CLIENT_NUM?=?50,??
????MAX_CLIENT_NUM?=?100,??
};??
#endif?/*?CONSTANCES_H_?*/??
?
文件main.cpp1、每一个窗口对应一个线程,在此创建了6个线程,分别对应4个客户窗口,1个FAST窗口中,1个VIP窗口中。2、在这里本想用Unix中的alarm信号来控制客户的间隔时间,但因为时间不好控制就废弃了
[cpp]? HYPERLINK /yanjiashang/article/details/6359652 \o view plain view plain HYPERLINK /yanjiashang/article/details/6359652 \o copy copy
#include?iostream??
#include?unistd.h??
#include?pthread.h??
#include?stdio.h??
#include?stdlib.h??
#include?time.h??
#include?numMachine.h??
#include?serviceWin.h??
#include?client.h??
#include?constances.h??
Client::ClientType?createClientType()?{??
????int?type;??
????type?=?rand()?%?10?+?1;??
????if?(type?=?6)??
????????return?Client::CLIENT_COMMON;??
????else?if?(type?=?7??type?=?9)??
????????
原创力文档

文档评论(0)