#include<bits/stdc++.h>
using namespace std;
class Time
{
int month,day,hour,minute;
public:
Time(){
month=0;day=0;hour=0;minute=0;
}
Time(int month1,int day1,int hour1,int minute1):month(month1),day(day1),hour(hour1),minute(minute1){}
Time & operator = (const Time & t){
month=t.month;
day=t.day;
hour=t.hour;
minute=t.minute;
}//重载等号
friend ostream & operator<<(ostream&os,const Time&t);
friend istream & operator>>(istream&is,Time&t);
void setmonth(int month1){month=month1;}
int getmonth(){return month;}
void setDay(int day1){day=day1;}
int getDay(){return day;}
void setHour(int hour1){hour=hour1;}
int getHour(){return hour;}
void setMinute(int minute1){minute=minute1;}
int getMinute(){return minute;}
bool operator <(const Time &t)
{
if(month<=t.month&&day<=t.day)
return true;
return false;
}
// void display();
};
ostream & operator<<(ostream&os,const Time&t){
os<<t.month<<" ";
os<<t.day<<" ";
os<<t.hour<<" ";
os<<t.minute;
return os;
}
istream & operator>>(istream&is,Time&t){
is>>t.month>>t.day>>t.hour>>t.minute;
return is;
}
/*bool operator <(const Time &t)
{
if(month<=t.month&&day<=t.day)
return true;
return false;
}*/
class Record
{
int no;
Time date;//交易日期
string type;//存钱,取钱
int jine;//交易金额
double yue;//余额
public:
Record():date(0,0,0,0){
no=0;
type="cq";
jine=0;
yue=0;
}//无参构造函数
Record(int no1,Time date1,string type1,int jine1,double yue1):no(no1),date(date1),type(type1),jine(jine1),yue(yue1){}
Record(int no1,int month1,int day1,int hour1,int minute1,string type1,int jine1,double yue1):date(month1,day1,hour1,minute1)
{
no=no1;
type=type1;
jine=jine1;
yue=yue1;
}
//有参构造函数
Record & operator = (const Record & r){
no=r.no;
type=r.type;
jine=r.jine;
yue=r.yue;
}
friend ostream & operator << (ostream&os,const Record & r);
friend istream & operator >> (istream&is,Record &r);
void setType(string type1){type=type1;}
string getType(){return type;}
void getJine(int jine1){jine=jine1;}
int getJine(){return jine;}
void setYue(double yue1){yue=yue1;}
double getYue(){return yue;}
void setDate(Time date1){date=date1;}
Time getDate(){ return date;}
};
ostream & operator<<(ostream&os,const Record&r){
os<<r.no<<" ";
os<<r.date<<" ";
os<<r.type<<" ";
os<<r.jine<<" ";
os<<r.yue;
return os;
}
class User
{
int no;
string name;
string mima;
double yue;
int num;//当前交易记录数
vector<Record>r;
public:
User(){
no=0;
name="xingming";
mima="123456";
yue=0;
}
User(int No,string Name,string Mima,double Yue){
no=No;
name=Name;
mima=Mima;
yue=Yue;
}
User(const User & u){
no=u.no;
name=u.name;
mima=u.mima;
yue=u.yue;
for(int i=0;i<u.r.size();i++)
r.push_back(u.r[i]);
}
void add(Record rr){
r.push_back(rr);
}
void dispRecord(int i){
cout<<r[i]<<endl;
}
void dispAllRecord(){
for(int i=0;i<r.size();i++)
cout<<r[i]<<endl;
}
void queryByTime(Time t1,Time t2)//按照时间输出操作记录
{
for(int i=0;i<r.size();i++)
{
Time t=r[i].getDate();//得到当前的操作时间
if(t1<t&&t<t2)
cout<<r[i]<<endl;
}
}
void queryByType(string type)//按照操作类型输出
{
for(int i=0;i<r.size();i++)
{
string Type=r[i].getType();
if(type==Type)
cout<<r[i]<<endl;
}
}
friend ostream & operator <<(ostream & os, const User &u);
friend istream & operator >>(istream & is,User &u);
void setNo(int no1){no=no1;}
int getNo(){return no;}
void setName(string name1){name=name1;}
string getName(){return name;}
void setMima(string mima1){mima=mima1;}
string getMima(){return mima;}
void setYue(double yue1){yue=yue1;}
double getYue(){return yue;}
};
istream & operator>>(istream&is,User&u)
{
is>>u.no>>u.name>>u.mima>>u.yue;
return is;
}
ostream & operator<<(ostream&os,const User&u)
{
os<<u.no<<" ";
os<<u.name<<" ";
os<<u.mima<<" ";
os<<u.yue<<endl;
for(int i=0;i<u.r.size();i++)
os<<u.r[i]<<endl;
return os;
}
int main()
{
//freopen("in.dat","r",stdin);
//freopen("out.dat","w",stdout);
int no;
string name,mima;
double yue;
cin>>no>>name>>mima>>yue;
User u1(no,name,mima,yue);
cout<<u1;//已经有了换行
u1.setMima("778899");
cout<<u1;
Time t1(4,22,8,10);
Time t2(4,28,13,20);
Record r1(no,t1,"qq",200,2000);
u1.add(r1);
Record r2(no,t2,"cq",400,2400);
u1.add(r2);
u1.dispRecord(1);//从零开始计数的
Time T1(4,28,0,0);
Time T2(4,29,0,0);
u1.queryByTime(T1,T2);
u1.dispAllRecord();
User u2(u1);
cout<<u2;
u1.queryByType("cq");
cout<<u2;
return 0;
}
STL ATM用户数据类
最新推荐文章于 2022-10-05 00:09:01 发布