ATM系统

ATM类设计方案

每增加一个类生成一个包含主函数的程序(A,B,C,...)。提交时在主函数内增加以下两条语句:

freopen("in.dat","r",stdin);

freopen("out.dat","w",stdout);

时间类Time

数据成员:

       int month;

    int day;

    int hour;

int minute;

成员函数:

       带参构造函数

       无参构造函数

       显示函数(以后重载输入输出运算符函数)

       get/set函数

测试:

       输入 3 13 12 22

       定义对象t1(…);

       显示对象t1;

       定义对象t2;

       将t2的数据成员分别设置成 5 23 9 12;

       显示对象t2;

交易记录类Record

       数据成员:

              int  no;//账号

Time date;//交易日期

           string type;//存钱、取钱

              int jiner;//交易金额

           double yue;//交易后的余额

       成员函数:

       带参构造函数

       无参构造函数

       显示函数(以后重载输入输出运算符函数)

       get/set函数

测试:

       定义时间对象t1(4 23 8 5);

       输入账号、交易类型(存钱)、金额、余额;(1,cq,1000,1000)

       利用输入信息定义记录对象r1;

       显示对象r1;

       定义无参记录对象r2;

       将r2的数据成员分别设置成 1,(5 23 9 12),qq,200,1800;

       显示对象r2;

用户数据类User:

     数据成员:

              int no;//账号

           string name ;//姓名

           string mima;//密码

           double yue;//帐户余额

              Recordr[200];//交易记录

              intnum;//当前交易记录数

     成员函数:

       带参构造函数(不包括交易记录,交易记录数置为零);

       复制构造函数;

       显示函数(如果当前交易记录数为零,则不显示交易记录。以后重载输入输出运算符函数)

       get/set函数

       增加交易一条记录add(Record r);

       显示一条交易记录 dispRecord(int i);

       显示所有交易记录 dispAllRecord();

       查询指定时间段内的交易记录 queryByTime(Time t1,t2);

       查询指定类型的交易记录 queryByType(string type);

测试:

       输入账号、姓名、密码、余额;(2 ff 111111 1000)

       利用输入信息定义用户对象u1;

       显示对象u1;

       设置密码为“778899”;

       显示用户对象u1;

       定义2条交易记录(账号均为对象u1的账号)r1和r2:

              4 22 8 10 qq 2002000

              4 28 13 20 cq 4002400

              将它们追加到u1的交易记录中;

              显示u1的第2条交易记录;

              查询用户u1从4月28日到4月29日的交易记录;

              显示用户u1的所有交易记录;

              显示用户u1的所有信息;

              利用u1创建用户对象u2;

              显示用户u2存钱的所有交易记录;

              显示u2的所有信息;

用户操作类UserOp:

数据成员:

       Userusr;//用户对象

       Timet;//时间对象,表示本次使用的时间;

成员函数:

       带参(账号)构造函数(输入其他用户信息,创建用户对象并赋值给数据成员usr,输入时间值并赋值给数据成员 t);

       带参(用户对象)构造函数(将形参赋值给数据成员usr,输入时间值并赋值给数据成员 t);

       取钱withdraw();输入所要取钱数,判断用户余额是否大于所取钱数。是,则修改用户余额并生成交易记录对象,追加到交易记录中。否则,显示“所取钱数超过账号余额”;

       存钱deposit();输入所要存钱数,修改用户余额并生成交易记录对象,追加到交易记录中;

       查询指定时间段的交易记录queryByTime();输入要查询的起至时间并生成起至时间对象,调用用户成员的queryByTime函数;

       查询指定交易类型的交易记录queryByType();输入要查询的交易类型,调用用户成员的queryByType(string type)函数;

       显示用户信息display();调用用户显示函数

测试:

       输入账号,定义用户操作对象uop1(时间为4月23日8点50分,用户姓名为“xxx”,.密码为“123”,账号余额是1000;);

       存入300;

显示用户信息;

取出100;

查询“存钱”信息;

查询用户信息;

定义用户数据对象u1(2 “wyy”“321”,2000)并以其为实参定义用户操作对象uop2(时间为 4月23日9点13分);

取出200;

取出300;

查询“取钱”交易记录;

存钱500;

显示用户信息;

 

A程序输入输出


输入:

3 13 12 22                                                                    

