c++版模拟银行窗口排队叫号系统

c++版模拟银行窗口排队叫号系统
c++版模拟银行窗口排队叫号系统

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]view plaincopy

1.#ifndef CONSTANCES_H_

2.#define CONSTANCES_H_

3.enum {

4. MAX_SERVICE_TIME = 10,

5. MIN_SERVICE_TIME = 1,

6. CLIENT_INTERVAL_TIME = 1,

7. MAX_WAITING_CLIENT_NUM = 50,

8. MAX_CLIENT_NUM = 100,

9.};

10.#endif /* CONSTANCES_H_ */

文件main.cpp

1、每一个窗口对应一个线程,在此创建了6个线程,分别对应4个客户窗口,1个FAST 窗口中,1个VIP窗口中。

2、在这里本想用Unix中的alarm信号来控制客户的间隔时间,但因为时间不好控制就废弃了

[cpp]view plaincopy

1.#include

2.#include

3.#include

4.#include

5.#include

6.#include

7.#include "numMachine.h"

8.#include "serviceWin.h"

9.#include "client.h"

10.#include "constances.h"

11.Client::ClientType createClientType() {

12.int type;

13. type = rand() % 10 + 1;

14.if (type <= 6)

15.return Client::CLIENT_COMMON;

16.else if (type >= 7 && type <= 9)

17.return Client::CLIENT_FAST;

18.return Client::CLIENT_VIP;

19.}

20.int createTasktime() {

21.return rand() % MAX_SERVICE_TIME + 1;

22.}

23.void createClient() {

24. Client::ClientType clientType;

25.int taskTime;

26.for (int i = 0; i < MAX_CLIENT_NUM; ++i) {

27. clientType = createClientType();

28. taskTime = createTasktime();

29. std::cout << "Come in a client : clientType = " << clientType

30. << " taskTime = " << taskTime << std::endl;

31. NumMachine::getInstance()->pressMachine(clientType, taskTime);

32. sleep(1);

33. }

34. sleep(5);

35.}

36.void * serviceWin(void *win) {

37. ServiceWin *serWin = static_cast (win);

38. serWin->execute();

39.return ((void *) 0);

40.}

41.bool createServiceWin() {

42. pthread_t commonServiceWin[4];

43. pthread_t fastServiceWin;

44. pthread_t vipServiceWin;

45.char tmp[10];

46. ServiceWin *win;

47.for (int i = 0; i < 4; ++i) {

48. sprintf(tmp, "CommonWin%d", i);

49. win = new CommonSerWin(tmp);

50.if (win == NULL) {

51. std::cout << "Create common service win error." << std::endl;

52.return -1;

53. }

54.if (pthread_create(&commonServiceWin[i], NULL, serviceWin, (void*) w

in)

55. != 0) {

56. std::cout << "Create common service thread error." << std::endl;

57.return false;

58. }

59. }

60. sprintf(tmp, "FastWin");

61. win = new FastSerWin(tmp);

62.if (win == NULL) {

63. std::cout << "Create fast service win error." << std::endl;

64.return false;

65. }

66.if (pthread_create(&fastServiceWin, NULL, serviceWin, (void*) win) != 0)

{

67. std::cout << "Create fast service thread error." << std::endl;

68.return false;

69. }

70. sprintf(tmp, "VipWin");

71. win = new VipSerWin(tmp);

72.if (win == NULL) {

73. std::cout << "Create vip service win error." << std::endl;

74.return false;

75. }

76.if (pthread_create(&fastServiceWin, NULL, serviceWin, (void*) win) != 0)

{

77. std::cout << "Create vip service thread error." << std::endl;

78.return false;

79. }

80.return true;

81.}

82.int main(int argc, char *argv[]) {

83. std::cout << "/***start : please wait 5 seconds when progress suspend **

***/" << std::endl;

84. srand((unsigned) time(0));

85.if (!createServiceWin()) {

86. std::cout << "Create service win error." << std::endl;

87.return -1;

88. }

89. createClient();

90.delete NumMachine::getInstance();

91.}

文件client.cpp client.h

定义了我们的客户,因为我们的客户比较简单,所有的客户共享一个class,只是clientType 来区分不同的客户。

[cpp]view plaincopy

1.#ifndef CLIENT_H_

2.#define CLIENT_H_

3.class Client {

4.public:

5.enum ClientType {

6. CLIENT_COMMON, CLIENT_FAST, CLIENT_VIP

7. };

8. Client(ClientType type, int time);

9.virtual ~Client();

10. ClientType getClientType();

11.int getServiceTime();

12.private:

13. ClientType clientType;

14.int serviceTime;

15.};

16.#endif /* CLIENT_H_ */

[c-sharp]view plaincopy

1.#include "client.h"

2.Client::Client(ClientType type, int time) :

3. clientType(type), serviceTime(time) {

4.}

5.Client::~Client() {

6.}

7.Client::ClientType Client::getClientType() {

8.return clientType;

9.}

10.int Client::getServiceTime() {

11.return serviceTime;

12.}

文件numMachine.cpp numMachine.h

文件中定义了排号机,在numMachine中定义了一个client list用来存放我们的客户。[cpp]view plaincopy

1.#ifndef NUMMACHINE_H_

2.#define NUMMACHINE_H_

3.#include

4.#include

5.#include

6.#include

7.#include

8.#include "client.h"

9.#include "constances.h"

10.class NumMachine {

11.public:

12.virtual ~NumMachine();

13.static NumMachine *getInstance();

14.void pressMachine(Client::ClientType clientType, int tasktime);

15. Client * removeClient(Client::ClientType val);

16.private:

17. NumMachine();

18.static NumMachine *numMachine;

19. std::list clientList;

20.int leaveClient;

21.int total;

22.int handledClient;

23. pthread_mutex_t clientListLock;

24.};

25.class DelClientList {

26.public:

27.void operator () (Client * item);

28.};

29.class FindClient {

30.public:

31. FindClient(Client::ClientType t);

32.bool operator () (Client * item);

33.private:

34. Client::ClientType clientType;

35.};

36.#endif /* NUMMACHINE_H_ */

