#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;

int length;

}linkqueue;

linkqueue q[5];

int number,time;

int flag=1;

void initqueue(linkqueue &q){

q.front=q.rear=(person)malloc(sizeof(pnode));

if(!q.front||!q.rear)

exit(0);

q.front->next=NULL;

q.length=0;

}

void enterqueue(linkqueue &q,int number,int time){

person p;

p=(person)malloc(sizeof(person));

if(!p) exit(0);

q.length++;

p->number=number;

p->cometime=time;

// sum+=p->finishtime; //统计每个人的排队时长

p->next=NULL;

q.rear->next=p;

q.rear=p;

}

void popqueue(linkqueue &q){

person p;

if(q.front==q.rear){

return ;

}

p=q.front->next;

q.front->next=p->next;

q.length--;

if(q.rear==p){

q.front=q.rear;

}

}

int getmin(linkqueue q[]){

int temp=q[1].length;

int j=1;

for(int i=2;i<=4;i++){

if(q[i].length

temp=q[i].length;

j=i;

}

}

return j;

}

int getmax(linkqueue q[]){

int temp=q[1].length;

int j=1;

for(int i=2;i<=4;i++){

if(q[i].length>temp){

temp=q[i].length;

j=i;

}

}

return j;

}

void Customer_Come(){

printf("客户选队并排队\n\n");

printf("输入客户编号:");

scanf("%d",&number);

printf("输入当前时间:");

scanf("%d",&time);

printf("\n");

/*

if(one.length<=two.length&&one.length<=three.length&&one.length<=four.length){

enterqueue(one,number,time);

}

else if(two.length<=one.length&&two.length<=three.length&&two.length<=four.length){

enterqueue(two,number,time);

}

else if(three.length<=one.length&&three.length<=two.length&&three.length<=four.length){

enterqueue(three,number,time);

}

else{

enterqueue(four,number,time);

}*/

printf("%d号顾客来到%d号窗口\n",number,getmin(q));

enterqueue(q[getmin(q)],number,time);

}

void Customer_Leave(){

printf("客户离队:\n\n");

printf("输入要离队的客户编号: ");

scanf("%d",&number);

printf("输入当前时间: ");

scanf("%d",&time);

//从四个队的队首分别去找,因为离队的只能是队首。

/* if(one.front->next->number==number){

printf("%d号客户办理完成业务从1号窗口离开\n",number);

popqueue(one);

break;

}

if(two.front->next->number==number){

printf("%d号客户办理完成业务从2号窗口离开\n",number);

popqueue(two);

break;

}

if(three.front->next->number==number){

printf("%d号客户办理完成业务从3号窗口离开\n",number);

popqueue(three);

break;

}

if (four.front->next->number==number){

printf("%d号客户办理完成业务从4号窗口离开\n",number);

popqueue(four);

break;

} */

for(int i=1;i<=4;i++){

if(q[i].front->next->number==number){

sum+=time-q[i].front->next->cometime;

printf("%d号客户办理完成业务从%d号窗口离开\n",number,i);

popqueue(q[i]);

flag=0;

}

}

if(flag)

printf("编号错误请重新输入\n");

}

void Adjust_Queue(linkqueue q[]){

int m=getmin(q);

int n=getmax(q);

person x,y;

x=(person)malloc(sizeof(pnode));

y=(person)malloc(sizeof(pnode));

x=q[n].rear;

enterqueue(q[m],x->number,x->cometime);

y=q[n].front;

while(y->next!=q[n].rear)

y->next=y->next->next;

q[n].rear=y;

free(y->next);

q[n].length--;

q[m].length++;

}

void Close_Door(){

printf("下班时间到,工作结束。\n");

printf("今天共接待了%d位客户\n", cnt);

printf("每位客户平均逗留时间为%.2f\n", (float)sum/cnt);

}

void welcome(){

printf(" ************************** *************************\n");

printf(" * 模拟银行排队系统 * * 请输入号码选择功能 *\n");

printf(" ************************** *************************\n");

printf(" 当前一号队列人数:%3d \n",q[1].length);

printf(" 1 客户选队并排队 \n");

printf(" 当前二号队列人数:%3d \n",q[2].length);

printf(" 2 客户离队 \n");

printf(" 当前三号队列人数:%3d \n",q[3].length);

printf(" 3 退出系统 \n");

printf(" 当前四号队列人数:%3d \n",q[4].length);

printf(" ************************** *************************\n");

}

int main(){

//initqueue(one);

//initqueue(two);

//initqueue(three);

//initqueue(four);

for(int i=1;i<=4;i++){

initqueue(q[i]);

}

while(1){

welcome();

int x;

scanf("%d",&x);

switch(x){

case 1:

cnt++;

Customer_Come();

break;

case 2:

Customer_Leave();

while(q[getmax(q)].length-q[getmin(q)].length>=2)

Adjust_Queue(q);

break;

case 3:

Close_Door();

exit(0);

break;

}

}

return 0;

}

