#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();
}
ATM机模拟STL版
最新推荐文章于 2022-10-05 00:09:01 发布