银行业务模拟系统

设银行有四个服务窗口,一个等待队列, 每个窗口均可以办理存款、取款、挂失、还贷等业务,每种业务所需的服务时间不同,客户到达银行后,先到打号机上打号,号票上包括到达时间、编号和需要办理的业务,然后在银行内等候, 当任一服务窗口空闲时,处理等候客户中排在最前面的客户的业务。写一个上述银行业务的模拟系统,通过模拟方法求出客户在银行内逗留的平均时间和每个窗口办理的客户数及办理的每种业务数。

基本要求:每个客户到达银行的时间和需要办理的业务随机产生,输出一天客户在银行的平均逗留时间和每个窗口每天办理的客户数和每种业务数。

/*
大连民族大学
计算机科学与工程学院
软件工程
尹旭阳 版权所有,如需引用,望告知 
*/
#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
class Frame
{
    public:
        int hour;
        int minu_start;
        int minu_end = 0;
        //四个业务分别办理的数量 
        int ic1 = 0;      
        int ic2 = 0;
        int ic3 = 0;
        int ic4 = 0;
        Frame()
        {
            
        }
        Frame(int x)
        {
            hour = x;
        }
        void show()
        {
            printf("\t\t\t\t\t办理业务总数量:%d\n",ic1+ic2+ic3+ic4);
            printf("\t\t\t\t\t存款:%d\n",ic1);
            printf("\t\t\t\t\t取款:%d\n",ic2);
            printf("\t\t\t\t\t挂失:%d\n",ic3);
            printf("\t\t\t\t\t还贷:%d\n",ic4);
        }
};


class person
{
    public:
      int number;    //客户所获得的编码
      int business;   //客户所要办理的业务
      int hour;         
      int minute;      //客户的到达时间
      int hours;
      int minutes;     //客户的离开时间
                    
      int business_time;    
      int jud;             //这两个是在后面的判断里用到,可以看不懂
};


struct Node
{
    person data;                     //数据域 
    Node* next;                      //指针域   
};

//template<typename T>
class  LinkQueue
{
    public:
        LinkQueue();                 //构造函数
        ~LinkQueue();                //析构函数 
        void EnQueue(person Person);      //入队操作
        person DeQueue();            //出队操作
        int count = -1;               
    private:
        Node *front, *rear;          //队头和队尾指针 
        
};

//构造函数,只申请一个头结点 
LinkQueue::LinkQueue()
{
    Node *s = NULL;
    s = new Node;
    s->next = NULL;
    front = rear = s;
}