c 语言银行排队系统,C++实现银行排队系统相关推荐

  1. 单服务器排队系统设计,手机排队设计与实现 - 银行叫号手机排队系统解决方案...

    2 手机排队设计与实现 2.1 设计思路 相比现有的排队系统存在的缺点,在设计中主要考虑实现无纸化.网络化.智能化的排队机制,用户不必到营业厅现场即可通过无线网络就可以实现排队功能:通过向用户反馈相关 ...

  2. 计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档)

    计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档) 计算机毕业设计Java某银行OA系统某银行OA系统演示2021(源代码+数据库+系统+lw文档) 本源 ...

  3. SAP系统中的银行主数据FI12

    SAP系统中的银行主数据FI12:分为四个部分, 1,是银行代码,对每一个银行单位(包括总行.分行和分理处等)定义的一个唯一代码, 2是开户银行,在各下属单位代码下维护的,属于各下属单位自身开户银行的 ...

  4. 在正式使用计算机账务系统的银行对账功能,会计电算化账务处理系统中,银行对账的功能有哪些? 爱问知识人...

    一.银行对账 由于企业与银行的账务处理和入账时间不一致,企业和银行之间经常会出现"未达账项",为了能够准确掌握银行存款的实际余额企业必须定期将银行存款日记账与银行出具的对账单进行核 ...

  5. c语言作业存款,2道C语言的题第一:设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计...

    问题描述: 2道C语言的题 第一: 设银行定期存款的年利率rate为2.25%,并已知存款期为n年,存款本金为capital元,试编程计算n年后的本利之和deposit. 要求定期存款的年利率rate ...

  6. 一种用于解决银行代理产品交易热点账户的系统及方法

    一种用于解决银行代理产品交易热点账户的系统及方法  摘要 本发明公开了一种用于解决银行代理产品交易热点账户的系统,该系统包括业务受理终端.系统主机.前置处理装置和第三方单位系统,其中:业务受理终端通过 ...

  7. 计算机运营系统安全,探讨银行计算机系统安全运行的规范.doc

    探讨银行计算机系统安全运行的规范.doc 探讨银行计算机系统安全运行的规范 摘 要 现如今,我国的金融体制已经不断得到改革,各大银行的发展速度越来越快,并且迅速在社会上取得稳固的地位,商业银行之所以能 ...

  8. c语言排队取号系统功能,医技排队叫号系统的功能特点和优势有哪些

    医技排队叫号系统的功能特点和优势有哪些 2020-8-5 17:24:40点击: 作者:触摸显示器 医技排队叫号系统的优点: 1.系统软件的核心是C语言,是在VirtualStudioC环境中开发的, ...

  9. 解密百信银行架构:如何构建全云系统

    前几天,百信银行首度公开了技术架构,信息量非常大.这是我国第一家具有独立法人代表的直销银行,也是一家纯粹将业务构架在云上的互联网公司,还是一家正在利用AI构建智慧大脑的金融机构. 尽管云计算谈论多年, ...

  10. 高并发秒杀系统解决方案(银行产品秒杀系统)

    场景引入 什么是秒杀 秒杀场景一般会在电商网站举行一些活动或者节假日在12306网站上抢票时遇到.对于电商网站中一些稀缺或者特价商品,电商网站一般会在约定时间点对其进行限量销售,因为这些商品的特殊性, ...

最新文章

  1. SQL 创建索引的作用以及如何创建索引
  2. 注意:python flask 里image文件 css文件 html文件都必须有固定存放位置!
  3. pycharm里怎么关闭一个项目_【周末分享】一个完整的项目复盘到底要怎么做?...
  4. python 让异常名称显示出来
  5. 容器可以作为全局变量吗_四季青是风水树吗?哪些可以作为风水树?
  6. 面试题——Java虚拟机
  7. JavaScript 中,定义函数时用 var foo = function () {} 和 function foo() 有什么区别?
  8. 2021-2025年中国云托管服务行业市场供需与战略研究报告
  9. 蓝桥杯C++AB算法辅导
  10. Hex Editor Neo(十六进制编辑器)官方正式版V6.54.1.6478 | 二进制编辑器hex下载 | 非hexeditor汉化版
  11. U盘文件系统损坏恢复
  12. ttest函数使用方法_TTEST 函数 - EXCEL 2010 中文帮助文档
  13. Matlab 2018b 安装问题 - License checkout failed
  14. Java实现XML格式化
  15. 创造与魔法维护服务器奖励,创造与魔法5月最新兑换码大全 创造与魔法礼包码2021及使用方法一览...
  16. python 语法错误 和异常_Python基础知识:新手学Python时常见的语法错误和异常
  17. ubuntu中/etc/hosts文件的作用
  18. iOS 录制视频MOV格式转MP4
  19. 记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践
  20. SQlite跨库查询

热门文章

  1. VUE 入坑系列 一 双向绑定
  2. angularjs的表单验证
  3. jQuery实现表格行上移下移和置顶
  4. 《三毛。。。。》烂漫
  5. Spring总结四:IOC和DI 注解方式
  6. 【BZOJ-2435】道路修建 (树形DP?)DFS
  7. 【Github教程】史上最全github用法:github入门到精通
  8. CentOS6.0 yum php mcrypt 扩展安装问题
  9. 求二维数组的转置矩阵
  10. C# 转繁体转简体转拼音,超级文本大转换