银行挂号,看到排队叫号机,自不量力模拟实现以下。
#include <iostream>
using namespace std;
#include <list>
list<int> ListInt;
void putIn(int a)
{
ListInt.push_back(a);
}
void getOut()
{
if (ListInt.size()>0)
{
cout<<ListInt.front()<<endl;
ListInt.pop_front();
}
else
{
cout<<"no person here!"<<endl;
}
}
int main()
{
cout<<"1--->11111:output(柜台1):"<<endl;
cout<<"2--->22222:output(柜台2):"<<endl;
cout<<"3--->putInt(排队领号):"<<endl;
int i;
int j = 0;
while (cin>>i)
{
switch (i)
{
case 1:
cout<<"11111: ";
getOut();
break;
case 2:
cout<<"22222: ";
getOut();
break;
case 3:
++j;
putIn(j);
cout<<"您的号是:"<<j<<endl;
cout<<"前面有:"<<ListInt.size()-1<<"个人"<<endl;
break;
default:
break;
}
}
return 0;
}
简单的链表实现。
排队的号push_back到链表尾,柜台端读取一个号,从链表中把这个号删了。
人家实际的应用中,应该是多线程互斥,需要解决多个柜台端同时叫号的问题。
应该也用到了数据库,银行什么东西应该都有备份的,所以他们做的应该是把号存到
数据库中,柜台端从数据库里面读数据。
这是局域网实现的,我想用一下socket应该就够了吧。
还是菜鸟,知识浅薄,妄自揣测,没想到的地方还请高手指点一下……
