银行排队系统

运行截图

头文件

#include<iostream>      //C++头文件
#include <stdlib.h>     //打包了一些函数,主要使用system() ,malloc()
#include <conio.h>      //通过控制台进行数据输入和数据输出的函数,这里主要使用getch()
#include <time.h>       //时间函数,实现现在时间显示和计时功能
#define n 3             //共有三个窗口
using namespace std;    //使用标准命名空间 

数据类型

/*窗口*/
struct List             //定义一个顺序表来装客户顺序以及记录长度
{int A[n+1];           //顾客用来办理业务的N个窗口int len;              //表示数组中的元素个数
}L;
/*链表结点*/
typedef struct Lnode
{                       //链表结点类型int data;Lnode *next;
}Lnode;
typedef  Lnode* LinkList;
/*队列*/
struct Linkqueue
{                       //链式存储的等候队列的类型定义Lnode *front;Lnode *rear;
}Q;

关于数据结构功能的函数

//初始化线性的算法
void Initshuzu()
{for(int i=1;i<=n;i++)L.A[i]=0;             //元素值为0,表示编号为I的窗口当前状态为空L.len=0;
}
​
//初始化队列的算法
void Initqueue()
{Q.front=Q.rear=(LinkList)malloc(sizeof(Lnode));Q.front->next=NULL;
}
​
//进队算法
void Enqueue(Linkqueue *Q,int elem)
{Lnode *s;s=(LinkList)malloc(sizeof(Lnode));s->data=elem;s->next=NULL;Q->rear->next=s;Q->rear=s;
}
​
//出队算法
int Dlqueue(Linkqueue *Q)
{LinkList t;int x;if(Q->front==Q->rear){printf("队列为空!\n");exit(1);                                 //非正常运行导致退出程序}else{t=Q->front->next;Q->front->next=t->next;x=t->data;free(t);return x;}
}

面向问题银行问题的解决的函数

客户到达

//解决顾客到达事件
void daoda(int x)
{   int i=L.len+1;if (L.len<n)                    //若还有窗口为空 {   L.A[i]=x;               //将顾客编号给L.A[i] i++;L.len++;}else                            //若没有空余窗口 Enqueue(&Q,x);                  //进队
​
}

客户离开

//解决顾客离开事件
void likai(int x)
{  int i=0;do{if(x>L.len){   printf("输入有误!\n请重新输入:");scanf("%d",&x);}elsefor(i=0;i<=L.len;i++){if(i==x){printf("尊敬的%d号顾客您好!\n",x);     L.A[i]=0;                                  //窗口用户清零 L.len--;                                   //窗口+1 if(Q.front!=Q.rear)                        //队列不为空 {int y=Dlqueue(&Q);                      //排队用户出队 L.A[i]=y;                               //第i窗口办理编号为y的用户 L.len++;                                //窗口-1 }}
​}}while(i==0);
}

查看业务办理

//输出队列算法
void print2()
{   int i=0;printf("正在等候办理业务的顾客编号为:");LinkList s=Q.front->next;               //让s成为头结点的下一个,然后数数,一共有多少个顾客 while(s!=NULL){printf("%d ",s->data);s=s->next;i++;}printf("\n您的前面一共有%d人在排队,请您稍候!",i);printf("\n");
}

查看排队情况

//输出数组算法
void printl()
{ int i;printf("正在办理业务的顾客编号为:  一号柜台       二号柜台       三号柜台\n");printf("                             ");for( i=1;i<=L.len;i++){printf("%d号客户        ",L.A[i]);}printf("\n");
}

VIP功能

//vip用户认证
void vip(int x)              {  int i,a; a=x;int l;string ch;int k=0;switch(a){case 1:{printf("请输入你的卡号:");scanf("%d",&i);getchar();printf("请您输入五位密码:");getline(cin,ch);/*******以下是所有已注册的VIP账号和密码*******/if(i==100&&ch[0]=='1'&&ch[1]=='1'&&ch[2]=='1'&&ch[3]=='1'&&ch[4]=='1'){printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务!\n");vip1++;}else if(i==200&&ch[0]=='2'&&ch[1]=='2'&&ch[2]=='2'&&ch[3]=='2'&&ch[4]=='1'){printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务!\n");vip1++;}else if(i==300&&ch[0]=='3'&&ch[1]=='3'&&ch[2]=='3'&&ch[3]=='3'&&ch[4]=='3'){printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务!\n");vip1++;}else if(i==400&&ch[0]=='4'&&ch[1]=='4'&&ch[2]=='4'&&ch[3]=='4'&&ch[4]=='4'){printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务!\n");vip1++;}else if(i==500&&ch[0]=='5'&&ch[1]=='5'&&ch[2]=='5'&&ch[3]=='5'&&ch[4]=='5'){printf("\n尊敬的VIP用户您好,请您直接到VIP区办理业务!\n");vip1++;}else printf("\n你的输入有误!\n");break;}default : break;       }
}

