ATM操作
#include<bits/stdc++.h>
using namespace std;
class Time//时间类
{
public:
    Time & operator = (const Time & t)//重载赋值运算符
    {
     month=t.month;
     day=t.day;
     hour=t.hour;
     minute=t.minute;
    }
Time()//无参构造函数
    {
        month=day=hour=minute=0;
    }
Time(int mo,int d,int h,int mi):month(mo),day(d),hour(h),minute(mi){}//带参构造函数
//get&set函数
void setMonth(int mo){month=mo;}
void setDay(int d){day=d;}
void setHour(int h){hour=h;}
void setMinute(int mi){minute=mi;}
void setTime(int mo,int d,int h,int mi){month=mo;day=d;hour=h;minute=mi;}


int getMonth(){return month;}
int getDay(){return day;}
int getHour(){return hour;}
int getMinute(){return minute;}


 void display()//输出,换行
    {
        cout<<month<<" "<<day<<" "<<hour<<" "<<minute<<endl;
    }
    void displayTime()//输出,无换行
    {
        cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
    }
private:
int month;//月
int day;//日
int hour;//小时
int minute;//分钟
};


class Record//记录类
{
int no;
Time date;
string type;
int jiner;//交易金额
double yue;
public:
    Record & operator = (const Record & t)//重载赋值运算符
    {
        no=t.no;
        type=t.type;
        date=t.date;
        jiner= t.jiner;
        yue= t.yue;
    }
Record():date(0,0,0,0)//无参构造函数
{//在一个类中初始化另一个类需用初始化列表的形式
no=0;type="cq";jiner=0;yue=0;
}


Record(int n,int mo,int d,int h,int mi,string t,int j,double y):no(n),date(mo,d,h,mi),type(t),jiner(j),yue(y){}//有参构造函数,注意时间类的初始化方式


Record(int n,Time da,string t,int j,double y):no(n),date(da),type(t),jiner(j),yue(y){}//有参构造函数,注意时间类的初始化方式


//get&set函数
void setNo(int n){no=n;}
void setType(string t){type=t;}
void setJiner(int j){jiner=j;}
void setYue(int y){yue=y;}
void setDate(Time da){this->date=date;}
void setRecord(int n,Time d,string t,int j,double y){
    no=n;
    date=d;
    type=t;
    jiner=j;
    yue=y;
}


int getNo(){return no;}
int getJiner(){return jiner;}
double getYue(){return yue;}
string getType(){return type;}
Time getDate(){ return date;}
void display()
{
    cout<<no<<" ";
    date.displayTime();//输出时间,不要换行
    cout<<" "<<type<<" "<<jiner<<" "<<yue<<endl;
}
};




class User//用户类
{
 public:
  //无参构造函数
    User():no(0)//常数据需要初始化列表初始化
    {
        name="NAME";
        mima="MIMA";
        yue=0;
        num=0;
    }
    //带参构造函数
 User(int n,string na,string m,double y):no(n),name(na),mima(m),yue(y),num(num){num=0;}


 //复制构造函数
 User(const User&a):no(a.no),name(a.name),mima(a.mima),yue(a.yue),num(a.num)
 {
    for(int i=0;i<a.num;++i)//操作记录也要复制
            r[i]=a.r[i];
 }


//get&sat函数
string getName(){return name;}
string getMima(){return mima;}//密码
double getYue(){return yue;}
int getNum(){return num;}
int getNo(){return no;}
void setName(string na){name=na;}
void setMima(string m){mima=m;}
void setYue(double y){yue=y;}
void setNum(int n){num=n;}
void setUser(string na,string m,double y){name=na,mima=m,yue=y;}


void modify1(int jiner)//取钱
    {
        yue=yue-jiner;
    }
void modify2(int jiner)//存钱
    {
        yue=yue+jiner;
    }



void display()//交易记录数为0就不显示交易记录,以后重载输入输出运算符函数
{
cout<<no<<" "<<name<<" "<<mima<<" "<<yue<<endl;
}


void displayw()
{
   cout<<no<<" "<<name<<" "<<mima<<" "<<yue<<" ";
}
User & operator = (const User & t)//重载赋值运算符
    {


        name=t.name;
        mima=t.mima;
        yue= t.yue;
        num=t.num;//当前交易记录数
for(int i=0;i<t.num;i++)
r[i]=t.r[i];
    }


void add(Record rr)//增加一条操作记录
{
r[num++]=rr;
}




void dispRecord(int i)//输出第几条操作记录
{
r[i].display();
}



void displayAll(int i)
{
    cout<<no<<" "<<name<<" "<<mima<<" "<<yue<<" ";
    r[i].display();
}




void dispAllRecord()//输出所有的操作记录
{
    for(int i=0;i<num;i++)
    r[i].display();
}



void 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 queryByType(string type)//按照操作类型输出
{
    for(int i=0;i<num;i++)
    {
        if(r[i].getType()==type)
        r[i].display();
    }
}


private:
const int no;//账号(为常成员)
string name;//姓名
string mima;//密码
double yue;//账户余额
Record r[200];//交易记录
int num;//当前交易记录数
};


class UserOp//操作类
{
    public:


