课程设计(银行叫号机系统)
/*
* 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;
}
课程设计(银行叫号机系统)相关推荐
- c语言编程银行排队系统,C语言_课程设计银行排队系统.doc
C语言_课程设计银行排队系统 #include #include #include #include #include #define n 3 int vip1=0; int y,z; float s ...
- 数据结构课程设计银行储蓄系统
/** *版权所有(C)2017,panyanan * *文件名称:main.cpp *文件标识:无 *内容摘要:本文件的作用是调用算法库里面的函数,完成题目要求. *其它说明:无 *当前版本:V1. ...
- 银行账户管理系统c语言链表,课程设计银行储蓄管理系统Word版
<课程设计银行储蓄管理系统Word版>由会员分享,可在线阅读,更多相关<课程设计银行储蓄管理系统Word版(22页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文档 ...
- 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)
<C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...
- C语言课程设计:通讯录系统
C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...
- java学生选课系统课程设计报告_Java语言程序设计课程设计-学生选课系统
<Java语言程序设计课程设计-学生选课系统>由会员分享,可在线阅读,更多相关<Java语言程序设计课程设计-学生选课系统(23页珍藏版)>请在人人文库网上搜索. 1.10届 ...
- 课程设计-智能星座系统
课程设计-智能星座系统 成果预览: #include<iostream> #include<stdlib.h> #include<stdio.h> #include ...
- C++课程设计-失物招领系统
C++课程设计-失物招领系统 求点赞关注 功能描述 程序设计功能图 详细设计 拾物登记 流程图 代码 失物寻找 流程图 代码 程序运行界面 程序功能选择界面 功能运行界面 拾物登记功能 失物查找功能 ...
- c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)
C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...
- 数据结构课程设计 ——考试报名系统
数据结构课程设计 --考试报名系统 一.项目功能要求 完成对考生信息的建立,查找,插入,修改,删除等功能.其中考生信息包括准考证号,姓名,性别,年龄和报考类别等信息.项目在设计时应首先确定系统的数据结 ...
最新文章
- 一场稳定、高清、流畅的大型活动直播是怎么炼成的?
- 虚拟机系统的磁盘扩容妙招及案例
- C++程序安装卸载WDM驱动
- python用户注册(基于django)
- mysql gone away 测试_python测试开发django-58.MySQL server has gone away错误的解决办法
- 【APICloud系列|12】ios真机调试时如何添加新设备的udid?
- 我不知道的事——深克隆和浅克隆
- Kubernetes 是一个“数据库”吗?
- linux tar 命令使用
- 【2017-04-16】抽象类、接口、构造函数、重载和重写的区别、静态成员和方法
- android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
- VMware安装及使用详细教程
- 科目三远光灯怎么开图解?科三远光灯是往上还是往下
- 超好的赚钱方法 目前广告点击报酬最高的
- 智能AI短视频搬运剪辑小程序,可过原创检测
- 数字电路与逻辑电路芯片
- 深入分析小程序与H5的区别
- 深圳非全日制计算机专业院校,深圳非全日制研究生招考院校
- Jensen–Shannon divergence
- 计算机考研408每日一题 day76