评分系统

//主评分函数
void mygrade()
{  printf("为了改善服务质量,请你对我们的服务进行评价。谢谢!\n");z=guitai( );                //判断 y=pingfeng( );              //判断 switch (z)                  //柜台评分处理{case 1:                //1号柜台评分处理  {sum1+=y;i1++;ave1=sum1/i1;printf(" %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\n",z,ave1);break;}case 2:                 //2号柜台评分处理  {sum2+=y;i2++;ave2=sum2/i2;printf(" %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\n",z,ave2);break;}case 3:                 //3号柜台评分处理  {sum3+=y;i3++;ave3=sum3/i3;printf(" %d号柜台的平均满意度为%0.2f。感谢你的评分,谢谢!!!\n",z,ave3);break;}default : printf("你的输入有误,请重新输入!\n");
​}getch();
}
​
//判断输入的柜台号是否正确
int  guitai( )
{int y=0;printf("请输入你所办理业务的柜台号(1-3):\n");scanf("%d",&y);if(y<1||y>5){printf("你输入的柜台号有误,请重新输入!\n");printf("请输入你所办理业务的柜台号(1-3):\n");scanf("%d",&y);}elseprintf(" 你所办理业务的柜台为%d.\n",y);return y;}
​
//判断输入的分数是否正确
int  pingfeng( )
{int y=0;printf("请输入你评分(1-5):\n                    1分…………非常不满意;\n                    2分…………比较不满意;\n                    3分…………一般满意;\n                    4分…………比较满意;\n                    5分…………非常满意。\n");printf("请输入:");scanf("%d",&y);if(y<1||y>5){printf("你输入评分有误,请重新输入!\n");printf("请输入你的评分(1-5):\n");scanf("%d",&y);}elseprintf(" 你的评分为%d.\n",y);return y;}

主函数