[cpp]view plaincopy

1.#include "numMachine.h"

2./***************************************************************************

************/

3.NumMachine * NumMachine::numMachine = new NumMachine;

4.NumMachine::NumMachine() :

5. leaveClient(0), total(0), handledClient(0) {

6. pthread_mutex_init(&clientListLock, NULL);

7.}

8.NumMachine::~NumMachine() {

9. std::cout << "/********** end ****************/" << std::end

l;

10. std::cout << "The number of total client is " << total << std::endl;

11. std::cout << "The number of handled client is " << handledClient << std:

:endl;

12. std::cout << "The number of waiting client is " << clientList.size() <<

std::endl;

13. std::cout << "The number of client is " << leaveClient

14. << " ,because waiting time too long." << std::endl;

15. for_each(clientList.begin(), clientList.end(), DelClientList());

16.}

17.NumMachine * NumMachine::getInstance() {

18.return numMachine;

19.}

20.void NumMachine::pressMachine(Client::ClientType clientType, int taskTime) {

21. ++total;

22.if (clientList.size() < MAX_WAITING_CLIENT_NUM) {

23. Client * c = new Client(clientType, taskTime);

24.if (c == NULL) {

25. std::cout << "Can't create Client" << std::endl;

26. exit(-1);

27. }

28. clientList.push_back(c);

29. } else {

30. ++leaveClient;

31. }

32.}

33.Client * NumMachine::removeClient(Client::ClientType val) {

34. std::list::iterator pos;

35. Client *tmp;

36. pthread_mutex_lock(&clientListLock);

37. pos = find_if(clientList.begin(), clientList.end(), FindClient(val));

38. tmp = *pos;

39.if (pos != clientList.end()) {

40. clientList.erase(pos);

41. ++handledClient;

42. pthread_mutex_unlock(&clientListLock);

43.return tmp;

44. } else {

45. pthread_mutex_unlock(&clientListLock);

46.return NULL;

47. }

48.}

49./***************************************************************************

************/

50.void DelClientList::operator ()(Client *item) {

51. std::cout << "Waiting client : clientType =" << item->getClientType()

52. << " taskTime = " << item->getServiceTime() << std::endl;

53.delete item;

54.}

55./***************************************************************************

************/

56.FindClient::FindClient(Client::ClientType t) :

57. clientType(t) {

58.}

59.bool FindClient::operator ()(Client * item) {

60.if (item->getClientType() == clientType)

61.return true;

62.else

63.return false;

64.}

文件serviceWin.cpp serviceWin.h

文件中定义了我们窗口。

[cpp]view plaincopy

1.#ifndef SERVICEWIN_H_

2.#define SERVICEWIN_H_

3.#include

4.#include

5.#include "numMachine.h"

6.class ServiceWin {

7.public:

8. ServiceWin(std::string n);

9.virtual ~ServiceWin();

10.virtual void execute() = 0;

11. std::string getWinName();

12.private:

13. std::string winName;

14.};

15.class CommonSerWin: public ServiceWin {

16.public:

17. CommonSerWin(std::string n);

18.virtual ~CommonSerWin();

19.virtual void execute();

20.};

21.class FastSerWin: public ServiceWin {

22.public:

23. FastSerWin(std::string n);

24.virtual ~FastSerWin();

25.virtual void execute();

26.};

27.class VipSerWin: public ServiceWin {

28.public:

29. VipSerWin(std::string n);

30.virtual ~VipSerWin();

31.virtual void execute();

32.};

33.#endif /* SERVICEWIN_H_ */

[cpp]view plaincopy

1.#include "serviceWin.h"

2./***************************************************************************

******************/

3.ServiceWin::ServiceWin(std::string n) :

4. winName(n) {

5.}

6.ServiceWin::~ServiceWin() {

7.}

8.std::string ServiceWin::getWinName() {

9.return winName;

10.}

11./***************************************************************************

******************/

https://www.360docs.net/doc/d811857555.html,monSerWin::CommonSerWin(std::string n) :

13. ServiceWin(n) {

14.}

https://www.360docs.net/doc/d811857555.html,monSerWin::~CommonSerWin() {

16.}

17.void CommonSerWin::execute() {

18. Client * client = NULL;

19.while (1) {

20. client = NumMachine::getInstance()->removeClient(Client::CLIENT_COMM

ON);

21.if (client != NULL) {

tClientType()

23. << " taskTime = " << client->getServiceTime() << " "<< g

etWinName() << std::endl;

24. sleep(client->getServiceTime());

25.delete client;

26. }

27. }

28.}

29./***************************************************************************

******************/

30.FastSerWin::FastSerWin(std::string n) :

31. ServiceWin(n) {

32.}

33.FastSerWin::~FastSerWin() {

34.}

35.void FastSerWin::execute() {

36. Client * client = NULL;

37.while (1) {

38. client = NumMachine::getInstance()->removeClient(Client::CLIENT_FAST

);

39.if (client != NULL) {

40. std::cout << "A client be handled : clientType = " << client->ge

tClientType()

41. << " taskTime = " << client->getServiceTime() << " "<< g

etWinName() << std::endl;

42. sleep(client->getServiceTime());

43.delete client;

44. }

45. }

46.}

47./***************************************************************************

******************/

48.VipSerWin::VipSerWin(std::string n) :

49. ServiceWin(n) {

50.}

51.VipSerWin::~VipSerWin() {

52.}

53.void VipSerWin::execute() {

54. Client * client = NULL;

55.while (1) {

56. client = NumMachine::getInstance()->removeClient(Client::CLIENT_VIP)

;

57.if (client != NULL) {

tClientType()

59. << " taskTime = " << client->getServiceTime() << " "<< g

etWinName() << std::endl;

60. sleep(client->getServiceTime());

61.delete client;

62. }

63. }

64.}

结论:

经过几次测试发现在上述条件下,FAST窗口办理业务不能满足需求,在客户不在来的后5秒内,不能处理完FAST客户。

数据结构-银行排队系统

