求大神帮助修改下!怎么实现窗口的动态显示!
银行业务活动的模拟任务:假设某银行有4个窗口对外接待客户,从早晨银行开门起不断有客户进入银行,由于每个窗口在某个时刻只能接待一个客户。因此在客户人数众多时需要在每个窗口前顺次排队,对于刚进入银行的客户。如果某个窗口的业务员正空闲,则可上前输业务。反之,若个窗口均有客户所占,他便会排在为数最少的队伍后面。编制一个程序模拟银行的这种业务活动并计算一天中客户在银行的平均逗留时间。
功能要求:
1).实现数据的输入;
2).各个窗口数据的访问和输出;
3)当前窗口的人员分布情况动态显示。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计。请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。
我的程序基本上就是用随机数写的。怎么实现(3)的功能?
#include<iostream>
#include<stdlib.h>
#include<windows.h>
using namespace std;
const int maxsize=1000;
class seqqueue
{
public:
char queue[maxsize];//将队列中的元素定义为数组型
int front; //队头指针
int rear; //队尾指针
int len;
void iniqueue(); //设置空队列
void enqueue(char x); //将x插入到队尾中,进队
void dlqueue(); //将队列的队头元素删除,退队
char gethead(); //取队头元素的值
int empty(); //判队空
};
void seqqueue::iniqueue() //设置空队列
{
front=rear=maxsize-1;
}
void seqqueue::enqueue(char x) //将x插入到队尾中,进队
{
if((rear+1)%maxsize==front)
cout<<"overflow"<<endl;
else
{
rear=(rear+1)%maxsize;
queue[rear]=x;
}
}
void seqqueue::dlqueue() //将队列的队头元素删除,退队
{
if(rear==front)
cout<<"underflow"<<endl;
else
front=(front+1)%maxsize;
}
char seqqueue::gethead() //取队头元素的值
{
if(front==rear)
{
cout<<"underflow"<<endl;
return NULL;
}
else
return queue[(front+1)%maxsize];
}
int seqqueue::empty() //判队空
{
if(front==rear)
return 1;
else
return 0;
}
int prepare()
{
int i,x,n=1,m=0;
int min;
seqqueue *p=new seqqueue[4];
for(i=0;i<4;i++)
p[i].iniqueue(); //四个窗口的初始化
for(i=0;i<4;i++) //随机产生四个窗口排队人数
{
p[i].len=1+rand()%10;
m+=p[i].len;
}
for(;;)
{
cout<<"***********************************"<<endl;
cout<<"***********************************"<<endl;
cout<<"***********************************"<<endl;
cout<<"*********银行业务模拟系统**********"<<endl;
cout<<"****** 【1】取号 *****"<<endl;
cout<<"****** 【2】窗口查询 *****"<<endl;
cout<<"****** 【3】总窗口查询 *****"<<endl;
cout<<"****** 【4】客户平均逗留时间*****"<<endl;
cout<<"****** 【5】退出系统 *****"<<endl;
cout<<"***********************************"<<endl;
cout<<"***********************************"<<endl;
cout<<"***********************************"<<endl;
cout<<endl;
cout<<"请选择:"<<endl;
cin>>x;
switch(x)
{
case 1:
{
system("cls");
for(i=0;i<4;i++) //随机产生四个窗口排队人数
{
p[i].len=1+rand()%10;
m+=p[i].len;
}
cout<<"亲,您是第"<<m+1<<"位顾客哦!"<<endl;
cout<<endl;
cout<<"3秒后,返回主菜单……"<<endl;
Sleep(3000);
break;
}
case 2:
{
system("cls");
int m;
cout<<"请输入您要查询的窗口号(1-4):"<<endl;
cin>>m;
while(m<1||m>4)
{
cout<<"窗口输入错误,请重新输入:";
cin>>m;
}
cout<<m<<"号窗口有"<<p[m-1].len<<"位顾客。"<<endl;
cout<<endl;
cout<<"5秒后,返回主菜单……"<<endl;
Sleep(5000);
cout<<endl;
break;
}
case 3:
{
system("cls");
for(i=0;i<4;i++) //计算最少人数
{
min=p[0].len;
for(i=1;i!=4;i++)
{
min=(min<p[i].len)?min:p[i].len;
}
}
for(i=0;i<4;i++) //计算最少人数的窗口 i+1
{
if(p[i].len==min)
{
i=i++;
break;
}
}
cout<<"1号窗口有"<<p[0].len<<"位顾客。"<<endl;
cout<<"2号窗口有"<<p[1].len<<"位顾客。"<<endl;
cout<<"3号窗口有"<<p[2].len<<"位顾客。"<<endl;
cout<<"4号窗口有"<<p[3].len<<"位顾客。"<<endl;
cout<<"所以,亲,你可以排在"<<i<<"号窗口哦!"<<endl;
cout<<"预计您只要稍等"<<min*(1+rand()%5)<<"分钟,就到您了!"<<endl;
cout<<endl;
cout<<"5秒后,返回主菜单……"<<endl;
cout<<endl;
Sleep(5000);
break;
}
case 4:
{
system("cls");
int p,q;
p=100+rand()%200;
q=1+rand()%15;
cout<<"银行大概一天办理业务的客户数:";
cout<<p<<"人"<<endl;
cout<<"每个客户平均逗留的时间:";
cout<<q<<"分钟"<<endl;
cout<<endl;
break;
}
case 5:
{
return 0;
}
}
}
}
void main()
{
prepare();
}