    UserOp();//无参构造函数
    //带参构造函数
    UserOp(int no,Time T,string name,string mima,double yue):usr(no,name,mima,yue)
    {
        t=T;//输入其他用户信息,创建用户对象并赋值给数据成员usr,输入时间值并赋值给数据成员t
    }
    //一种用用户对象初始化,注意。
    UserOp(User u,Time T):usr(u)
    {
        t=T;//将形参赋值给数据成员user,输入时间值并赋值给数据成员t
    }



    void withdraw(int jiner)
    {
        if(usr.getYue()<jiner)
        cout<<"所取金额超过账号余额"<<endl;
        else
       {usr.modify1(jiner);//修改余额
       Record r(usr.getNo(),t,"qq",jiner,usr.getYue());
        usr.add(r);//增加一条交易记录
    }}


    void deposit(int jiner)
    {
        usr.modify2(jiner);//修改余额
        Record r(usr.getNo(),t,"cq",jiner,usr.getYue());
        usr.add(r);//增加一条交易记录
    }



    void queryByTime(Time T1,Time T2)//查询特定时间的
    {
        usr.queryByTime(T1,T2);
    }


    void queryByType(string type)//特定类型的操作
    {
        usr.queryByType(type);
    }


    void display()//输出用户数据
    {
        usr.display();
    }


void displayw()
{
    usr.displayw();
}
void displayAll(int i)
{
    usr.displayAll(i);
}



void dispRecord(int i)
{
    usr.dispRecord(i);
}


    void dispAllRecord()//输出所有操作记录
    {
        usr.dispAllRecord();
    }



    //set&get函数
    void setTime(Time ti)
    {
        t=ti;
    }
    Time getTime(){return t;}


    private:
    User usr;
    Time t;
};


int main()
{
    /*
    int month;
int day;
int hour;
int minute;
cin>>month>>day>>hour>>minute;
    Time t1(month,day,hour,minute);
    t1.setTime(month,day,hour,minute);
    t1.display();
    Time t2;
    cin>>month>>day>>hour>>minute;
    Time tt(month,day,hour,minute);
    t2=tt;
    t2.display();
*/



/*
int no;
string type;
int jiner;//交易金额
double yue;
int month;
int day;
int hour;
int minute;


    Time t1(4,23,8,5);
    Time date;
    date=t1;


    cin>>no>>type>>jiner>>yue;
    Record r1(no,date,type,jiner,yue);
    r1.display();
    Record r2;
    cin>>no>>month>>day>>hour>>minute>>type>>jiner>>yue;
    Record rr(no,month,day,hour,minute,type,jiner,yue);
    r2=rr;
    r2.display();
*/


/*
int month;
int day;
int hour;
int minute;
int no;//账号(为常成员)
string name;
string mima;//密码
string type;
int jiner;//交易金额
double yue;
cin>>no>>name>>mima>>yue;
User u1(no,name,mima,yue);
u1.display();
u1.setMima("778899");
u1.display();


cin>>month>>day>>hour>>minute>>type>>jiner>>yue;
Record r1(no,month,day,hour,minute,type,jiner,yue);
u1.add(r1);
cin>>month>>day>>hour>>minute>>type>>jiner>>yue;
Record r2(no,month,day,hour,minute,type,jiner,yue);
u1.add(r2);
u1.dispRecord(1);


u1.dispAllRecord();
u1.display();
cin>>month>>day;
Time T1(month,day,0,0);
cin>>month>>day;
Time T2(month,day,0,0);
u1.queryByTime(T1,T2);
cin>>type;


u1.queryByType(type);
User u2(u1);//用u1创建对象u2
    u2.dispAllRecord();
    u2.queryByTime(T1,T2);
    u2.display();
*/


    int no,month,day,hour,minute;
    string name,mima;
    double yue;//余额
    int jiner;//交易额
    string type;//交易数据
    cin>>no;
    cin>>name>>mima>>yue;


    cin>>month>>day>>hour>>minute;
    Time t(month,day,hour,minute);
    UserOp uop1(no,t,name,mima,yue);//定义用户操作对象uop1
    uop1.displayw();
    cin>>jiner;
    uop1.deposit(jiner);//存入300


    uop1.dispRecord(0);//显示用户信息


cin>>jiner;
uop1.withdraw(jiner);//取出100
uop1.display();


/*cin>>type;//输入查询数据
uop1.queryByType(type);//查询“存钱”信息
uop1.display();//查询用户信息*/
uop1.dispAllRecord();


User u1(2,"wyy","321",2000);//定义用户数据对象u1,并以其为实参定义用户操作对象uop2(时间为4月23日9点13分)
cin>>month>>day>>hour>>minute;
Time t1(month,day,hour,minute);


UserOp uop2(u1,t1);
UserOp uop3(u1,t1);


cin>>jiner;
uop2.withdraw(jiner);//取出200
uop2.dispRecord(0);
cin>>jiner;
uop2.withdraw(jiner);//取出300
uop2.dispRecord(1);


uop3.display();
uop3.withdraw(200);//取出200
uop3.withdraw(300);//取出300


uop3.queryByType("qq");//查询“取钱”交易记录
cin>>jiner;
uop3.deposit(jiner);//存钱500
uop3.dispRecord(2);


return 0;
}
阅读更多
想对作者说点什么? 我来说一句

ATM java程序

2012年03月27日 246KB 下载

没有更多推荐了,返回首页

不良信息举报

ATM操作

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