宁波大红鹰学院信息工程学院 课 程 设 计 报 告 项目名称:银行排队系统 项目组长:白钰琦 项目成员:项鸿伟、徐海域、徐程凯 班级名称:10计科1 专业名称:计算机科学与技术 完成时间:2012年11月27日 信息工程学院制

目录 一、系统总体描述.................................................... - 1 - 二、模块设计(包括文档设计、项目流程设计)........................... - 1 - 三、程序设计(界面设计、后台详细设计)............................... - 2 - 四、设计总结......................................................... - 3 - 五、设计总结......................................................... - 6 - 1、完成情况...................................................... - 6 - 2、心得体会...................................................... - 7 -

一、系统总体描述 银行排队系统是利用现代网络通信技术和计算机信息管理技术来代替传统排队的 系统,从本质上改善传统排队管理所存在的拥挤、嘈杂、混乱现象,避免各种不必要 的纠纷。通过使用排队系统,由传统的客户站立排队改变为取票进队、排队等待、叫 好服务,由传统物理的多个队列变为一个逻辑队列,使“先来先服务”的思想得到更 好地贯彻。 本系统可以实现银行排队的主要业务活动。本系统分为以下6个功能模块: (1)顾客到达。分为VIP客户和普通客户进行排队拿号,普通客户进入逻辑队列。 (2)顾客离开。顾客离开时将客户从队列中删除,并提供让客户对银行窗口职员 评价的平台。 (3)查看业务办理。可以查看每个业务窗口正在给第几号顾客办理业务。 (4)查看排队情况。可以查看当前顾客有多少个顾客在排队等候。 (5)系统查询。可以查询本系统为多少个普通用户和VIP客户办理过业务。 (6)退出。退出整个银行排队系统。 二、模块设计(包括文档设计、项目流程设计) 本程序包含主程序模块、菜单选择模块和队列操作模块,调用关系如下图: 模块调用示意图 2、系统子程序及功能设计 (1)void Initshuzu();

排队叫号系统设计说明

单片机系统 课程设计 成绩评定表 设计课题:排队叫号系统设计 学院名称:电气工程学院 专业班级:自动F1207 学生:康 学号: 2 指导教师:周刚 设计地点: 31-517 设计时间:2014-12-29~2015-01-09

单片机系统 课程设计 课程设计名称:排队叫号系统设计 专业班级:自动F1207 学生姓名:康 学号: 2 指导教师:周刚 课程设计地点:31-517 课程设计时间:2014-12-29~2015-01-09 单片机系统课程设计任务书

1、该系统是一款自动的排队叫号系统,以排队抽号顺序为核心,排队者利用客户端抽号,工作人员利用叫号端叫号; 2、通过显示器及时显示当前所叫号数,语音提示,提醒排队者接受服务; 3、客户及时了解排队信息,可以通过显示器显示队列中排在其前面的顾客数,通过合理的程序结构来执行排队抽号; 排队叫号系统主要由系统主从机、键盘电路、显示电路、语音电路等部分构成。 目录

1绪论 (6) 1.1课题背景 (6) 1.2课题研究的目的和意义 (6) 1.3课题研究现状 (7) 1.4设计目的及功能 (7) 2系统需求分析与整体设计 (7) 2.1确定的方案 (7) 2.2系统原理图 (8) 2.3整体设计方案 (8) 3系统硬件设计 (10) 3.1主电路硬件设计 (11) 3.2时钟电路 (12) 3.3键盘电路 (13) 3.4LED显示电路 (14) 3.5LCD显示电路 (15) 3.6语音提示电路 (17) 4系统软件设计 (20) 4.1主控软件设计 (20) 4.2LED显示程序设计 (21) 4.3LCD显示程序设计 (22) 4.4声音系统程序设计 (23) 5系统仿真实验 (23) 6总结 (25) 7参考文献 (26) 附录1实物图 (26) 附录2系统原理图 (27) 附录3C51源程序 (28) 1 绪论 1.1课题背景

银行叫号系统设计..

摘要 排队叫号管理系统是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,很好地解决了客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。该题研究的目的是研制一款无人排队的排队叫号机,它主要由主控制器、键盘、显示电路、蜂鸣器电路等部分构成。系统利用单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在LCD1602上显示排队的号码以及当前正在等待的人数;通过按键叫号,在LCD1602上显示叫到的号码,由扬声器发出声音提示客户。同时免除了令客户不舒服的站立式排队,这种现代化的高科技产品彻底解决了银行普遍存在的站立等候,服务无序的问题,深化并完善了服务的质量。本系统采用单片机进行控制,利用LCD1602显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学地处理各种排队情况。操作简便,控制灵活,显示清晰,制作成本低,性价比较高。 关键词STC89C52 LCD1602 蜂鸣器

目录 1 系统方案论证 (1) 1.1 设计要求 (1) 1.2 单片机芯片的选择方案和论证 (1) 1.3 显示模块选择方案和论证 (1) 1.4 系统方案设计 (2) 2 系统硬件设计 (3) 2.1 系统总电路 (3) 2.2 单片机处理部分设计 (3) 2.3 显示电路部分 (4) 2.4 时钟振荡电路 (5) 2.5 复位电路 (6) 2.6 叫号电路 (6) 2.7 按键电路 (7) 3 系统软件设计 (8) 4系统测试 (9) 5 小结 (10) 参考文献 (11) 附录 (12) 源程序: (12)

实验单服务台单队列排队系统仿真

实验2排队系统仿真 一、学习目的 1.了解仿真的特点 2.学习如何建构模型 3.熟悉eM-Plant基本的对象和操作 4.掌握排队系统的特点与仿真的实现方法 二、问题描述 该银行服务窗口为每个到达的顾客服务的时间是随机的,表2.4是顾客服务时间纪录的统计结果 表2.4 每个顾客服务时间的概率分布 服务时间(min)概率密度累计概率 1 0.1 0.1 2 0.2 0.3 3 0.3 0.6 4 0.2 5 0.85 5 0.1 0.95 6 0.05 1.0 对于上述这样一个单服务待排队系统,仿真分析30天,分析该系统中顾客的到

