ATM完整版

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


}

猜你喜欢

转载自blog.csdn.net/pxl20171799/article/details/80358226