/*
* Copyright (c)2016,烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:项目3.cbp
* 作    者:王婧
* 完成日期:2016年12月29日
* 版 本 号:v1.0  * 问题描述:银行叫号机 (1)模拟银行开关门时间。(2)模拟最基础的叫号功能 * 输入描述:无
* 程序输出:测试数据
*/    

liqueue.p

#ifndef SQQUEUE_H_INCLUDED
#define SQQUEUE_H_INCLUDED
#include<time.h>
#include <stdio.h>
#include <malloc.h>
#define MaxSize 5
typedef int ElemType;
typedef struct TimeBank
{  int h;  int m;  int s;
} timeBank; //记录某一刻的时间
typedef struct qnode //数据节点
{  ElemType data;//名次ElemType data1;//业务类型struct qnode *next;
} QNode;
typedef struct //链队节点
{  QNode *front;  QNode *rear;
} LiQueue; void CloseBank();//银行已经下班的操作函数
void NoCloseBank();//银行未开门的操作函数
void InitQueue(LiQueue *&q);    //初始化链队
void DestroyQueue(LiQueue *&q);     //销毁链队
bool QueueEmpty(LiQueue *q);    //判断链队是否为空
int  QueueLength(LiQueue *q);    //返回队列中元素个数,也称队列长度
int EntertimeBank(char c[]);//判断开输入开关门时间是否合法
void enQueue(LiQueue *&q,ElemType e,ElemType a);   //进队
bool deQueue(LiQueue *&q,ElemType &e,ElemType &a);  //出队
timeBank GetTimeBank();//取系统当前的时间
#endif // SQQUEUE_H_INCLUDED  

liqueue.cpp

//链队基本运算函数
#include "liqueue.h"  void CloseBank()//银行已经下班的操作函数
{  printf("\n尊敬的客户你好!!\n银行已经下班,请您明天再来!!!谢谢光临!!!\n");
}
void NoCloseBank()//银行未开门的操作函数
{  printf("\n尊敬的客户,您好!银行还未开门,请您稍等片刻!!!\n");
}void InitQueue(LiQueue *&q)  //初始化链队
{  q=(LiQueue *)malloc(sizeof(LiQueue));  q->front=q->rear=NULL;
}  timeBank GetTimeBank()//取系统当前的时间
{  time_t timep;//取系统时间  struct tm *p;  time(&timep);  p=localtime(&timep); /*取得当地时间*/
//printf ("当前系统时间为:%d/%d/%d ", (1900+p->tm_year),( 1+p->tm_mon), p->tm_mday);
//printf("%d:%d:%d\n",p->tm_hour, p->tm_min, p->tm_sec);  timeBank t;//t是当前系统时间  t.h= p->tm_hour;  t.m= p->tm_min;  t.s= p->tm_sec;  return(t);
}void DestroyQueue(LiQueue *&q)  //销毁链队
{  QNode *p=q->front,*r;   //p指向队头数据节点  if (p!=NULL)            //释放数据节点占用空间  {  r=p->next;  while (r!=NULL)  {  free(p);  p=r;  r=p->next;  }  }  free(p);  free(q);                //释放链队节点占用空间
}  bool QueueEmpty(LiQueue *q)  //判断链队是否为空
{  return(q->rear==NULL);
}  int QueueLength(LiQueue *q)  //返回队列中数据元素个数
{  int n=0;  QNode *p=q->front;  while (p!=NULL)  {  n++;  p=p->next;  }  return(n);
}void enQueue(LiQueue *&q,ElemType e,ElemType a)  //入队
{  QNode *p;  p=(QNode *)malloc(sizeof(QNode));  p->data=e;p->data1=a;p->next=NULL;  if (q->rear==NULL)      //若链队为空,则新节点是队首节点又是队尾节点  q->front=q->rear=p;  else  {  q->rear->next=p;    //将*p节点链到队尾,并将rear指向它  q->rear=p;  }
}
bool deQueue(LiQueue *&q,ElemType &e,ElemType &a)   //出队
{  QNode *t;  if (q->rear==NULL)      //队列为空  return false;  t=q->front;             //t指向第一个数据节点  if (q->front==q->rear)  //队列中只有一个节点时  q->front=q->rear=NULL;  else                    //队列中有多个节点时  q->front=q->front->next;  e=t->data; a=t->data1;free(t);  return true;
}
int EntertimeBank(char c[])//判断输入的时间是否符合标准
{  int tab=1;  /****************************************/  if(c[8]!='\0')  tab=0;  if( !(c[2]==':'&&c[5]==':'))//判断输入的第三个字符和第六个字符是否为‘:’ tab=0;  if( !(c[0]>='0'&&c[0]<='2') )//小时第一位只能是0、1、2  tab=0;  if(c[0]=='2')  if(!(c[1]>='0'&&c[1]<'4') )//如果小时第一位是2,那么小时第二位只能是0到4之间,不包括4  tab=0;  if( c[0]=='0'&&c[0]=='1')  if(!(c[1]>='0'&&c[1]<='9'))//小时第一位是0、1,小时第二位可以是0-9 tab=0; if( !(c[3]>='0'&&c[3]<='5') )//分钟第一位只能是0-5  tab=0;  if( !(c[6]>='0'&&c[6]<='6') )//秒钟第一位可以是0-6  tab=0;  if( c[6]=='6')  if(!(c[7]=='0'||c[7]=='1') )//当秒钟第一位是6,则第二位是0、1  tab=0;  if( !( c[4]>='0'&&c[4]<='9') )//分钟第二位一定是0-9  tab=0;  if(!(c[7]>='0'&&c[7]<='9') ) //秒钟第二位一定是0-9  tab=0;  return tab;
}    

