如图所示,怎样写成这个代码呢,银行叫号系统是一生之敌,希望大伙帮帮忙
提供这篇实例,期望在你编写程序中提供一个基本的思路框架,链接:https://blog.csdn.net/bigplane83/article/details/83692495
作业题吧?这种问题有一个统一的思路就是先做问题分解,然后定义好数据结构,分别实现功能,最后系统整合调试,以此问题为例:可以划分为:1. 窗口系统类: 定义窗口号,名称,当前排队人数,最大排队人数等类变量,对应方法有获取窗口当前排队人数,新增排队人,减少排队人,停止排队等。 2.客户类,类变量有:客户名称,进入时间,离开时间,需要进入排队的窗口号等,对应的方法有:进入银行,离开银行,进入窗口队列等。 类实例化后,分别实现对应功能,你的系统就基本ok了,毕竟是作业,对可靠性、可维护性没有太多要求的
C++: 实现一个简易的银行排号叫号系统
https://blog.csdn.net/yulong0106/article/details/38983993
//设置2个容器,一个放普通,一个放置vip
//删除,string取出,删除“vip ”比较数字;call的VIP优先级;delete的最大值删除之后取号还为最大值;
//delete 23a是错误的输入。(没有判断)删掉“delete ”,判断后面的是不是重数字12a;
///
//
#include<iostream>
#include<string>
#include<vector>
using namespace std;
static int n=0;
static vector<int> v1;
static vector<string> v2;
//删除"delete "和"countN ",取出后面数字
int shuzi(string s,int sn)
{
int xn=0;
int i;
for(i=sn;i<s.size();i++)
if(s[i]>='0'&&s[i]<='9')
xn=10*xn+(s[i]-'0');
else
{
xn=0;
break;
}
return xn;
}
//取号;
void get(string s)
{
n++;
string s0;
if(s=="get")
{
cout<<n<<endl;
v1.push_back(n);
}
else
{
cout<<"vip "<<n<<endl;
s0=s0+"vip "+char(n+'0');
//cout<<s0<<endl;
v2.push_back(s0);
}
}
//叫号;
void call(string s)
{
vector<int>::iterator iter1=v1.begin();
vector<string>::iterator iter2=v2.begin();
if(n==0)
cout<<"error"<<endl;
else
if(!v2.empty())
{
cout<<*iter2<<endl;
v2.erase(iter2);
}
else
if(!v1.empty())
{
cout<<*iter1<<endl;
v1.erase(iter1);
}
else
cout<<"error"<<endl;
}
//删除号码;
void delet(string s)
{
int deln=shuzi(s,7);
//cout<<deln<<endl;
vector<int>::iterator iter1=v1.begin();
vector<string>::iterator iter2=v2.begin();
vector<int>::iterator iter3=v1.end();
vector<string>::iterator iter4=v2.end();
//注意把for循环提前,这样就不会出错;
for(vector<int>::iterator iter1=v1.begin();iter1!=v1.end();iter1++)
if(*iter1==deln)
iter3=iter1;
for(vector<string>::iterator iter2=v2.begin();iter2!=v2.end();iter2++)
if(shuzi(*iter2,4)==deln)
iter4=iter2;
if(deln>n)
cout<<"error"<<endl;
else
if(deln==n)
{
iter1=v1.end()-1;
iter2=v2.end()-1;
if(*iter1==n)
{
cout<<*iter1<<endl;
v1.erase(iter1);
}
else
{
cout<<*iter2<<endl;
v2.erase(iter2);
}
n--;
}
else
if(iter3!=v1.end())
{
cout<<*iter3<<endl;
v1.erase(iter3);
}
else
if(iter4!=v2.end())
{
cout<<*iter4<<endl;
v2.erase(iter4);
}
else
cout<<"111111111error"<<endl;
}
//获取当前排队总人数
void count(string s)
{
int count=v1.size()+v2.size();
cout<<count<<endl;
}
//获取在某个号码之前排队的总人数
void countN(string s)
{
int coun=shuzi(s,7);
//cout<<coun<<endl;
int k=0;
vector<int>::iterator iter1=v1.begin();
vector<string>::iterator iter2=v2.begin();
for(;iter1!=v1.end();iter1++)
if(*iter1<coun)
k++;
for(;iter2!=v2.end();iter2++)
if(shuzi(*iter2,4)<coun)
k++;
cout<<k<<endl;
}
//重值排号机
void reset(string s)
{
n=0;
}
//退出排号机void quit(string s)
int main()
{
string s,s1;
//int deln,coun;
while(getline(cin,s))
{
if(s=="get"||s=="get vip")
get(s);
else
if(s=="reset")
reset(s);
else
if(s=="call")
call(s);
else
if(s=="count")
count(s);
else
if(s=="quit")
break;
else
{
s1=s.substr(0,7);
//deln=shuzi(s,7);//不一定是一位数字,“delete ”,取后面
if(shuzi(s,7)==0||shuzi(s,7)>100000) //shuzi(s,7)这样调用时可以的
cout<<"error"<<endl;
else
if(s1=="delete ")
delet(s);
else
if(s1=="countN ")
countN(s);
else
cout<<"error"<<endl;
}
}
return 0;
}
价格太低,任务量太大
CSDN上有很多相关的实现代码,可搜索作为参考。