ATM模拟系统

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

class Time
{
    int month;
    int day;
    int hour;
    int minute;
    public:
    Time(int m,int d,int h,int min):month(m),day(d),hour(h),minute(min){}
    Time()
    {
        month=1;
        day=1;
        hour=0;
        minute=0;
    }


friend   ostream&operator<<(ostream&output,Time&);
    void set(int m,int d,int h,int min)
    {
        month=m;
        day=d;
        hour=h;
        minute=min;
    }
    int getMonth()
    {
        return month;
    }
    int getDay()
    {
        return day;
    }
    int getHour()
    {
        return hour;
    }
    int geMinute()
    {
        return minute;
    }
    void display();
bool operator<(Time);
};
bool Time::operator<(Time t)
{
    if(month<t.month)
    return 1;
    else if(month==t.month)
    if(day<=t.day)
    return 1;
    return 0;

}
   ostream&operator<<(ostream&output,Time&t1)
  {
      output<<t1.month<<" "<<t1.day<<" "<<t1.hour<<" "<<t1.minute<<" ";

      return output;
  }
 void Time::display()
 {
     cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
 }

class Record
 {
     int no;
     Time date;
     string type;
     int jiner;
     double yue;
     public:
     Record(int id,Time t1,string lx,int jin,double yu)
     {
        no=id;
        date=t1;
         type=lx;
         jiner=jin;
         yue=yu;
     }
     Record()
     {
         no=0;
         Time t1(1,1,0,0);
         date=t1;
         jiner=0;
         yue=0;

}
void display()
{
    cout<<no<<" ";
    date.display();
    cout<<" ";
    cout<<type<<" "<<jiner<<" "<<yue<<endl;

}
friend ostream&operator<<(ostream&output,Record&);
void setRecord(int id,Time t1,string lx,int jin,double yu)
{
    no=id;
    date=t1;
    type=lx;
    jiner=jin;
    yue=yu;
}

int getNo()
{
    return no;

}
string getType()
{
    return type;
}
int getJin()
{
    return jiner;
}
double getYue()
{
    return yue;
}
Time getDate()
{
    return date;
}

 };
 ostream&operator<<(ostream&output,Record&r)
 {
     output<<r.no;
     output<<" ";
     output<<r.date;
     output<<r.type<<" ";
     output<<r.jiner<<" ";
     output<<r.yue<<endl;
     return output;
 }
class User
{
     int no;
    string name;
    string mima;
    double yue;
    Record r[200];
    int num;
    public:
    User(int id,string nam,string m,double yu):no(id),name(nam),mima(m),yue(yu)
    {
        num=0;
    }
    User():no(0)
    {
        num=0;
    }
    User(const User&u1):no(u1.no)
    {
      name=u1.name;
      mima=u1.mima;
      yue=u1.yue;
      num=u1.num;
      for(int i=1;i<=num;i++)
      r[i]=u1.r[i];
    }


    int getNo()
    {
        return no;
    }
    void setName(string nam)
    {
        name=nam;
    }
    string getName()
    {
        return name;
    }
    void setMima(string m)
    {mima=m;

    }
    string getMima()
    {
        return mima;
    }
    void setYu(double yu)
    {
        yue=yu;
    }
    double getYu()
    {
        return yue;
    }
    friend ostream&operator<<(ostream&output,User&);
void display()
{
    cout<<no<<" "<<name<<" "<<mima<<" "<<yue;
    if(num!=0)
    {cout<<endl;
        for(int i=1;i<=num;i++)
    r[i].display();}

}
void add(Record r);
void dispRecord(int i);
void dispAllRecord();
void queryByTime(Time t1,Time t2);
void queryByType(string type);

};
ostream&operator<<(ostream&output,User&u1)
{
    output<<u1.no<<" ";
    output<<u1.name<<" ";
    output<<u1.mima<<" ";
    output<<u1.yue<<" ";
    output<<endl;
    if(u1.num!=0)
    for(int i=1;i<=u1.num;i++)
    output<<u1.r[i];
    return output;
}
void User::add(Record r1)
{
    r[++num]=r1;
}
void User::dispRecord(int i)
{
    r[i].display();
}
void User::dispAllRecord()
{
    for(int i=1;i<=num;i++)
    r[i].display();
}
/*void User::queryByTime(Time t1,Time t2)
{for(int i=1;i<=num;i++)
{if(t1.getMonth()==t2.getMonth())
{
    if(r[i].getDate().getDay()>=t1.getDay()&&r[i].getDate().getDay()<=t2.getDay())
    r[i].display();
}

else if(r[i].getDate().getMonth()>t1.getMonth()&&r[i].getDate().getMonth()<t2.getMonth())
r[i].display();
else if(r[i].getDate().getMonth()==t1.getMonth()&&r[i].getDate().getDay()>=t1.getDay())
r[i].display();
else if(r[i].getDate().getMonth()==t2.getMonth()&&r[i].getDate().getDay()<=t2.getDay())
r[i].display();
}
}*/
void User::queryByTime(Time t1,Time t2)
{
    for(int i=1;i<=num;i++)
    if((t1<r[i].getDate())&&(r[i].getDate()<t2))
    r[i].display();
}

void User::queryByType(string type)
{
    for(int i=1;i<=num;i++)
    if(r[i].getType()==type)
    r[i].display();
}

class Client
{
    User usr;
    Time t;
    public:
Client(int id1);
Client(User u1)
{

    usr=u1;
    int m2,d2,h2,min2;
    cin>>m2>>d2>>h2>>min2;
    t=Time(m2,d2,h2,min2);

}
void withdraw();
void deposite();
void querybyTime();
void queryCq();
void queryQq();
void display();
};
Client::Client(int id1)
{
    string nam,mi;
    double yu;
     cin>>nam>>mi>>yu;
User u1(id1,nam,mi,yu);
usr=u1;
    int m1,d1,h1,min1;
    cin>>m1>>d1>>h1>>min1;
    t=Time(m1,d1,h1,min1);
}
void Client:: withdraw()
{
    int qk;
    cin>>qk;
    if(qk<=usr.getYu())
    {
    usr.setYu(usr.getYu()-qk);
    Record r1(usr.getNo(),t,"qq",qk,usr.getYu());
    usr.add(r1);
    }
    else
    cout<<"所取钱数超过账号余额"<<endl;
}
void Client::deposite()
{int cq;
cin>>cq;
usr.setYu(cq+usr.getYu());
Record r2(usr.getNo(),t,"cq",cq,usr.getYu());
usr.add(r2);
}
void Client::querybyTime()
{
    int m1,d1,h1,min1;
    cin>>m1>>d1>>h1>>min1;
    Time t1(m1,d1,h1,min1);
    int m2,d2,h2,min2;
    cin>>m2>>d2>>h2>>min2;
    Time t2(m2,d2,h2,min2);
    usr.queryByTime(t1,t2);
}
void Client::queryCq()
{

    usr.queryByType("cq");
}
void Client::queryQq()
{
    usr.queryByType("qq");
}
void Client::display()
{
    usr.display();

}

int main()
{freopen("in.dat","r",stdin);
 freopen("out.dat","w",stdout);
int id;
cin>>id;
Client uop1(id);
uop1.display();
uop1.deposite();

uop1.withdraw();
uop1.queryCq();
uop1.display();

 User u1(2,"wyy","321",2000);
 Client uop2(u1);
uop2.withdraw();
uop2.withdraw();
uop2.queryQq();
uop2.deposite();
uop2.display();
}



猜你喜欢

转载自blog.csdn.net/sdauguanweihong/article/details/80682591