达、等待和被服务情况,以及银行工作人员的服务和空闲情况。 三、系统建模 3.1 仿真目标 通过对银行排队系统的仿真,研究银行系统的服务水平和改善银行服务水平的方法,为银行提高顾客满意度,优化顾客服务流程服务。 3.2.系统建模 3.2.1 系统调研 1. 系统结构: 银行服务大厅的布局, 涉及的服务设备 2. 系统的工艺参数: 到达-取号-等待-服务-离开 3. 系统的动态参数: 顾客的到达时间间隔, 工作人员的服务时间 4. 逻辑参数: 排队规则, 先到先服务 5. 系统的状态参数: 排队队列是否为空, 如果不为空队长是多少, 服务台是否为空 6. 系统的输入输出变量:输入变量确定其分布和特征值,顾客的到达时间间隔的概率分布表和每个顾客被服务时间的概率分布. 输出变量根据仿真目标设定. 包括队列的平均队长、最大队长、仿真结束时队长、总服务人员、每个顾客的平均服务时间、顾客平均排队等待服务时间、业务员利用率等。 3.2.2系统假设 1.取号机前无排队,取号时间为0 2.顾客排队符合先进先出的排队规则 3.一个服务台一次只能对一个顾客服务 4.所有顾客只有一种单一服务 5.仿真时间为1个工作日(8小时) 6.等候区的长度为无限长 3.2.3系统建模 系统模型: 3.2.4 仿真模型 1.实体:银行系统中的实体是人(主动体)

银行储蓄模拟系统详细设计说明书

卷号: 卷内编号: 银行模拟储蓄系统 详细设计说明书 项目承担部门:软件测试062工作组 撰写人(签名):祝胜康 完成日期:2008-4-9 本文档使用部门:■主管领导■项目组■客户(市场) ■维护人员■用户 文档验交组(签名): 验交日期: 评审负责人(签名):

评审日期

1 引言 编写目的 (2) 背景 (2) 定义 (2) 参考资料 (2) 2程序系统的结构 (2) 3 界面设计流程………………………………………………………………………………….. 4 主界面设计说明……………………………………………………………………………… 主界面设计规则………………………………………………………………………… 主界面实现过程………………………………………………………………………… 模块详细设计说明表…………………………………………………………… 窗口对象说明表………………………………………………………………… 5 储户界面设计说明…………………………………………………………………………… 储户界面设计规则……………………………………………………………………… 储户界面实现过程……………………………………………………………………… 模块详细设计说明表…………………………………………………………… 窗口对象说明表………………………………………………………………… 6 职员界面设计说明……………………………………………………………………………. 职员界面设计规则………………………………………………………………………

职员界面实现过程……………………………………………………………………… 模块详细设计说明表…………………………………………………………… 窗口对象说明表………………………………………………………………… 7 管理员界面设计说明………………………………………………………………………….. 管理员界面设计规则…………………………………………………………………… 管理员界面实现过程…………………………………………………………………… 模块详细设计说明表…………………………………………………………… 窗口对象说明表………………………………………………………………… 8 储户界面下的子界面设计说明……………………………………………………………….. 余额查询界面设计规则……………………………………………………………….. 余额查询界面设计规则……………………………………………………….. 余额查询界面实现过程……………………………………………………….. 模块详细设计说明表…………………………………………………… 窗口对象说明表……………………………………………………….. 取款界面设计说明…………………………………………………………….. 取款界面设计规则…………………………………………………………….. 取款界面实现过程…………………………………………………………….. 模块详细设计说明表………………………………………………… 窗口对象说明表……………………………………………………….

MATLAB模拟银行单服务台排队模型

M A T L A B模拟银行单服务台排队模型 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

M A T L A B模拟银行单服务台排队模型 摘要:运筹学就是专门研究对各种经营做出优化决策的科学,也称为最优化理论。排队论是运筹学的重要组成部分。排队论又称随机服务系统理论,它是通过对各种服务系统在排队等待现象中概率特性的研究,来解决服务系统最优设计与最优控制一门学科。具有排队等候现象的服务系统通称为排队系统。任何一个服务系统总是由两个相辅相成的要素:顾客和服务员(或服务台)所构成。凡是要求接受服务的人与物统称为顾客;凡是给予顾客服务的人与物统称为服务员(或服务台)。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。使用MATLAB可以较使用传统的编程语言(如C、C++和Fortran)更快地解决技术计算问题。 关键词:程序化模拟;单服务台;等待时间;排队论 一、问题叙述 众所周知,近年来我国大学大举扩招,学生人数大幅增加,而大学校园往往距离城市中心较远,银行数量较少,这就导致了银行业务繁忙时大量学生在银行窗口前排起长队等待的情况。这种现象长期困扰着广大学生,浪费了同学们的大量时间。为此,我们建立银行单服务台排队模型,并用MATLAB进行模拟,以计算学生在银行窗口前的平均排队时间。 二、模型假设 1。在银行只有一个服务窗口,客户陆续来到,服务窗口逐个地接待客户.当到来的客户较多时,一部分客户便须排队等待,被接待后的客户便离开银行。 2。客户到达的间隔时间服从指数分布(均值为10分钟);每个客户的服务时间服从均匀分布U[10,15]。 3。客户到达时刻、客户服务完毕并离去时刻等均视为随机事件(瞬间完成)。 4。排队按先到先服务规则。 三、符号说明 arrive(i):第i个客户到达的时刻; wait(i):第i个客户的排队等待时间; servetime(i):第i个客户接受服务的时间; meantime(i):客户的平均等待时间 n:客户数目 四、模型的建立与求解 在任意时刻t,系统的状态可以用排队等候的客户数目和服务员是否在工作来描述。排队等候的客户数目称为队长,记作L(t),为非负整数。服务员的状态用S(t)表示,当服务员工作时,令S(t)=1;服务员空闲时,令 S(t)=0。

银行排队叫号系统的设计毕业论文

