#include<bits/stdc++.h>
using namespace std;
class Time
{
int month;
int day;
int hour;
int minute;
public:
Time(int m,int d,int h,int s);//带参数的构造函数
Time();//不带参数的构造函数
Time operator =(Time t)//重载赋值运算符
{
month=t.month;
day=t.day;
hour=t.hour;
minute=t.minute;
}
void display();//显示函数
void TimeDisplay();
int setMonth(int month)
{
this->month=month;
}
int getMonth()
{
return month;
}
int setDay(int day)
{
this->day=day;
}
int getDay()
{
return day;
}
int setHour(int hour)
{
this->hour=hour;
}
int getHour()
{
return hour;
}
int setMinute(int minute)
{
this->minute=minute;
}
int getMinute()
{
return minute;
}
using namespace std;
class Time
{
int month;
int day;
int hour;
int minute;
public:
Time(int m,int d,int h,int s);//带参数的构造函数
Time();//不带参数的构造函数
Time operator =(Time t)//重载赋值运算符
{
month=t.month;
day=t.day;
hour=t.hour;
minute=t.minute;
}
void display();//显示函数
void TimeDisplay();
int setMonth(int month)
{
this->month=month;
}
int getMonth()
{
return month;
}
int setDay(int day)
{
this->day=day;
}
int getDay()
{
return day;
}
int setHour(int hour)
{
this->hour=hour;
}
int getHour()
{
return hour;
}
int setMinute(int minute)
{
this->minute=minute;
}
int getMinute()
{
return minute;
}
};
Time::Time(int m,int d,int h,int s)
{
month=m;
day=d;
hour=h;
minute=s;
}
Time::Time()
{
month=day=hour=minute=0;
}
void Time::display()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
Time::Time(int m,int d,int h,int s)
{
month=m;
day=d;
hour=h;
minute=s;
}
Time::Time()
{
month=day=hour=minute=0;
}
void Time::display()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
}
void Time:: TimeDisplay()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
}
class Record
{
int no;//账号
Time date;//交易日期
string type;//存钱、取钱
int jiner;//交易金额
double yue;//交易后的余额
public:
Record(int n,int m,int d,int h,int s,string t,int j,double y):date(m,d,h,s)//带参数的构造函数
{
no=n;type=t;jiner=j;yue=y;
}
Record():date(0,0,0,0)//不带参数的构造函数
{
no=jiner=yue=0;
type="0";
}
Record(int n,Time Date,string t,int j,double y):date(Date)
{
no=n;type=t;jiner=j;yue=y;
}
Record operator=(Record r)//重载赋值函数
{
no=r.no;
type=r.type;
date=r.date;
jiner=r.jiner;
yue=r.yue;
}
void display();
void RecordDisplay();
int setNo(int no)
{
this->no=no;
}
int getNo()
{
return no;
}
void setType(string type)
{
this->type=type;
}
string getType()
{
return type;
}
int setJiner(int jiner)
{
this->jiner=jiner;
}
int getJiner()
{
return jiner;
}
double setYue(double yue)
{
this->yue=yue;
}
double getYue()
{
return yue;
}
void setDate(Time date)
{
this->date=date;
}
Time getDate()
{
return date;
}
void Time:: TimeDisplay()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
}
class Record
{
int no;//账号
Time date;//交易日期
string type;//存钱、取钱
int jiner;//交易金额
double yue;//交易后的余额
public:
Record(int n,int m,int d,int h,int s,string t,int j,double y):date(m,d,h,s)//带参数的构造函数
{
no=n;type=t;jiner=j;yue=y;
}
Record():date(0,0,0,0)//不带参数的构造函数
{
no=jiner=yue=0;
type="0";
}
Record(int n,Time Date,string t,int j,double y):date(Date)
{
no=n;type=t;jiner=j;yue=y;
}
Record operator=(Record r)//重载赋值函数
{
no=r.no;
type=r.type;
date=r.date;
jiner=r.jiner;
yue=r.yue;
}
void display();
void RecordDisplay();
int setNo(int no)
{
this->no=no;
}
int getNo()
{
return no;
}
void setType(string type)
{
this->type=type;
}
string getType()
{
return type;
}
int setJiner(int jiner)
{
this->jiner=jiner;
}
int getJiner()
{
return jiner;
}
double setYue(double yue)
{
this->yue=yue;
}
double getYue()
{
return yue;
}
void setDate(Time date)
{
this->date=date;
}
Time getDate()
{
return date;
}
};
void Record::display()
{
cout<<no<<" ";
date.TimeDisplay();
cout<<" "<<type<<" "<<jiner<<" "<<yue<<endl;
void Record::display()
{
cout<<no<<" ";
date.TimeDisplay();
cout<<" "<<type<<" "<<jiner<<" "<<yue<<endl;
}
/*void Record::RecordDisplay()
{
cout<<no;
date.TimeDisplay();
cout<<" "<<type<<" "<<jiner<<" "<<yue<<endl;
}*/
class User
{
int no;
string name;
string mima;
double yue;
Record r[200];
int num;
public:
User(int n,string na,string mi,double y);//带参数构造函数
/* User(User & u)//复制构造函数
{
no=u.no;
name=u.name;
mima=u.mima;
yue=u.yue;
}*/
User();//无参构造函数
User operator=(User & u)//重载运算符
{
no=u.no;
name=u.name;
mima=u.mima;
yue=u.yue;
num=u.num;
for(int i=0;i<u.num;i++)//操作纪录也要复制
r[i]=u.r[i];
}
void display();//换行输出
/*void displayUser()
{
cout<<no<<" " <<name<<" "<<mima<<" "<<yue;
}*/
int setNo(int no)
{
this->no=no;
}int getNo()
{
return no;
}
void setName(string name)
{
this->name=name;
}
string getName()
{
return name;
}
void setMima(string mima)
{
this->mima=mima;
}
string getMima()
{
return mima;
}
double setYue(double yue)
{
this->yue=yue;
}
double getYue()
{
return yue;
}
void modify1(double jiner)
{
yue=yue-jiner;
}
void modify2(double jiner)
{
yue=yue+jiner;
}
void add(Record r);//增加一条交易记录
void dispRecord(int i);//显示一条交易记录
void dispAllRecord();//显示所有交易记录
void queryByTime(Time t1,Time t2);//按时间查询
void queryByType(string type);//按类型查询(存钱、取钱)
void disPlay();
/*void Record::RecordDisplay()
{
cout<<no;
date.TimeDisplay();
cout<<" "<<type<<" "<<jiner<<" "<<yue<<endl;
}*/
class User
{
int no;
string name;
string mima;
double yue;
Record r[200];
int num;
public:
User(int n,string na,string mi,double y);//带参数构造函数
/* User(User & u)//复制构造函数
{
no=u.no;
name=u.name;
mima=u.mima;
yue=u.yue;
}*/
User();//无参构造函数
User operator=(User & u)//重载运算符
{
no=u.no;
name=u.name;
mima=u.mima;
yue=u.yue;
num=u.num;
for(int i=0;i<u.num;i++)//操作纪录也要复制
r[i]=u.r[i];
}
void display();//换行输出
/*void displayUser()
{
cout<<no<<" " <<name<<" "<<mima<<" "<<yue;
}*/
int setNo(int no)
{
this->no=no;
}int getNo()
{
return no;
}
void setName(string name)
{
this->name=name;
}
string getName()
{
return name;
}
void setMima(string mima)
{
this->mima=mima;
}
string getMima()
{
return mima;
}
double setYue(double yue)
{
this->yue=yue;
}
double getYue()
{
return yue;
}
void modify1(double jiner)
{
yue=yue-jiner;
}
void modify2(double jiner)
{
yue=yue+jiner;
}
void add(Record r);//增加一条交易记录
void dispRecord(int i);//显示一条交易记录
void dispAllRecord();//显示所有交易记录
void queryByTime(Time t1,Time t2);//按时间查询
void queryByType(string type);//按类型查询(存钱、取钱)
void disPlay();
};
User::User(int n,string na,string mi,double y)//带参构造函数
{
no=n;name=na;mima=mi;yue=y;
num=0;
}
User::User()
{
no=0;
name="0";
mima="0";
yue=0;
num=0;
}
void User::add(Record rr)//增加一条交易记录
{
r[num]=rr;
num++;
}
void User::dispRecord(int i)//输出第i条交易记录
{
r[i].display();
}
void User::dispAllRecord()//输出所有的交易记录
{
for(int i=0;i<num;i++)
r[i].display();
}
void User:: queryByTime(Time t1,Time t2)
{
User::User(int n,string na,string mi,double y)//带参构造函数
{
no=n;name=na;mima=mi;yue=y;
num=0;
}
User::User()
{
no=0;
name="0";
mima="0";
yue=0;
num=0;
}
void User::add(Record rr)//增加一条交易记录
{
r[num]=rr;
num++;
}
void User::dispRecord(int i)//输出第i条交易记录
{
r[i].display();
}
void User::dispAllRecord()//输出所有的交易记录
{
for(int i=0;i<num;i++)
r[i].display();
}
void User:: queryByTime(Time t1,Time t2)
{
for(int i=0;i<num;i++)
{ Time t=r[i].getDate();//得到当前的操作时间
if(t.getMonth()<=t2.getMonth()&&t.getMonth()>=t1.getMonth())
if(t.getDay()<=t2.getDay()&&t.getDay()>=t1.getDay())
r[i].display();
}
}
void User::queryByType(string type)
{
for(int i=0;i<num;i++)
{
string Type=r[i].getType();//自己定义一个Type和原有的数据形式比较
if(type==Type)
r[i].display();
}
}
void User:: display()
{
cout<<no<<" "<<name<<" "<<mima<<" "<<yue<<endl;
dispAllRecord();
}
void User::disPlay()
{
cout<<no<<" "<<name<<" "<<mima<<" "<<yue;
dispAllRecord();
}
class UserOp
{
User user;//用户对象
Time time;//时间对象
public:
UserOp(int n,Time t,string na,string mi,double y):user(n,na,mi,y)
{
time=t;
}
UserOp(User u,Time t):user(u)//带参数的构造函数
{
time=t;
}
double WithDraw(double w);//取钱
int Deposit(int d);//存钱
void queryByTime(Time t1,Time t2);//查询指定时间段内的交易
void queryByType(string type);//查询类型
void display();//显示用户信息
void disPlay();
{ Time t=r[i].getDate();//得到当前的操作时间
if(t.getMonth()<=t2.getMonth()&&t.getMonth()>=t1.getMonth())
if(t.getDay()<=t2.getDay()&&t.getDay()>=t1.getDay())
r[i].display();
}
}
void User::queryByType(string type)
{
for(int i=0;i<num;i++)
{
string Type=r[i].getType();//自己定义一个Type和原有的数据形式比较
if(type==Type)
r[i].display();
}
}
void User:: display()
{
cout<<no<<" "<<name<<" "<<mima<<" "<<yue<<endl;
dispAllRecord();
}
void User::disPlay()
{
cout<<no<<" "<<name<<" "<<mima<<" "<<yue;
dispAllRecord();
}
class UserOp
{
User user;//用户对象
Time time;//时间对象
public:
UserOp(int n,Time t,string na,string mi,double y):user(n,na,mi,y)
{
time=t;
}
UserOp(User u,Time t):user(u)//带参数的构造函数
{
time=t;
}
double WithDraw(double w);//取钱
int Deposit(int d);//存钱
void queryByTime(Time t1,Time t2);//查询指定时间段内的交易
void queryByType(string type);//查询类型
void display();//显示用户信息
void disPlay();
};
double UserOp::WithDraw(double w)//取钱
{
if(user.getYue()>=w)//判断用户余额是否大于所取的钱数
{
user.modify1(w);//修改余额
Record r(user.getNo(),time,"qq",w,user.getYue());//生成交易记录对象
user.add(r);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int UserOp::Deposit(int d)//存钱
{
user.modify2(d);
Record r(user.getNo(),time,"cq",d,user.getYue());
user.add(r);
}
void UserOp::queryByTime(Time t1,Time t2)
{
user.queryByTime(t1,t2);
}
void UserOp::queryByType(string type)
{
user.queryByType(type);
}
void UserOp::display()
{
user.display();
}
void UserOp::disPlay()
{
user.disPlay();
}
double UserOp::WithDraw(double w)//取钱
{
if(user.getYue()>=w)//判断用户余额是否大于所取的钱数
{
user.modify1(w);//修改余额
Record r(user.getNo(),time,"qq",w,user.getYue());//生成交易记录对象
user.add(r);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int UserOp::Deposit(int d)//存钱
{
user.modify2(d);
Record r(user.getNo(),time,"cq",d,user.getYue());
user.add(r);
}
void UserOp::queryByTime(Time t1,Time t2)
{
user.queryByTime(t1,t2);
}
void UserOp::queryByType(string type)
{
user.queryByType(type);
}
void UserOp::display()
{
user.display();
}
void UserOp::disPlay()
{
user.disPlay();
}
int main()
{
int no;
string name;
string mima;
int jiner;
double yue;
cin>>no;
cin>>name>>mima>>yue;
int month,day,hour,minute;
cin>>month>>day>>hour>>minute;
Time t1(month,day,hour,minute);
UserOp uop1(no,t1,name,mima,yue);
cin>>jiner;
uop1.Deposit(jiner);
uop1.disPlay();
cin>>jiner;
uop1.WithDraw(jiner);
uop1.queryByType("cq");
uop1.disPlay();
User u1(2,"wyy","321",2000);
cin>>month>>day>>hour>>minute;
Time t2(month,day,hour,minute);
UserOp uop2(u1,t2);
cin>>jiner;
uop2.Deposit(jiner);
cin>>jiner;
uop2.Deposit(jiner);
uop2.queryByType("qq");
cin>>jiner;
uop2.WithDraw(jiner);
uop2.disPlay();
{
int no;
string name;
string mima;
int jiner;
double yue;
cin>>no;
cin>>name>>mima>>yue;
int month,day,hour,minute;
cin>>month>>day>>hour>>minute;
Time t1(month,day,hour,minute);
UserOp uop1(no,t1,name,mima,yue);
cin>>jiner;
uop1.Deposit(jiner);
uop1.disPlay();
cin>>jiner;
uop1.WithDraw(jiner);
uop1.queryByType("cq");
uop1.disPlay();
User u1(2,"wyy","321",2000);
cin>>month>>day>>hour>>minute;
Time t2(month,day,hour,minute);
UserOp uop2(u1,t2);
cin>>jiner;
uop2.Deposit(jiner);
cin>>jiner;
uop2.Deposit(jiner);
uop2.queryByType("qq");
cin>>jiner;
uop2.WithDraw(jiner);
uop2.disPlay();
}