5 23 9 12

输出:

       313 12 22

5 23 9 12

B程序输入输出

输入:

1 cq  1000 1000

1 5 23 9 12 qq 200 1800

输出:

1 4 23 8 5 cq 1000 1000

1 5 23 9 12 qq 200 1800

 

C程序输入输出

输入:

2 ff 111111 1000    

输出:

2 ff 111111 1000

2 ff 778899 1000

2 4 28 13 20 cq 400 2400

2 4 28 13 20 cq 400 2400

2 4 22 8 10 qq 200 2000

2 4 28 13 20 cq 400 2400

2 ff 778899 1000

2 4 22 8 10 qq 200 2000

2 4 28 13 20 cq 400 2400

2 4 28 13 20 cq 400 2400

2 ff 778899 1000

2 4 22 8 10 qq 200 2000

2 4 28 13 20 cq 400 2400

D程序输入输出

输入:

1

xxx 123 1000

4 23 8 50

300

100

4 23 9 13

200

300

500

输出:

1 xxx 123 10001 4 23 8 50 cq 300 1300

1 xxx 123 1200

1 4 23 8 50 cq 300 1300

1 4 23 8 50 qq 100 1200

2 4 23 9 13 qq 200 1800

2 4 23 9 13 qq 300 1500

2 wyy 321 2000

2 4 23 9 13 qq 200 1800

2 4 23 9 13 qq 300 1500

2 4 23 9 13 cq 500 2000

#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 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;
    }
    void display();
bool operator<(Time);
};
bool Time::operator<(Time t)
{
    if(month<t.month)
    return 1;
    else if(month==t.month)
    if(day<=t.day)
    return 1;
    return 0;


}
   ostream&operator<<(ostream&output,Time&t1)
  {
      output<<t1.month<<" "<<t1.day<<" "<<t1.hour<<" "<<t1.minute<<" ";


      return output;
  }
 void Time::display()
 {
     cout<<month<<" "<<day<<" "<<hour<<" "<<minute;
 }


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;


}
void display()
{
    cout<<no<<" ";
    date.display();
    cout<<" ";
    cout<<type<<" "<<jiner<<" "<<yue<<endl;


}
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;
    Record r[200];
    int num;
    public:
    User(int id,string nam,string m,double yu):no(id),name(nam),mima(m),yue(yu)
    {
        num=0;
    }
    User():no(0)
    {
        num=0;
    }
    User(const User&u1):no(u1.no)
    {
      name=u1.name;
      mima=u1.mima;
      yue=u1.yue;
      num=u1.num;
      for(int i=1;i<=num;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 display()
{
    cout<<no<<" "<<name<<" "<<mima<<" "<<yue;
    if(num!=0)
    {cout<<endl;
        for(int i=1;i<=num;i++)
    r[i].display();}


}
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.num!=0)
    for(int i=1;i<=u1.num;i++)
    output<<u1.r[i];
    return output;
}
void User::add(Record r1)
{
    r[++num]=r1;
}
void User::dispRecord(int i)
{
    r[i].display();
}
void User::dispAllRecord()
{
    for(int i=1;i<=num;i++)
    r[i].display();
}
/*void User::queryByTime(Time t1,Time t2)
{for(int i=1;i<=num;i++)
{if(t1.getMonth()==t2.getMonth())
{
    if(r[i].getDate().getDay()>=t1.getDay()&&r[i].getDate().getDay()<=t2.getDay())
    r[i].display();
}


else if(r[i].getDate().getMonth()>t1.getMonth()&&r[i].getDate().getMonth()<t2.getMonth())
r[i].display();
else if(r[i].getDate().getMonth()==t1.getMonth()&&r[i].getDate().getDay()>=t1.getDay())
r[i].display();
else if(r[i].getDate().getMonth()==t2.getMonth()&&r[i].getDate().getDay()<=t2.getDay())
r[i].display();
}
}*/
void User::queryByTime(Time t1,Time t2)
{
    for(int i=1;i<=num;i++)
    if((t1<r[i].getDate())&&(r[i].getDate()<t2))
    r[i].display();
}


void User::queryByType(string type)
{
    for(int i=1;i<=num;i++)
    if(r[i].getType()==type)
    r[i].display();
}


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()
{
    usr.display();


}


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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值