银行排队叫号系统的设计 毕业论文 目录 摘要.............................................................. I ABSTRACT .......................................................... II 1 绪论.. (1) 1.1 课题来源 (1) 1.2 国外发展状况 (1) 1.3 有线系统与无线系统 (3) 1.4 发展前景 (4) 1.5 系统的设计目的 (4) 2 系统的需求分析 (5) 2.1 系统功能需求 (5) 2.2 非功能性需求 (5) 3 系统总体设计 (7) 3.1 方案论证 (7) 3.1.1 方案要求 (7) 3.1.2 方案确立 (7) 3.2 方案原理 (8)

3.3 异步通信 (9) 3.4 系统的体系结构 (10) 3.5 系统的软件结构 (10) 3.6 系统的基本功能和工作原理 (11) 3.6.1 排队系统的基本功能 (11) 3.6.2 工作原理 (11) 3.7 排队系统工作流程 (12) 3.7.1 数据处理流程 (12) 3.7.2 客户工作流程 (13) 3.7.3 工作人员工作流程 (13) 3.7.4 系统工作流程 (13) 3.8 主要应用器件及技术原理 (14) 3.8.1 微处理器介绍 (14) 3.8.2 液晶LCD1602的介绍 (16) 3.8.3 硬件概要设计 (22) 3.8.4 软件概要设计 (23) 4 系统硬件设计 (25) 4.1 主要电路设计 (25) 4.1.1 主机部分电路 (25) 4.1.2 从机部分电路 (26) 4.2 功能部分电路设计 (26) 4.2.1 单片机最小系统电路 (26)

商业银行模拟实训报告

国际经济与贸易专业 国际金融方向 商业银行综合业务银行信贷业务实训报告 班级:金融八班 学号:B11090723 姓名:雷博 实习时间:2013-11-25——2013-12-6 指导教师:刘芳谢丽辉赵雅坦刘品

一、实验目的:为了更好地掌握商业银行和信贷业务的基本操作流程,把所学的知识应用到现实生活中去,加强理论与实践的有效结合,更加深刻理解所学知识,增加和拓展知识面。 二、实验内容 1、凭证种类及使用 程序下的凭证种类包括储蓄存折、储蓄存单、一本通存折、一卡通。可以用储蓄存折的储种包括:活期、零整、通知存款、教育储蓄和存本取息。 整存整取和定活两便都使用储蓄存单。 2、凭证领用 管理部门必须将凭证的起使号码位输入中心机房的管理机内,并进行分配操作,将凭证分配到各支行管理机内。同样,支行凭证管理员也要将凭证的起始号码有计划的分配到各网点的库钱箱里,网点凭证负责人在前台机器交易界面选择库钱箱凭证领用交易领入凭证到库钱箱,柜员用凭证出库交易领入凭证。 3、钱箱管理 系统对网点设立库钱箱和柜员钱箱。库钱箱由中心机房建立,柜员钱箱在柜员第一次登录系统注册时柜员钱箱号不输(此时此柜员钱箱不存在),要柜员注册系统做增加柜员钱箱后柜员才生成钱箱号。在柜员钱箱生成后不能办理现金业务,需退出系统重新注册系统(此时此要输入柜员钱箱号)后才能办理现金业务。库钱箱本网点所有柜员都可使用,柜员钱箱只许本柜员使用,如果一个柜员不注册钱箱,则只能做转账业务而不能做现金业务。 4、日常操作流程 开机后,进入登录界面,输入柜员号、密码,系统校验成功后进入主界面。进入主界面,屏幕右端显示系统日期、柜员号、钱箱号。 系统采用菜单结构与交易码并行的方式。办理业务可以从机器主界面到子界面一层层进入,了解到每一项业务的主菜单和子菜单。 日终轧帐包括柜员钱箱轧帐、柜员轧帐、网点轧帐三项内容。 (1)柜员钱箱轧帐打印出“柜员钱箱轧帐单”,包括当日该柜员现金、凭证的领用、上缴、入库、出库及余额数,利用钱箱轧帐可以查询现金及凭证数。(2)需要注意的是柜员轧帐后不可以再进行业务操作,如果尚有业务需要处理,必须进行柜员平帐解除,才可以继续做业务。网点轧帐后不可以再进行本网点的业务操作。如果尚有业务需要处理,必须由市行中心机房解锁,再做柜员平帐解除,才可以继续做业务。网点轧帐必须在所有柜员均做完柜员轧帐后才可以操作。银行系统:个人业务操作 1、活期储蓄 (1)普通活期开户:3294—3050—3055

毕业论文-银行排队叫号系统的设计

毕业论文-银行排队叫号系统的设计

本科毕业设计(论文) 题目银行排队叫号系统的设计 学生姓名陈福秀 专业班级 09 电子科学与技术1班 学号 200931002 院(系)电气工程学院 指导教师(职称) 王继红(讲师) 完成时间 2013 年05月18日 郑州科技学院电气工程学院

二○一三年五月

郑州科技学院毕业设计(论文)任务书 题目银行排队叫号系统的设计 专业 09电科学号 200931002 姓名陈福秀 一、主要内容 收集,整理与课题有关技术与产品资料,确定系统方案,设计电路原理图,绘制电路板,编写应用程序,进行焊接调试并撰写毕业论文。 二、基本要求 1. 检索与课题有关的资料,提出自己的设计方案,方案应具有可行性、经 济性;写出开题报告。 2. 编写论文初稿。 3. 在的初稿基础上撰写毕业论文。 4. 毕业论文的撰写,要求认真工整、条理清晰、正确标准。 三、主要参考资料 1. 张毅坤编.单片微型计算机原理及其应用[M] 西安:西安电子科技大学出版社1998 2. 金篆芷.王明时现代传感器技术[M].北京:电子工业出版社1995 3. 吕俊芳. 传感器接口与检测仪器电路[M].北京:北京航空航天出版社1994 完成期限: 指导教师签名: 专业负责人签名: 2013年5月18日