//主函数
int main()
{system("color 9");                              //屏幕颜色设定system("mode con: cols=90 lines=35");           //控制台大小 time_t  a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,end;     //用于记录所有普通用户到达时间 double  b1=0,b2=0,b3=0,b4=0,b5=0,b6=0,b7=0,b8=0,b9=0,b10=0,allsum=0,average=0,xi=0;double A[10]={0,0,0,0,0,0,0,0,0,0};             //装每个普通用户办理用时 int c,x,v=0,w=0;Initshuzu();                                    //初始化线性表 Initqueue();                                    //初始化队列double sum=0;while(1){  printf("\n*****************************欢迎光临漓院国际银行*****************************************\n");printf("\n                                                                                      \n");printf("                            1      顾客到达\n");printf("                            2      顾客离开\n");printf("                            3      查看业务办理\n");printf("                            4      查看排队情况\n");printf("                            5      系统查询\n");printf("                            6      退出\n\n");time();printf("\n                          提示:请按回车键进行下一步操作\n");printf("\n                                                                                      \n");printf("*****************************欢迎光临漓院国际银行*****************************************\n");printf("请输入:");scanf("%d",&c);switch(c){case 1:{system("cls");                        //清空控制台之前的内容 printf("\n************************************顾客到达界面******************************************\n\n");int k=0;int a; printf("请选择你的用户类型:VIP用户请按 1;\n                    普通卡用户请按 2.\n");printf("请输入:");scanf("%d",&a);if (a==1){  vip(a);getch();                          //此行用于避免程序闪退 } else{ v++;                              //普通卡顾客计数printf("尊敬的普通卡用户,你的业务号为%d.\n",v);daoda(v);if(v==1){a1=time(NULL);                //v=1的客户到达时间w++;                          //w为普通用户到达计数 system("pause");              //可以实现冻结屏幕,便于观察程序的执行结果} else if(v==2){a2=time(NULL);w++;system("pause");}else if(v==3){a3=time(NULL);w++;system("pause");}else if(v==4){a4=time(NULL);w++;system("pause");}else if(v==5){a5=time(NULL);w++;system("pause");}else if(v==6){a6=time(NULL);w++;system("pause");}else if(v==7){a7=time(NULL);w++;system("pause");}else if(v==8){a8=time(NULL);w++;system("pause");}else if(v==9){a9=time(NULL);w++;system("pause");}else if(v==10){a10=time(NULL);w++;system("pause");}else {printf("请稍候拿号,谢谢!");          //一共可以最多承载10为普通用户办理业务 system("pause");}}system("cls");                                //清除屏幕以显示内容 break;}case 2:{system("cls");printf("\n*************************************顾客离开界面*****************************************\n\n");printf("请输入离开顾客得编号:\n");scanf("%d",&x);likai(x);mygrade() ;w++;if(x=1){end=time(NULL);                           //记录结束时间 A[0]=difftime(end,a1);                    //计算相差时间 printf("                     您办理业务所用时间为 %0.2f 秒.\n",A[0]);}else if(x=2){end=time(NULL);A[1]=difftime(end,a2);printf("                     您办理业务所用时间为 %0.2f 秒.\n",A[1]);}else if(x=3){end=time(NULL);A[2]=difftime(end,a3);printf("                     您办理业务所用时间为 %0.2f 秒.\n",A[2]);}else if(x=4){end=time(NULL);A[3]=difftime(end,a4);printf("                     您办理业务所用时间为 %0.2f 秒.\n",A[3]);}else if(x=5){end=time(NULL);A[4]=difftime(end,a5);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[4]);}else if(x=6){end=time(NULL);A[5]=difftime(end,a6);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[5]);}else if(x=7){end=time(NULL);A[6]=difftime(end,a7);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[6]);}else if(x=8){end=time(NULL);A[7]=difftime(end,a8);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[7]);}else if(x=9){end=time(NULL);A[8]=difftime(end,a9);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[8]);}else if(x=10){end=time(NULL);A[9]=difftime(end,a10);printf("                    您办理业务所用时间为 %0.2f 秒.\n",A[9]);}allsum+=A[0];getch();system("cls");break;}case 3:{   system("cls");printf("\n***********************************业务查询界面*******************************************\n\n");printl();getch();system("cls");break;}case 4:{system("cls");printf("\n***********************************排队查询界面*******************************************\n\n");print2();getch();system("cls");break;}case 5:{   system("cls");printf("\n*************************************系统查询界面*****************************************\n\n");char cool[3];int i=0,k=0,l=0;printf("请输入管理员账号:");scanf("%d",&i);printf("请您输入五位密码:");scanf("%d",&l);if(i==000&&l==00000){average=allsum/w;printf("\n至今已有 %d 位普通用户,%d 位vip用户成功办理业务!",w,vip1);printf("\n普通用户业务办理总共用时 %0.2f秒,平均用时 %0.2f秒\n",allsum,average);}getch();system("cls");break;}return 0;getch();system("cls");case 6:return 0;getch();system("cls");default: printf("输入有误!请重新输入:\n");getch();system("cls");}}
}
​

