1.问题描述
(1)假设某银行有四个窗口对外接待客户,从早晨银行开门起不断有客户进入银行。由于每个窗口在某个时刻只能接待一个客户,因此在客户人数众多时需在每个窗口前顺次排队,对于刚进入银行的客户,如果某个窗口的业务员正空闲,则可上前办理业务,反之,若四个窗口均有客户所占,他便会排在人数最少的队伍后面。现在需要编制程序以模拟银行的这种业务活动并计算一天中客户在银行逗留的平均时间。
(2)初始化(OpenForDay),模拟银行开门时各数据结构的状态。
(3)事件驱动(EventDrived), 对客户到达和离开事件做相应处理。
(4)下班处理(CloseForDay),模拟银行关门时的动作,统计客户平均逗留时间。
2.问题分析
(1)银行系统运转涉及到的对象有窗口和客户。窗口反映的是排队的客户,所以应该采用队的数据结构。入队出队的操作符合现实生活中银行排队的模式,每个客户的信息应该存入代表窗口的队中。
(2)客户这个对象含有的属性应该有对应的编号、进入银行和离开银行的时间、所在的窗口号。
(3)题中要求了三个函数,初始化函数可以对窗口队列进行初始化操作,事件驱动函数要完成数据的输入、判断、存储,下班处理为计算平均时间。
3.完整源代码

