用c语音或c++实现银行叫号系统

如图所示,怎样写成这个代码呢,银行叫号系统是一生之敌,希望大伙帮帮忙

img

提供这篇实例,期望在你编写程序中提供一个基本的思路框架,链接: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上有很多相关的实现代码,可搜索作为参考。


img