main.cpp

#include "iostream"
#include "windows.h"
#include <stdlib.h>
using namespace std;
#include "liqueue.h"
void tu()
{cout<<"1:叫号"<<endl;cout<<"2:窗口服务"<<endl;
}
int main()
{   timeBank open,close;//银行开关门的时间  timeBank time1,time2;  time1=GetTimeBank(); //取系统时间  printf("此时系统时间:%02d:%02d:%02d\n",time1.h,time1.m,time1.s);  /****************************************/  int tab1=1,tab2=1;//判断开关门时间输入是否合法1合法,0不合法  char c1[10],c2[10],c3[10],c4[10];//c1取开门时间字符串,c2关门时间字符串,c3选择操作字符窜,c4销号字符串(协助判断输入是否合法)  /****************************************/  printf("请设置银行开门时间:");  scanf("%s",c1);  tab1=EntertimeBank(c1);  printf("请设置银行关门时间:");  scanf("%s",c2);  tab2=EntertimeBank(c2);  while(tab1==0||tab2==0)  {  printf("请您细心的在英文状态下,输入标准的时间格式\n");  printf("请设置银行开门时间:");  scanf("%s",c1);  tab1=EntertimeBank(c1);  printf("请设置银行关门时间:");  scanf("%s",c2);  tab2=EntertimeBank(c2);  };  open.h=(c1[0]-'0')*10+(c1[1]-'0');  open.m=(c1[3]-'0')*10+(c1[4]-'0');  open.s=(c1[6]-'0')*10+(c1[7]-'0');  close.h=(c2[0]-'0')*10+(c2[1]-'0');  close.m=(c2[3]-'0')*10+(c2[4]-'0');  close.s=(c2[6]-'0')*10+(c2[7]-'0');  /****************************************/  printf("\n**********************************************\n");  if((time1.h<open.h)||(time1.h==open.h&&time1.m<open.m)||(time1.h==open.h&&time1.m==open.m&&time1.s<=open.s))//银行还未开门  NoCloseBank();  else if((time1.h>close.h)||(time1.h==close.h&&time1.m>close.m)||(time1.h==close.h&&time1.m==close.m&&time1.s>=close.s))  CloseBank(); else
{char *mima1="admin",mima[5];int n=0,i,t1=1,t2=1;//号码int t3;//业务类型int renshu=0;//普通用户前面排队人数int viprenshu=0;//vip用户前面排队人数int a[10]; for(i=0;i<10;i++){a[i]=0;}LiQueue *q;//vipInitQueue(q);LiQueue *p;//putongInitQueue(p);for(;;){   cout<<"请输入登录密码"<<endl;cin>>mima;if(strcmp(mima,mima1)==0){cout<<"密码输入正确正在进入系统"<<endl;for(i=0;i<10;i++){   Sleep(100);cout<<"■";}cout<<endl;break;}else{   cout<<"密码输入错误请重新输入"<<endl;continue;}}system("cls");cout<<"*         ^                                  ^           *"<<endl;cout<<"*****************欢迎您使用烟台大学银行*******************"<<endl;cout<<"*                                                        *"<<endl;cout<<"*                @                    @                  *"<<endl;cout<<"*                                                        *"<<endl;cout<<"*         *****             #         *****              *"<<endl;cout<<"*  ************             |         ************       *"<<endl;cout<<"*      ********          (--^--)      ********            *"<<endl;cout<<"*                                                        *"<<endl;cout<<"*                                                        *"<<endl;cout<<"**********************************************************"<<endl;cout<<"        ()                             ()             "<<endl;for(;;){   system("color 07");tu();cin>>i;switch(i){   t3=0;case 1://叫号system("cls");cout<<"1:vip用户业务办理"<<endl;   cout<<"2:普通用户业务办理"<<endl;                     cin>>n;                               switch(n)                   {                           case 1: system("cls");system("color 04");cout<<"尊敬的VIP用户请您选择业务类型"<<endl;cout<<"1:个人业务"<<endl;   cout<<"2:对公业务"<<endl;cin>>i;t3=i;//业务分类if(i==1){enQueue(q,t1,t3);//vip                           t1=t1++;cout<<"尊敬的VIP用户您的号码为:"<<t1-1<<"您即将办理个人业务"<<endl;cout<<"前面还有"<<viprenshu<<"个人在等待"<<endl;viprenshu++;}if(i==2){enQueue(q,t1,t3);//vip                          t1=t1++;cout<<"尊敬的VIP用户您的号码为:"<<t1-1<<"您即将办理对公业务"<<endl;cout<<"前面还有"<<viprenshu<<"个人在等待"<<endl;viprenshu++;}break;                     case 2: system("cls");cout<<"尊敬的用户请您选择业务类型"<<endl;cout<<"1:个人业务"<<endl;   cout<<"2:对公业务"<<endl;cin>>i;t3=i;if(i==1){enQueue(p,t2,t3);//putong                      t2=t2++;cout<<"尊敬的用户您的号码为:"<<t2-1<<"您即将办理个人业务"<<endl;cout<<"前面还有"<<renshu+viprenshu<<"个人在等待"<<endl;renshu++;}if(i==2){enQueue(p,t2,t3);//putong                         t2=t2++;cout<<"尊敬的用户您的号码为:"<<t2-1<<"您即将办理对公业务"<<endl;cout<<"前面还有"<<renshu+viprenshu<<"个人在等待"<<endl;renshu++;}break;   }break;case 2://窗口服务cout<<"1:完成业务"<<endl; cout<<"2:选取下一位客户"<<endl;cout<<"3:查看全部窗口是否正在办理业务"<<endl;cin>>n;switch(n)                   {                           case 1: //使某个窗口完成业务system("cls");cout<<"使第1号窗口完成业务"<<endl;cout<<"使第2号窗口完成业务"<<endl;cout<<"使第3号窗口完成业务"<<endl;cout<<"使第4号窗口完成业务"<<endl;cout<<"使第5号窗口完成业务"<<endl;cin>>i;a[i-1]=0;cout<<"第"<<i<<"号窗口业务完成"<<endl;break;case 2:    //选取下一客户    system("cls");for(i=0;i<10;i++){if(a[i]==0){if(!QueueEmpty(q)){deQueue(q,t1,t3);a[i]=t1;system("color 04");if(t3==1){                                cout<<"请第"<<t1<<"号VIP用户去第"<<i+1<<"号窗口办理个人业务"<<endl;}if(t3==2)cout<<"请第"<<t1<<"号VIP用户去第"<<i+1<<"号窗口办理对公业务"<<endl;viprenshu--;}else if(QueueEmpty(q)){system("color 00");deQueue(p,t2,t3);a[i]=t2;if(t3==1)cout<<"请第"<<t2<<"用户去第"<<i+1<<"号窗口办理个人业务"<<endl;if(t3==2)cout<<"请第"<<t2<<"用户去第"<<i+1<<"号窗口办理对公业务"<<endl;renshu--;}}break;case 3:for(i=0;i<5;i++){if(a[i]==0)cout<<"第"<<i+1<<"号窗口为空"<<endl;if(a[i]==1)cout<<"第"<<i+1<<"号窗口正在办理业务"<<endl;}Sleep(5000);//睡眠函数,睡眠5秒break;system("color 04");  }}system("cls");break;}                       }}return 0;
}

课程设计(银行叫号机系统)相关推荐

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

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

  2. 数据结构课程设计银行储蓄系统

    /** *版权所有(C)2017,panyanan * *文件名称:main.cpp *文件标识:无 *内容摘要:本文件的作用是调用算法库里面的函数,完成题目要求. *其它说明:无 *当前版本:V1. ...

  3. 银行账户管理系统c语言链表,课程设计银行储蓄管理系统Word版

    <课程设计银行储蓄管理系统Word版>由会员分享,可在线阅读,更多相关<课程设计银行储蓄管理系统Word版(22页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ...

  4. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  5. C语言课程设计:通讯录系统

    C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...

  6. java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统

    <Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...

  7. 课程设计-智能星座系统

    课程设计-智能星座系统 成果预览: #include<iostream> #include<stdlib.h> #include<stdio.h> #include ...

  8. C++课程设计-失物招领系统

    C++课程设计-失物招领系统 求点赞关注 功能描述 程序设计功能图 详细设计 拾物登记 流程图 代码 失物寻找 流程图 代码 程序运行界面 程序功能选择界面 功能运行界面 拾物登记功能 失物查找功能 ...

  9. c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)

    C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...

  10. 数据结构课程设计 ——考试报名系统

    数据结构课程设计 --考试报名系统 一.项目功能要求 完成对考生信息的建立,查找,插入,修改,删除等功能.其中考生信息包括准考证号,姓名,性别,年龄和报考类别等信息.项目在设计时应首先确定系统的数据结 ...

最新文章

  1. 一场稳定、高清、流畅的大型活动直播是怎么炼成的?
  2. 虚拟机系统的磁盘扩容妙招及案例
  3. C++程序安装卸载WDM驱动
  4. python用户注册(基于django)
  5. mysql gone away 测试_python测试开发django-58.MySQL server has gone away错误的解决办法
  6. 【APICloud系列|12】ios真机调试时如何添加新设备的udid?
  7. 我不知道的事——深克隆和浅克隆
  8. Kubernetes 是一个“数据库”吗?
  9. linux tar 命令使用
  10. 【2017-04-16】抽象类、接口、构造函数、重载和重写的区别、静态成员和方法
  11. android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
  12. VMware安装及使用详细教程
  13. 科目三远光灯怎么开图解?科三远光灯是往上还是往下
  14. 超好的赚钱方法 目前广告点击报酬最高的
  15. 智能AI短视频搬运剪辑小程序,可过原创检测
  16. 数字电路与逻辑电路芯片
  17. 深入分析小程序与H5的区别
  18. 深圳非全日制计算机专业院校,深圳非全日制研究生招考院校
  19. Jensen–Shannon divergence
  20. 计算机考研408每日一题 day76

热门文章

  1. 中小企业网络安全建设指引
  2. 广西建筑行业人才市场暴涨
  3. NvRam增加记录恢复出厂设置次数(下)
  4. 迅雷漫画下载工具II beta3 v1.2.3.204
  5. 计算机技术在通信应用文献,通信论文参考文献
  6. 在线作图丨差异分析——在线做Stamp分析
  7. 功能安全-26262-理论到实践-基础知识-基于可靠性理论的的SIL与基于系统理论的STAMP
  8. 惊呆了,我们的加密视频教学竟然可以轻易翻录和破解!!!
  9. AutoCAD二次开发1-环境配置
  10. 福建省2020年计算机学业水平考试时间,2020学业水平考试时间表