#include<iostream>
#include<cstring>
#define maxsize 20
using namespace std;typedef struct{ int hour;int minute;int name;
}customer;int delta_T(int hour2,int minute2,int hour1,int minute1)
{return (hour2-hour1)*60+(minute2-minute1);
}typedef struct QNode{customer data;struct QNode *next;
}QNode,*QueuePtr;
typedef struct
{QueuePtr front;QueuePtr rear;int length;
}LinkQueue;int OpenForDay(LinkQueue &one,LinkQueue &two,LinkQueue &three,LinkQueue &four)
{one.front = one.rear = new QNode;two.front = two.rear = new QNode;three.front = three.rear = new QNode;four.front = four.rear = new QNode;one.front->next = two.front->next = three.front->next = four.front->next = NULL;one.length=two.length=three.length=four.length=0;return 1;
}int EnQueue(LinkQueue &Q,customer e) //入队
{QNode *p;p = new QNode;p->data = e;p->next = NULL;Q.rear->next = p;Q.rear = p;Q.length++;return 1;
}int DeQueue(LinkQueue &Q,customer &e)  //出队
{if(Q.front == Q.rear)return 0;QNode *p;p = new QNode;p = Q.front->next;e = p->data;Q.front->next = p->next;if(Q.rear == p)Q.rear = Q.front;delete p;Q.length--;return 1;
}customer GetHead(LinkQueue &Q)
{if(Q.front != Q.rear)return Q.front->next->data;
}int Select(int a,int b,int c,int d)
{if(a== b == c == d)return 0;if(a>=b && a>=c && a>=d)return 1;if(b>=a && b>=c && b>=d)return 2;if(c>=a && c>=b && c>=d)return 3;if(d>=a && d>=b && d>=c)return 4;
}void EventDrived(LinkQueue &one,LinkQueue &two,LinkQueue &three,LinkQueue &four)
{int n,hour,minute,i=0,Time[20],j=0,m=0,total = 0;float average;for(j=0; j<20; j++){Time[j]=0;}OpenForDay(one,two,three,four);while(1){customer e;int name;cout<<"功能选择:1.客户进入   2.客户离开   3.关门"<<endl;cin>>n;switch(n){case 1:cout<<"输入客户姓名:";cin>>e.name;cout<<"进入时间:";cin>>e.hour>>e.minute;if(one.front == one.rear||two.front == two.rear||three.front == three.rear||four.front == four.rear){if(one.front==one.rear)EnQueue(one,e);else if(two.front == two.rear)EnQueue(two,e);else if(three.front == three.rear)EnQueue(three,e);else EnQueue(four,e);  }else{switch(Select(one.length,two.length,three.length,four.length)){case 0:EnQueue(one,e);break;case 1:EnQueue(one,e);break;case 2:EnQueue(two,e);break;case 3:EnQueue(three,e);break;case 4:EnQueue(four,e);break;}}break;case 2:cout<<"输入客户编号:";cin>>name;cout<<"输入离开时间:";cin>>hour>>minute;if(name==GetHead(one).name){DeQueue(one,e);Time[i] = delta_T(hour,minute,e.hour,e.minute);i++;m++;//用户数目 }else if(name==GetHead(two).name){DeQueue(two,e);Time[i] = delta_T(hour,minute,e.hour,e.minute);i++;m++;}else if(name==GetHead(three).name){DeQueue(three,e);Time[i] = delta_T(hour,minute,e.hour,e.minute);i++;m++;}else{DeQueue(four,e);Time[i] = delta_T(hour,minute,e.hour,e.minute);i++;m++; }break;default:break;}if(n==3){for(j=0; j<m; j++)total = Time[j] +total;average = total/float(m);cout<<"客户平均逗留时间:"<<average<<"分钟"<<endl; break;}}
}int main()
{LinkQueue one,two,three,four;OpenForDay(one,two,three,four);EventDrived(one,two,three,four);return 0;
} 

我一朋友亲戚在银行工作,说平时上班就改些if、else啥的,我还真写了好多if、else【笑哭】【笑哭】
不足之处还望大家指正包含!!

设计银行模拟业务系统相关推荐

  1. 流程银行柜面业务系统规划

    描述:流程银行柜面业务系统优化了柜面业务流程,简化前台业务手续,增强后台处理能力,分解业务环节,提高了业务处理效率,方便了柜员操作.这样,柜员就能更好地接待客户,提升柜员和网点的客户服务能力,帮助商业 ...

  2. java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw

    java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw java毕业生设计信用卡增值业务系统小程序用户端计算机源码+系统+mysql+调试部署+lw 本源码技术栈 ...

  3. 银行项目业务系统必备

    银行项目业务系统必备 一.业务系统 1.核心业务系统 业务功能包括:总账管理.卡系统管理.客户信息管理.额度控管.存款.贷款.资金业务.国际结算.支付结算.对外接口等. 2.清分清算系统 业务功能包括 ...

  4. 大一下课程设计————银行活期储蓄系统

    这次敲大作业感受良多,尽管是一个相对简单地题目(也许是我写的功能太少了...) 其中出现了很多很多的bug让我一度崩溃,各种逻辑错误层出不穷,通过反复请教度娘解决了产生bug的人后终于完成了.. 这次 ...

  5. 现代银行集中式业务系统及数据整合

    随着互联网和移动互联网的普及,互联网金融也日益进入人们的日常生活.当前互联网金融方兴未艾,各种新颖高效的金融产品层出不穷.随之而来的是日益激烈的竞争.在这次金融革新的大潮中,传统银行暂时处于相对保守的 ...

  6. 从0到1教你设计业务系统

    导读 本文将以一个案例,向读者逐步揭示一套业务系统从0到1的设计过程.重点讲述架构.模型等业务系统最本质的设计精要. 一.业务系统设计概述 1.什么是业务系统 互联网公司常常将产品方向分为两类,C端和 ...

  7. 基于java的银行综合业务柜台系统设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 第一章 引言  1.1 编写目的 本测试文档的主要功能就是阐述软件的测试计划,内容,进度安排,测 ...

  8. 银行软件业务开发分类杂谈-多年前的旧文

    主机业务开发部 1.核心业务开发 依据银行业务的发展,对核心系统进行开发,包括银行核心业务系统的需求分析.设计.开发.维护等工作.开发运行平台为AS/400系统. 微机业务开发部 2.数据仓库开发 完 ...

  9. 51开发实例 基于51单片机的模拟电梯系统

    一.系统设计 电梯的控制对于我们来说既陌生又显得格外亲切,本次基于52单片机开发的模拟电梯系统,系统没有通过电机模拟电梯运转,按键可以设置楼层,一共设置了3个楼层按键,按下对应的楼层按键就会直接向指定 ...

最新文章

  1. 研华电脑510上电自启_研华工控机怎么设置u盘启动_研华工控机U盘引导方法
  2. [luogu2680] 运输计划 (lca+二分+树上差分)
  3. Python_命名空间和作用域_25
  4. 如何进行软件需求分析
  5. 用于SAO Utils桌面网页挂件的Live2D看板娘
  6. mac打开注册机显示“您没有权限来打开应用程序
  7. 6. 文本分类——transformer模型
  8. 【mysql】mysql表分区、索引的性能测试
  9. 【大数据技术】实验3:熟悉常用的Hive操作
  10. 如何用python更改图片的像素
  11. 我国大陆运营商的手机号码标准格式为:国家码+手机号码,例如:8613912345678。特点如下: 1、 长度13位; 2、 以86的国家码打头; 3、 手机号码的每一位都是数字。
  12. 电商平台中的9种共性推荐策略
  13. 《游戏引擎架构》试读感想
  14. 复利现值系数怎么用计算机计算,复利现值系数计算方法是怎样的?
  15. PEWIN32 PRO site key
  16. win10的0x0000225及0x000007b修复方法
  17. 9.String类 StringBuffer/StringBuilder 的定义
  18. 便携设备:小终端激起大变局
  19. Python的成长过程、语言特色和优势及应用领域
  20. Android带三角形的弹窗,andriod开发 利用.9图制作带三角形指示的popwindow弹窗

热门文章

  1. ID ERR: 4107 CAPI2解决方法
  2. (附源码)计算机毕业设计SSM音乐资源分享网站
  3. BC之The mook jong
  4. 一文读懂什么是VUE
  5. ios马甲包上架(本人经历)
  6. 可编程电子安全相关系统_编程中的安全生态系统概述
  7. ambari配置ranger
  8. php代码编写注册登录页面,PHP开发登录注册完整代码之注册HTML页面
  9. 编程定义一个汽车类Car
  10. opencv之Policy CMP0072 is not set: FindOpenGL prefers GLVND by default when available.