中文摘要 摘要 本文设计了一套排队叫号系统。该系统是以排队抽号顺序为核心,客户利用客户端抽号,工作人员利用叫号端叫号;通过显示器及时显示当前所叫号数,客户及时了解排队信息,通过合理的程序结构来执行排队抽号。以提高排队等待效率,解决排队秩序混乱,前拥后挤等现象,实现排队自动化,规范化。通过该系统的使用,客户不必为排队浪费大量精力,便于管理排队秩序,同时适应信息时代管理数字化的要求,提高服务水平与质量。 排队叫号系统是针对银行、工商、税务、通讯、政府机构等部门的大厅工作流程设计的,是利用电脑的科学管理客户排队的系统,能够很好地解决客户在服务机构办理业务时所遇到的各种排队、拥挤和混乱现象,为客户办理业务带来莫大的方便和愉悦。本课题研究的是一款无人排队的排队叫号系统,它主要由系统主从机、键盘、显示电路、蜂鸣器电路等部分构成。系统利用AT89C51 单片机进行控制,通过串行通信方式传输处理数据;通过按键取号,在LCD1602 上显示排队的号码以及当前正在等待的人数;通过按键叫号,在LCD1602 上显示叫到的号码,由蜂鸣器发出声音提示客户。这种现代化的高科技产品彻底解决了银行、工商、税务、通讯、政府机构等部门的服务大厅普遍存在的站立等候、服务无序的问题,同时免除了令客户不舒服的站立式排队,深化完善了服务的质量。本系统采用AT89C51 单片机进行控制,利用LCD1602 显示,蜂鸣器鸣叫提示的人机交互界面,模拟排队管理系统,科学的处理各种排队情况,具有操作简便、控制灵活、显示清晰、制作成本低、性价比较高等特点。 关键词:AT89C51单片机LCD1602排队叫号系统开发

银行系统模拟

数 据 结 构 实 验 报 告 实验3:银行业务模拟系统姓名:范亚平 年级:2010级 学号:1008114061 专业:计算机科学与技术专业(1)班

数据结构实验报告 一、实验目的: 1)通过实验掌握对离散事件模拟的认识; 2)进一步理解队列的实现与应用; 3)对链表的操作有更深层次的理解; 二、实验条件: 学院提供公共机房,1台/学生微型计算机。 三、实验要求: 1问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。四、总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理

银行排队系统

1、编程实现一个“银行排队模拟系统” 思想: 程序等待标准输入,若检测到有标准输入,则创建对应的进程。 如果目前等待态的进程个数等于座位数,在门外等待(即放入消息队列等待创建);若目前阻塞的进程个数小于座位数则进程阻塞。 与此同时,检测等待态的进程个数小于座位数,消息队列中存在消息,则从消息队列中取出一条消息,同时创建一个新进程。 本程序使用信号量进行进程间通信,使用消息队列存储从stdin输入的消息。 设置一信号量,标示大厅中座位。 设置一消息队列,标示在门外等待。 本程序,没有实现,老师所说的,“窗口进程”。只是在主控进程中,对S3,S4进行了操作来实现与子进程的通信。 相当于,主控进程作为一个窗口进程,来处理各个客户进程。 由于,想要做到,在同一时间,主控进程最多只有两个子进程(客户进程)在执行,其他的都在阻塞状态,因此,本程序,将S3的初始值设置为2 1) 该程序模拟客户到银行取号-排队-被叫号-被服务的过程; 2) 程序执行流程如下: Step1: 客户到达银行,并从取号机取号; Step2: 如果大厅中有空闲座位,则座下等待,否则,在大厅外等待;

Step3: 银行职员如果发现有客户等待,则依次叫号服务,否则休息; Step4: step1-step4重复执行 3) 大厅中座椅数量为20个; 4) 服务窗口为2个; 5) “客户到来”通过命令行输入客户名字模拟; 6) 为了模拟实际情况,每个客户服务时间不小于20秒,可随机 确定; 7) 程序顺序列出不同窗口服务客户的:名称,窗口号,服务时间2、提示 1) 需一个主控进程,随时监控客户到来,并为之创建进程; 2) 取号机应视为互斥型临界资源 3) 座椅应视为临界资源 4) 客户等待及被叫号应视为进程间同步过程 主控进程(serve.c)执行流程图:

C++简单模拟银行系统

创建一个类,对银行的一般业务进行处理。 包括:开通帐户、存钱、取钱、销户、查询等功能! # include"iostream.h" # include"malloc.h" # include"string.h" # include"stdlib.h" # include"time.h" # include"windows.h" typedef struct node { char name[20];//姓名 char mima[10];//密码 int money;//金额 int zhanghao;//账号 struct node *next; }people; class bank { private: people *p; public: bank() { p=(people *)malloc(sizeof(people)); p->next=NULL; } void kaihu(); //开户 void cun();//存钱 void qu();//取钱

void xiaohu();//销户 void chaxun();//查询 void mulu(); void xuanzhe(); }; void bank::kaihu() { system("cls"); cout<<"\t\t\t开户"<zhanghao=rand()%10000; memset(m->name,0,sizeof(m->name)); memset(m->mima,0,sizeof(m->mima)); cout<<"\n请输入姓名:"; cin>>m->name; cout<<"\n请输入密码:"; cin>>a; cout<<"\n请再次输入密码:"; cin>>b; while(strcmp(a,b)!=0) { cout<<"\n与第一次输入不符,请重新输入:"; cout<<"\n请输入密码:"; cin>>a; cout<<"\n请再次输入密码:"; cin>>b; } strcpy(m->mima,a);

自助银行模拟系统

程序语言综合设计 课程名称程序语言综合设计题目名称自助银行模拟系统专业班级 学生姓名 学号 指导教师 二○一六年四月二十一日

自助银行模拟系统 摘要 计算机科学技术的发展不仅极大地促进了整个科学的发展,而且明显加快了经济信息化和社会信息化的进程。绝大多数的公司的日常办公已经离不开计算机技术和软件技术。国内的银行大都大力发展银行自动取款机(ATM),以提高工作效率和降低成本。 本系统采用Eclipsc作为开发工具,使用Java语言编写,并连接SQL Server 数据库,搭建和模拟银行最常见存款取款转账操作。可实现用户注册、用户登录、用户存款、用户取款、用户转账、查询该用户所有的操作记录的功能。 关键字:注册;登陆;存取款;全体账户信息