【C/C++】银行排队系统相关推荐

  1. c 语言银行排队系统,C++实现银行排队系统

    #include #include #include int cnt=0; //当日客流量 int sum=0; //当日客户排队总时间 typedef struct pnode{ int numbe ...

  2. 银行排队系统的设计与实现(源代码)

    (该系统在DEV编译器中不出现问题,在VC6.0中,要注意这样子设置就可以了,在"工程"->"设置"->"C/C++"-> ...

  3. 数据结构大作业——银行排队系统

    数据结构大作业--银行排队系统 离散事件模拟--银行业务处理 题目分析 声明部分 辅助函数 初始化窗口节点 创建顾客节点 比较四个窗口的排队人数 输出离开顾客的信息 主要函数 完整的头文件代码 离散事 ...

  4. QT4.7下的UI图形界面设计用例——银行排队系统

    这里写自定义目录标题 QT4.7的UI界面设计功能 效果展示 文件机制 UI功能详述 信号与槽机制(非常重要) 添加新文件 顶部菜单栏设定 菜单界面与点击下拉栏选项后界面切换 弹窗显示 主界面与弹窗界 ...

  5. c语言编程银行排队系统,C语言_课程设计银行排队系统.doc

    C语言_课程设计银行排队系统 #include #include #include #include #include #define n 3 int vip1=0; int y,z; float s ...

  6. 用c语言银行队列系统,C语言学习之用队列实现银行排队系统

    队列操作的接口:http://blog..net/qlx846852708/article/details/43666927 数据结构C语言实现:http://blog..net/qlx8468527 ...

  7. 数据结构实验二(C语言):银行排队系统

    银行排队系统 [问题描述]假设银行只有2个窗口对外营业,顾客到银行办理业务,首先要取一个顺序号,然后排队等待叫号.被叫到号的顾客到柜台接受服务,服务完毕后离开.到了下班时间不再接收新来的顾客.顾客分为 ...

  8. python银行排队系统_【Python编程特训·连载30】市政务中心排队系统 答案发布

    请用你所掌握的Python语言完成"市政务中心排队系统" 难度系数:☆ ☆ ☆ 排队系统,又称叫号排队系统,是一种综合运用计算机.多媒体等设备对用户服务进行有效管理的一种按序进行服 ...

  9. 银行排队系统服务器端,手机客户端实现 - 银行叫号手机排队系统解决方案

    2.3.2 手机客户端实现 项目组实现了基于Android 平台的手机客户端,当前支持操作系统为Android 2.0 以上版本的手机.在实现中充分考虑了用户使用的方便性,需要用户输入的操作极少,大部 ...

  10. java银行排队系统_用GUI模拟银行排队系统

    要求: 和实际情况相似,您到银行办理业务,到了银行大厅首先是在电脑上刷卡(有的可能不用刷卡)取出一个纸条,上面有你的位置号还有你前面有多少人,在工作人员那里会有一个按钮,点击一下就会叫一个人到他那里办 ...

最新文章

  1. UWP AppBarButton Icon 图标样式集合
  2. ftp ssl java_FTP(四)实现FTP,SSL加密
  3. Sublime Text 插件-全栈开发收集
  4. Still,yet和already的用法
  5. 程序员如何创建自己的网站
  6. 玩转Python第三方库库tqdm
  7. android网络编程-socket基础
  8. 纵横网络靶场社区 工控
  9. Imagination和浙江大学信电学院签署合作协议,校企共创大学课程新篇章
  10. java处理word文档 替换文本 水印 页眉
  11. python趣味编程与精彩实例-python趣味编程100例(99个)
  12. 通信协议整理之 SPI 通信
  13. 想自己上线微信小程序一定要会代码?
  14. IDEA2018中直接查看和进入接口实现类的快捷键
  15. tomcat8 对于url进行严格校验的问题
  16. Java里,如何得到一个月有多少天???
  17. SimCSE详解,Simple Contrastive Learning of Sentence Embeddings
  18. 生物科技拿起生化朋克的剧本|AI的朋友二
  19. 零基础——java学习路线(下)
  20. android百度地图例子,Android使用百度地图的注意点

热门文章

  1. 点歌APP开发解决方案详解
  2. 计算机硬盘根目录是什么,根目录是什么(d盘根目录是什么意思)
  3. html css blockquote,3个Blockquote的css样式【css3实现】
  4. C/C++常用工具一览
  5. java用jaxb三步解析xml_三步解决JAXB生成XML包含CDATA问题
  6. [0CTF 2016]piapiapia
  7. 小米路由器3G刷入OpenWrt
  8. 重复测量方差分析步骤汇总
  9. 熔断器 java_SpringCloud之熔断器Hystrix的实现
  10. Multisim电路分析仿真-叠加原理