//析构函数 
LinkQueue::~LinkQueue()
{
    Node *p = front;
    while(front != NULL)
    {
        front = front->next;
        delete p;
        p = front;
    }

//入队操作
void LinkQueue::EnQueue(person Person)
{
    Node *s = NULL;
    s = new Node;
    s->data = Person;
    count++;
    s->next = NULL;
    rear->next = s;
    rear = s; 

//出队操作
person LinkQueue::DeQueue()
{
    person pe;
    Node *p = NULL;
    if(rear == front) throw "下溢"; 
    p = front->next;
    pe = p->data; 
    front->next = p->next;
    delete p;
    count--;
    return pe;

class enroll
{
    private:
        int m;
        int n;
        int flag;
    public:
        enroll(person p[],LinkQueue &q,int open_time,int close_time)
        {
            int yxy;        
            int i = 1;
            p[0].hour = open_time;
            p[0].minute = 0;
            m = open_time;
            n = close_time;
            int count2 = 0;
            srand((unsigned int)time(NULL));
            do
            {
                count2++;
                printf("\t\t\t\t第%d个客户来到银行\n",i);
                cout << "\t\t\t\t到达时间:" << endl;
                p[i].number = rand()%9000 + 1000;                   
                cout << "\t\t\t\t    小时:";
                do
                {
                    
                    int ret1 = rand()%(n - m + 1) + m;
                    if(ret1 < p[i-1].hour || ret1 - p[i-1].hour > 1)
                    {
                        flag = 0;
                    }
                    else if(count2 <= 4 && ret1 > p[i-1].hour)
                    {
                        flag = 0;
                    }
                    else
                    {
                        cout << ret1 << endl;
                        p[i].hour = ret1;
                        flag = 1;
                        if(ret1 > p[i-1].hour)
                        {
                            count2 = 0;
                        }
                    }
                }while(flag == 0);
                
                cout << "\t\t\t\t    分钟: ";
                do
                {
                    int ret2 = rand()%60 + 0;
                    if(p[i].hour == p[i-1].hour && ret2 < p[i-1].minute)
                    {
                        flag = 0;
                    }
                    else
                    {
                        cout << ret2 << endl;
                        p[i].minute = ret2;
                        flag = 1;
                    }
                }while(flag == 0);
                
                cout << "\t\t\t\t您的编号为:" << p[i].number << endl;
                cout << "\t\t\t\t请选择业务类型: 1.存款  2.取款  3.挂失  4.还贷" << endl;
                int ret3 = rand()%4 + 1;
                cout << "\t\t\t\t" << ret3 << endl;
                p[i].business = ret3;
                q.EnQueue(p[i]);
                cout << "\t\t\t\t选择成功" << endl;
                   cout << endl;
                cout << endl;
                if(p[i].business == 1)
                {
                    p[i].business_time = 20;
                }
                else if(p[i].business == 2)
                {
                    p[i].business_time = 25;
                }
                else if(p[i].business == 3)
                {
                    p[i].business_time = 30;
                }
                else
                {
                    p[i].business_time = 35;
                }
                
                if(p[i].minute + p[i].business_time >= 60)
                {
                    p[i].jud = p[i].hour + 1;
                }
                else
                {
                    p[i].jud = p[i].hour;
                }
                
                if(p[i].jud >= close_time)
                {
                    yxy = 1;
                }
                else
                {
                    yxy = 0;
                }
            
                
                Sleep(500);
                i++;
                
               }while(yxy == 0);
               
        }
};
class coti       //每个窗口都有人时,进入该函数 
{
    public:
        int co;
    coti(Frame &F1,Frame &F2,Frame &F3,Frame &F4,person &m,int dep_time,int wd_time,int rtlo_time,int repay_time)
    {
        Frame min;
        min.hour = 24;
        min.minu_end = 59;
        min.minu_start = 59;
        if((F1.hour < min.hour)||(F1.hour == min.hour && F1.minu_end < min.minu_end))
        {
            min = F1;
            co = 1;
            
        }
        if((F2.hour < min.hour)||(F2.hour == min.hour && F2.minu_end < min.minu_end))
        {
            min = F2;
            co = 2;
        }
        if((F3.hour < min.hour)||(F3.hour == min.hour && F3.minu_end < min.minu_end))
        {
            min = F3;
            co = 3;
        }
        if((F4.hour < min.hour)||(F4.hour == min.hour && F4.minu_end < min.minu_end))
        {
            min = F4;
            co = 4;
        }
        switch(co)
        {
            case 1:
                F1.minu_start = F1.minu_end;
                if(F1.minu_start >= 60)
                {
                    F1.hour++;
                    F1.minu_start = F1.minu_start - 60;
                }
                switch(m.business)
                {
                case 1:
                    F1.minu_end = F1.minu_start + dep_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic1++;
                    m.hours = F1.hour;
                    m.minutes = F1.minu_end;
                    break;
                case 2:
                    F1.minu_end = F1.minu_start + wd_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic2++;
                    m.hours = F1.hour;
                    m.minutes = F1.minu_end;
                    break;
                case 3:
                    F1.minu_end = F1.minu_start + rtlo_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic3++;
                    m.hours = F1.hour;
                    m.minutes = F1.minu_end;
                    break;
                case 4:
                    F1.minu_end = F1.minu_start + repay_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic4++;
                    m.hours = F1.hour;
                    m.minutes = F1.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
                }
                break;
            case 2:
                F2.minu_start = F2.minu_end;
                if(F2.minu_start >= 60)
                {
                    F2.hour++;
                    F2.minu_start = F2.minu_start - 60;
                }
                switch(m.business)
                {
                case 1:
                    F2.minu_end = F2.minu_start + dep_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic1++;
                    m.hours = F2.hour;
                    m.minutes = F2.minu_end;
                    break;
                case 2:
                    F2.minu_end = F2.minu_start + wd_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic2++;
                    m.hours = F2.hour;
                    m.minutes = F2.minu_end;
                    break;
                case 3:
                    F2.minu_end = F2.minu_start + rtlo_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic3++;
                    m.hours = F2.hour;
                    m.minutes = F2.minu_end;
                    break;
                case 4:
                    F2.minu_end = F2.minu_start + repay_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic4++;
                    m.hours = F2.hour;
                    m.minutes = F2.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
                }
                break;
            case 3:        
                F3.minu_start = F3.minu_end;
                if(F3.minu_start >= 60)
                {
                    F3.hour++;
                    F3.minu_start = F3.minu_start - 60;
                }
                switch(m.business)
                {
                case 1:
                    F3.minu_end = F3.minu_start + dep_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic1++;
                    m.hours = F3.hour;
                    m.minutes = F3.minu_end;
                    break;
                case 2:
                    F3.minu_end = F3.minu_start + wd_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic2++;
                    m.hours = F3.hour;
                    m.minutes = F3.minu_end;
                    break;
                case 3:
                    F3.minu_end = F3.minu_start + rtlo_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic3++;
                    m.hours = F3.hour;
                    m.minutes = F3.minu_end;
                    break;
                case 4:
                    F3.minu_end = F3.minu_start + repay_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic4++;
                    m.hours = F3.hour;
                    m.minutes = F3.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
                }
                break;
            case 4:
                F4.minu_start = F4.minu_end;
                if(F4.minu_start >= 60)
                {
                    F4.hour++;
                    F4.minu_start = F4.minu_start - 60;
                }
                switch(m.business)
                {
                case 1:
                    F4.minu_end = F4.minu_start + dep_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic1++;
                    m.hours = F4.hour;
                    m.minutes = F4.minu_end;
                    break;
                case 2:
                    F4.minu_end = F4.minu_start + wd_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic2++;
                    m.hours = F4.hour;
                    m.minutes = F4.minu_end;
                    break;
                case 3:
                    F4.minu_end = F4.minu_start + rtlo_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic3++;
                    m.hours = F4.hour;
                    m.minutes = F4.minu_end;
                    break;
                case 4:
                    F4.minu_end = F4.minu_start + repay_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic4++;
                    m.hours = F4.hour;
                    m.minutes = F4.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
                }
                break;
            default:
                break;
        }
    }
};

/*这里讲一下下面两个类的主要思路:首先出队一个客户,用该客户的到达时间依次和四个窗口的结束时间(初始化为银行的工作时间)作比较,如果比他晚,则进入该窗口,比较停止,否则继续比较。如果四个窗口都在工作中,则选出四个窗口中结束时间最早的窗口,将该窗口的结束时间重置为原本的结束时间加上该客户办理业务的时间(注:每个窗口给客户办理业务之后,客户的离开时间即可确定,同时,该窗口的该次结束时间也可重置)*/

class cotis      
{
    private:
        int flag = 0;
        double sum_time = 0;
    public:
    cotis(LinkQueue &Q,Frame &F1,Frame &F2,Frame &F3,Frame &F4,int dep_time,int wd_time,int rtlo_time,int repay_time)
    {
      while(Q.count != -1)
      {   
        person ps;
        flag++;
        ps = Q.DeQueue();
        if((ps.hour > F1.hour)||(ps.hour == F1.hour && ps.minute > F1.minu_end))
        {
            switch(ps.business)
            {
                case 1:
                    F1.hour = ps.hour;
                    F1.minu_start = ps.minute;
                    F1.minu_end = F1.minu_start + dep_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic1++;
                    ps.hours = F1.hour;
                    ps.minutes = F1.minu_end;
                    break;
                case 2:
                    F1.hour = ps.hour;
                    F1.minu_start = ps.minute;
                    F1.minu_end = F1.minu_start + wd_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic2++;
                    ps.hours = F1.hour;
                    ps.minutes = F1.minu_end;
                    break;
                case 3:
                    F1.hour = ps.hour;
                    F1.minu_start = ps.minute;
                    F1.minu_end = F1.minu_start + rtlo_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic3++;
                    ps.hours = F1.hour;
                    ps.minutes = F1.minu_end;
                    break;
                case 4:
                    F1.hour = ps.hour;
                    F1.minu_start = ps.minute;
                    F1.minu_end = F1.minu_start + repay_time;
                    if(F1.minu_end >= 60)
                    {
                        F1.hour++;
                        F1.minu_end = F1.minu_end - 60;
                    } 
                    F1.ic4++;
                    ps.hours = F1.hour;
                    ps.minutes = F1.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
            }
            
        }
        else if((ps.hour > F2.hour)||(ps.hour == F2.hour && ps.minute > F2.minu_end))
        {
            switch(ps.business)
            {
                case 1:
                    F2.hour = ps.hour;
                    F2.minu_start = ps.minute;
                    F2.minu_end = F2.minu_start + dep_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic1++;
                    ps.hours = F2.hour;
                    ps.minutes = F2.minu_end;
                    break;
                case 2:
                    F2.hour = ps.hour;
                    F2.minu_start = ps.minute;
                    F2.minu_end = F2.minu_start + wd_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic2++;
                    ps.hours = F2.hour;
                    ps.minutes = F2.minu_end;
                    break;
                case 3:
                    F2.hour = ps.hour;
                    F2.minu_start = ps.minute;
                    F2.minu_end = F2.minu_start + rtlo_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic3++;
                    ps.hours = F2.hour;
                    ps.minutes = F2.minu_end;
                    break;
                case 4:
                    F2.hour = ps.hour;
                    F2.minu_start = ps.minute;
                    F2.minu_end = F2.minu_start + repay_time;
                    if(F2.minu_end >= 60)
                    {
                        F2.hour++;
                        F2.minu_end = F2.minu_end - 60;
                    } 
                    F2.ic4++;
                    ps.hours = F2.hour;
                    ps.minutes = F2.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
            }        
        }
        else if((ps.hour > F3.hour)||(ps.hour == F3.hour && ps.minute > F3.minu_end))
        {
            switch(ps.business)
            {
                case 1:
                    F3.hour = ps.hour;
                    F3.minu_start = ps.minute;
                    F3.minu_end = F3.minu_start + dep_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic1++;
                    ps.hours = F3.hour;
                    ps.minutes = F3.minu_end;
                    continue;
                case 2:
                    F3.hour = ps.hour;
                    F3.minu_start = ps.minute;
                    F3.minu_end = F3.minu_start + wd_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic2++;
                    ps.hours = F3.hour;
                    ps.minutes = F3.minu_end;
                    continue;
                case 3:
                    F3.hour = ps.hour;
                    F3.minu_start = ps.minute;
                    F3.minu_end = F3.minu_start + rtlo_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    F3.ic3++;
                    ps.hours = F3.hour;
                    ps.minutes = F3.minu_end;
                    break;
                case 4:
                    F3.hour = ps.hour;
                    F3.minu_start = ps.minute;
                    F3.minu_end = F3.minu_start + repay_time;
                    if(F3.minu_end >= 60)
                    {
                        F3.hour++;
                        F3.minu_end = F3.minu_end - 60;
                    } 
                    ps.hours = F3.hour;
                    ps.minutes = F3.minu_end;
                    F3.ic4++;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
            }
        }
        else if((ps.hour > F4.hour)||(ps.hour == F4.hour && ps.minute > F4.minu_end))
        {
            switch(ps.business)
            {
                case 1:
                    F4.hour = ps.hour;
                    F4.minu_start = ps.minute;
                    F4.minu_end = F4.minu_start + dep_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic1++;
                    ps.hours = F4.hour;
                    ps.minutes = F4.minu_end;
                    break;
                case 2:
                    F4.hour = ps.hour;
                    F4.minu_start = ps.minute;
                    F4.minu_end = F4.minu_start + wd_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic2++;
                    ps.hours = F4.hour;
                    ps.minutes = F4.minu_end;
                    break;
                case 3:
                    F4.hour = ps.hour;
                    F4.minu_start = ps.minute;
                    F4.minu_end = F4.minu_start + rtlo_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic3++;
                    ps.hours = F4.hour;
                    ps.minutes = F4.minu_end;
                    break;
                case 4:
                    F4.hour = ps.hour;
                    F4.minu_start = ps.minute;
                    F4.minu_end = F4.minu_start + repay_time;
                    if(F4.minu_end >= 60)
                    {
                        F4.hour++;
                        F4.minu_end = F4.minu_end - 60;
                    } 
                    F4.ic4++;
                    ps.hours = F4.hour;
                    ps.minutes = F4.minu_end;
                    break;
                default:
                    cout << "错误" << endl;
                    break;
            }    
        }
        else
        {
            coti ct(F1,F2,F3,F4,ps,dep_time,wd_time,rtlo_time,repay_time); 
        }
        
        if(ps.hour == ps.hours)
        {
            sum_time = sum_time + (ps.minutes - ps.minute);
        }
        else if(ps.hours > ps.hour)
        {
            sum_time = sum_time + ((ps.hours - ps.hour) * 60 + (ps.minutes - ps.minute));
        }
        else
        {
            cout << "发生了什么" << endl; 
        }
      }
    }
    int getFlag()
    {
        return this->flag;
    }
    double getSum()
    {
        return this->sum_time;
    }
};

class display
{
public:
    display(int &open_time,int &close_time)
    {
        printf("\n");
        cout << "\t\t\t\t     请您设置银行的上班时间      " << endl;
        printf( "\t\t\t\t     ");
         int flag;
         do
         {
              cin >> open_time;
            if(open_time <= 6 || open_time >= 10)
            {
                 cout << "\t    您在开玩笑么,请重新输入:";
                flag = 0;
            }
            else
            {
                 flag = 1;
            }
        }while(flag == 0);
       cout << "\t\t\t\t     请您设置银行的下班时间      " << endl;
       printf( "\t\t\t\t     ");
       do
       {
            cin >> close_time;
            if(close_time <= 0 || close_time >= 24)
            {
                 cout << "\t    您在开玩笑么,请重新输入:";
                flag = 0;
            }
            else if(close_time <= open_time)
            {
                cout << "\t    您在开玩笑么,请重新输入:";
                flag = 0;
            }
            else
            {
                flag = 1;
            }
       }while(flag == 0);
       cout << "\t\t\t\t          设置成功" << endl;
    }
    display(Frame &F1,Frame &F2,Frame &F3,Frame &F4)
    {
        printf("\t\t\t\t\*************************\n");
        printf("\t\t\t\t第一个窗口:\n");
        F1.show(); 
        printf("\t\t\t\t第二个窗口:\n");
        F2.show();
        printf("\t\t\t\t第三个窗口:\n");
        F3.show();
        printf("\t\t\t\t第四个窗口:\n");
        F4.show();
        printf("\n");
     }
     display()
     {
         printf("\t\t\t\t----------------------------------\n");
        printf( "\t\t\t\t|                                |\n");
        cout << "\t\t\t\t|    这是一个银行业务模拟系统    |" << endl;
        printf( "\t\t\t\t|                                |\n");
        printf("\t\t\t\t----------------------------------\n");
        Sleep(1000);
        printf( "\t\t\t\t|                                |\n");
        printf( "\t\t\t\t|       欢迎来到中国银行         |\n");
        printf( "\t\t\t\t|                                |\n");
        printf( "\t\t\t\t---------------------------------\n");
    }
};
int main(int argc, char** argv) {
    const int MaxSize = 100;
    double average_time;
    int open_time;
    int close_time;
    const int dep_time = 20;     //存款花费的时间
    const int wd_time = 25;      //取款花费的时间
       const int rtlo_time = 30;    //挂失花费的时间 
    const int repay_time = 35;   //还贷花费的时间 
    LinkQueue Q;
    display();
    display dis(open_time,close_time);
    Sleep(2000);
    system("cls");
    person pers[MaxSize];
    enroll e(pers,Q,open_time,close_time);
    Frame F1(open_time),F2(open_time),F3(open_time),F4(open_time);
    cotis cts(Q,F1,F2,F3,F4,dep_time,wd_time,rtlo_time,repay_time);
    average_time = cts.getSum()/cts.getFlag();
    Sleep(2000);
    display disp(F1,F2,F3,F4);
    cout << "\t\t\t\t平均逗留时间:" << average_time << "分钟" <<endl;
    
    return 0;
}

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
银行业务模拟系统是一个模拟银行业务操作的软件系统,它可以模拟客户开户、存款、取款、转账等各种银行操作。下面是一个简单的银行业务模拟系统的代码示例: ```python class Bank: def __init__(self, name): self.name = name self.customers = [] def add_customer(self, customer): self.customers.append(customer) def get_customer(self, customer_id): for customer in self.customers: if customer.id == customer_id: return customer return None class Customer: def __init__(self, id, name): self.id = id self.name = name self.accounts = [] def add_account(self, account): self.accounts.append(account) def get_account(self, account_number): for account in self.accounts: if account.number == account_number: return account return None class Account: def __init__(self, number, balance=0): self.number = number self.balance = balance def deposit(self, amount): self.balance += amount def withdraw(self, amount): if self.balance >= amount: self.balance -= amount else: print("Insufficient balance") def transfer(self, amount, target_account): if self.balance >= amount: self.balance -= amount target_account.deposit(amount) else: print("Insufficient balance") # 创建银行对象 bank = Bank("ABC Bank") # 创建客户对象 customer1 = Customer(1, "John") customer2 = Customer(2, "Alice") # 添加客户到银行 bank.add_customer(customer1) bank.add_customer(customer2) # 创建账户对象 account1 = Account("123456", 1000) account2 = Account("654321", 2000) # 添加账户到客户 customer1.add_account(account1) customer2.add_account(account2) # 进行银行业务操作 account1.deposit(500) account1.withdraw(200) account1.transfer(300, account2) # 打印账户余额 print(account1.balance) print(account2.balance) ``` 以上代码是一个简单的银行业务模拟系统的示例,包含了银行、客户和账户三个类,可以进行开户、存款、取款、转账等操作。你可以根据实际需求进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yxy_ice

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值