ATM机模拟STL版

#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<map>
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;
    }

friend bool operator<(Time t1,Time t2);

};
bool operator<(Time t1,Time t2)
{
    if(t1.month<t2.month)
    return 1;
    else if(t1.month==t2.month)
    if(t1.day<=t2.day)
    return 1;
    return 0;

}

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

      return output;
  }


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;
}

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;

    vector<Record>r;
    multimap<string,Record>m1;
    multimap<Time,Record>m2;
    public:
    User(int id,string nam,string m,double yu):no(id),name(nam),mima(m),yue(yu)
    {

    }
    User():no(0)
    {

    }
    User(const User&u1):no(u1.no)
    {
      name=u1.name;
      mima=u1.mima;
      yue=u1.yue;

      for(int i=0;i<u1.r.size();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 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.r.size()!=0)
    for(int i=0;i<u1.r.size();i++)
    output<<u1.r[i];
    return output;
}
void User::add(Record r1)
{
    r.push_back(r1);
    m1.insert(make_pair(r1.getType(),r1));
    m2.insert(make_pair(r1.getDate(),r1));
}
void User::dispRecord(int i)
{
    cout<<r[i];
}
void User::dispAllRecord()
{
    for(int i=0;i<r.size();i++)
    cout<<r[i];
}
/*void User::queryByTime(Time t1,Time t2)
{
    for(int i=0;i<r.size();i++)
    if((t1<r[i].getDate())&&(r[i].getDate()<t2))
    cout<<r[i];
}*/
void User::queryByTime(Time t1,Time t2)
{
    multimap<Time,Record>::iterator m2i,p1,p2;
    p1=m2.lower_bound(t1);
    p2=m2.upper_bound(t2);
    for(m2i=p1;m2i!=p2;m2i++)
    cout<<m2i->second;

}
void User::queryByType(string type)
{
    multimap<string,Record>::iterator m1i,p1,p2;
    p1=m1.lower_bound(type);
    p2=m1.upper_bound(type);
    for(m1i=p1;m1i!=p2;m1i++)
    cout<<m1i->second;
}

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()
{
    cout<<usr;

}

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();

}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值