ATM simulation system Abstract The development of computer science and technology not onlygreatly promoted the development of science as a whole, andsignificantly speed up the process of economicandsocialinformation. The vast majority of the company's day-to-day officecan not do without the computer technology and software technology. Domestic banksMost vigorously development Bankautomated teller machine (ATM), in order to enhance efficiency and reduce costs. Eclipsc The system uses as a development tool of to using the Java language, and connect to an SQL Server database, set up the most common and analog bank deposit withdrawals transferoperation. User registration, user login, the user deposits the userwithdrawal, check all operating record of the user. Key words:Registration;Login; Deposit;Transfer;History

实验报告银行业务模拟系统的设计与实现(1)

数据结构实验报告 银行业务模拟系统的设计与实现(该实验为综合性实验,共用6个学时)二、实验要求: 1.问题描述: 假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。 2.一个完整的系统应具有以下功能: 1)初始化(OpenForDay),模拟银行开门时各数据结构的状态。 2)事件驱动(EventDrived), 对客户到达和离开事件做相应处理。 3)下班处理(CloseForDay), 模拟银行关门时的动作,统计客户平均逗留时间。 [备注]: 假设银行开门的时刻(间)设为0 , 银行每天营业的时间在程序运行时输入(例如480分钟)。 每个客户办理业务的时间不超过30分钟,两个相邻客户到达银行的时间间隔不超过5分钟要求程序执行时,只要给出银行每天的营业时间即可输出客户平均逗留的时间。 三、总的设计思想、环境语言、工具等 总的设计思想: 为了计算这个平均的逗留时间,自然需要知道每个客户到达银行和离开银行这两个时刻,后者减去前者即为每个客户在银行的逗留时间。所有客户逗留时间的总和被一天内进入银行的客户数除便是所求的平均时间。称客户到达银行和离开银行这两个时间发生的事情为“事件”,则整个模拟程序将按事件的先后顺序进行处理。这样一种程序称做事件驱动模拟。下面是上述银行客户的离散事件驱动的模拟算法。 void Bank_Simulation( int CloseTime ){ // OpenForDay ( ); //初始化,模拟银行开门时各数据结构的状态。 while(有要处理的事件时) //有事件可处理 { EventDrived ; //事件驱动,从事件表中取出事件en; //根据en的类型(客户到达事件或客户离开事件)做相应的处理 if(en表示客户到达) CustomerArrived( );// 处理客户到达事件 else CustomerDeparture( ) ;// 处理客户离开事件 }//while CloseForDay( );//计算客户的平均逗留时间 }// Bank_Simulation 环境语言:Windows下的Microsoft VC++ 四、数据结构与模块说明 下面是模拟程序中需要的数据结构及其操作。

队列的应用-银行排队程序模拟

队列的应用-银行排队程序模拟 1、问题描述 银行的排队策略:先来先服务,客人分成VIP客人及普通客人,VIP客人可以直接享受服务,普通客人需要排队等待服务,当服务柜台有空闲时,队首客人接受服务。 2、具体功能要求 程序应具有如下六个菜单项: 1、顾客到达(选择该菜单后,再根据用户选择,区别两种级别的客人类型) 2、顾客离开(输入离开的顾客及接受服务的柜台号,并给出评价,排队中的 队首顾客应该取得服务资格) 3、查看业务办理情况(显示目前正在接受服务的柜台和顾客对应关系) 4、查看排队情况(显示目前等待的人数及相应顾客编号) 5、系统查询(显示服务了多少顾客,及平均服务时间) 6、退出系统 附录中为程序运行效果及说明。 实训报告格式及要求: 封面: 程序设计实训报告 (分组成员名单(姓名学号)和分工) 内容: 一、题目 二、需求分析 三、概要设计(存储结构设计,自定义函数介绍,系统框架图) 四、详细设计及测试结论(算法的设计,测试遇到的问题,原因及解决办法) 五、总结 附录:程序详细清单及测试图例。 要求:分工必须明确,程序有完整注释,图例清晰。

附:程序运行效果及说明。 1、选择用户到达后,出现类型选择界面 2、当3名普通用户进入银行接受服务后,选择业务查询菜单,显示出下: 3、选择顾客离开菜单,进入子界面,要求输入客人编号 4、离开时应该能够选择评价 5、评价后,显示相关服务信息

6、当2号客人离开后,4号客人在业务查询界面上显示为正在接受服务 7、系统查询界面应该要求输入管理员账号和密码(可固化在程序内) 8、VIP客人的账号和密码也可固化在程序内,或写在文件里。

银行业务模拟系统

院系:计算机科学学院 专业:计算机科学与技术 年级:2005级 课程名称:信息系统设计与分析 指导教师: 目录 银行业务模拟系统需求分析说明书 (3) 1.引言 (3) 1.1编写目的 (3) 1.2项目背景 (4) 2.任务概述 (4) 2.1 目标 (4) 2.2 运行环境 (4) 3.功能需求 (4) 3.1功能划分 (4) 3.2用户注册描述 (5) 3.2.1概述 (5) 3.2.2业务场景描述及规则 (5)

3.3.1概述 (5) 3.3.2业务场景描述及规则 (5) 3.4存入金额描述 (6) 3.4.1概述 (6) 3.4.2业务场景描述及规则 (6) 3.5取出金额描述 (6) 3.5.1概述 (6) 3.5.2业务场景描述及规则 (6) 3.6查询余额描述 (6) 3.6.1概述 (6) 3.6.2业务场景描述及规则 (6) 3.7转账描述 (6) 3.7.1概述 (6) 3.7.2业务场景描述及规则 (7) 3.8销户描述 (7) 3.8.1概述 (7) 3.8.2业务场景描述及规则 (7) 4.性能需求 (7) 4.1数据精确度 (7) 4.2系统安全性 (7) 5.运行需求 (8) 5.1用户界面 (8) 5.2硬件接口 (8) 5.3软件接口 (8) 5.4故障处理 (8) 银行业务模拟系统概要设计说明书 (9) 1.文档介绍 (9) 1.1文档目的 (9) 1.2文档范围 (9) 1.3读者对象 (9) 2.设计约束 (9) 3.系统总体结构设计 (10) 3.1系统总体结构设计 (10) 3.2系统部署模型 (10) 3.3系统逻辑结构设计 (11) 3.3.1客户端通讯模块 (11) 3.3.2通讯服务系统 (12) 4.数据库设计 (13) 5.通讯协议 (13) 5.1概述 (13) 6.开发环境的配置 (14) 7.运行环境的配置 (14) 银行业务模拟系统详细设计说明书 (15)

Java基础案例_模拟银行存取款业务

模拟银行存取款业务 编写一个Java应用程序,模拟网上银行登录及存取款业务。登录时需判断银行卡号和银行卡密码,当输入的卡号和密码都正确时,登录成功,提示当前登录的账户名,并进入下一步选择操作类型。操作类型包括四种(存款:1 取款:2 余额:3 退出:0),输入数字1、2时,将进行存取款操作,此时需要输入存取的金额,并进行正确的金额加减计算;输入数字3时,显示当前账户的余额;输入数字0时将退出整个系统。 要求及解题思路: 1)程序中涉及到的输入,均采用在控制台通过键盘录入的方式进行。 2)利用类的封装的思想,创建银行帐户类User,在类中定义五个属性cardId、cardPwd、userName、call和account分别表示帐户的银行卡号、银行卡密码、账户名、手机号码和存款额。 3)创建DBUtil类,该类用于模拟银行系统中的账户人信息,相当于数据库的功能。登录时需通过用户输入的信息和系统中保存的账户信息进行比较,从而判断登录是否成功。DBUtil类中通过Map集合存储模拟的账户信息,其中key值用于存储银行卡号,value值用于存储整个账户对象。该类中还需提供两个方法,分别是获取单个账户信息的方法和获取所有个账户信息的方法。 4)创建一个Bank类,该类用于处理网上银行的登录、存取款和显示余额等所有业务逻辑。登录时需要验证用户输入的银行卡号和银行卡密码,是否存在于银行系统中,如果是提示登录成功,否则提示登录失败,让用户重新登录。登录成功后,需根据提示的四种操作类型,输入相应的数字,对当前账户存款进行存取和查询余额操作。操作完成后,输入数字0将退出整个系统。 5)在应用程序的开发过程中,请尽可能地做到程序的健壮性和操作中提示人性化。例如用户在存款和取款时,显然输入非数字值是不合理的,此时应该加强判断并引导用户输入正确的数值,等等。 1

数据结构课程设计-银行业务模拟系统

山东理工大学计算机学院课程设计 (数据结构) 班级计升1001班 姓名 学号1022051029 指导教师 二○一一年一月二十日

课程设计任务书及成绩评定 课题名称银行业务模拟系统 Ⅰ、题目的目的和要求: 1、设计目的 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。 (1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。 (2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 2、设计题目要求: 1. 客户业务分为两种:第一种是申请从银行得到一笔资金,即取款或借款;第二种是向银行投入一笔资金,即存款或还款。 2. 银行有两个服务窗口,相应地有两个队列。客户到达银行后先排第一个队。处理每个客户业务时,如果属于第一种,且申请额超出银行现存资金总额而得不到满足时,则立即排入第二个队等候,直至满足时才离开银行,否则业务处理完后立即离开银行。 3. 每接待完一个第二种业务的客户,则顺序检查和处理第二个队列中的客户,对能满足的申请者予以满足,不能满足者重新排到第二个队列的队尾。 4.假设检查不需要时间,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有满足者),转而继续接待第一个队列的客户。 5. 任何时刻都只开一个窗口,营业时间结束时所有客户立即离开银行。通过模拟方法求出客户在银行内逗留的平均时间。

Ⅱ、设计进度及完成情况 Ⅲ、主要参考文献及资料 [1] 严蔚敏数据结构(C语言版)清华大学出版社 1999 [2] 严蔚敏数据结构题集(C语言版)清华大学出版社 1999 [3] 谭浩强 C语言程序设计清华大学出版社 [4] 与所用编程环境相配套的C语言或C++相关的资料

模拟银行排队取号系统_命令行版_代码

北邮模拟银行系统_命令行版_源代码(C语言版C-Free) 以此怀念我幼稚的不冷静大一下干了一些事至少努力过努力不错过这段有点冲动的时期毕竟青春再见宏福再见大一 By北邮14级13班颜力琦constant.h #define Wait 0//等待服务状态 #define DistributeForOrdinary 1//分配普通客户状态 #define WaitForVIPNum 2//等待VIP身份号状态 #define CheckVIP 3//核对VIP身份号状态 #define DistributeForVIP 4//分配VIP客户状态 #define Quit 5//下班指令发出,锁定取号机状态 #define Unopen 10//窗口关闭状态 #define WaitWin 11//窗口等待状态 #define Serve 12//窗口服务状态 #define Call 13//窗口叫号状态 #define Rest 14//窗口休息状态 #define Closed 15//窗口下班状态 variable.h FILE *fptr1;//读取信息的文件 FILE *fptr2;//输出文件 FILE *fptr3;//输出统计数据文件 FILE *fVIP;//VIP文件打开指针 int state = 0;//取号机状态值 int closeOrder = 0;//下班指令是否发出 int WinCount, VIPWinCount;//营业窗口数 int change = 0;//是否有事件发生

struct VIPInformation VIPInfo; //VIP客户资料struct WINDOWS Win[8]; //8个窗口编号0-7 int MaxSeqLen;//单队列最大允许等待长度 int MinSec;//单业务办理最短时长 int MaxSec;//单业务办理最长时长 int MinRestSec;//窗口休息最短时长 int MaxRestSec;//窗口休息最长时长 int VIPSERVLen;//VIP窗口设置时长 int maxNUM=0;//最大普通服务号码 int minNUM=0;//最小普通服务号码 int VIPmaxNUM=0;//最大VIP服务号码 int VIPminNUM=0;//最小VIP服务号码 char SERVE[3] = {0};//最大客户服务号码HANDLE hScreenMutex;//保存互斥对象的句柄 Main.c #include #include #include #include #include #include #include "constant.h" #include "variable.h" #define DEBUG void initialize(void);//初始化函数

相关文档
最新文档