C++ATM客户端设计数组版
#include<iostream>
#include<string>
using namespace std;
class User;
class Date
{
public:
Date() {}
Date(int year, int month, int day) :year(year), month(month), day(day) {}
~Date() {}
void setYear(int year)
{
this->year = year;
}
void setMonth(int month)
{
this->month = month;
}
void setDay(int day)
{
this->day = day;
}
int getYear()
{
return year;
}
int getMonth()
{
return month;
}
int getDay()
{
return day;
}
friend ostream &operator<<(ostream &out, const Date &date);
friend istream &operator>>(istream &in, Date &date);
bool operator<(Date date)
{
if (year < date.year)
{
return true;
}
else if (year == date.year)
{
if (month < date.month)
{
return true;
}
else if (month = date.month)
{
if (day <= date.day)
{
return true;
}
}
}
return false;
}
private:
int year;
int month;
int day;
};
ostream &operator<<(ostream &out, const Date &date)
{
out << date.year << "年" << date.month << "月" << date.day<<"日";
return out;
}
istream &operator>>(istream &in, Date &date)
{
in >> date.year >> date.month >> date.day;
return in;
}
void test1()
{
Date d;
cin >> d;
cout << d<<endl;
Date d1(2019,12,1);
if (d1<d)
{
cout << d << endl;
}
else
{
cout << d1 << endl;
}
d.setYear(2020);
d.setMonth(4);
d.setDay(15);
cout << d << endl;
}
class Record
{
public:
Record() {}
Record(Date date, double balance) :date(date), balance(balance) {}
Record(string name,Date date, string type, double amount, double balance)
{
this->name = name;
this->date = date;
this->type = type;
this->amount = amount;
this->balance = balance;
}
void setName(string name)
{
this->name = name;
}
void setDate(Date date)
{
this->date = date;
}
void setType(string type)
{
this->type = type;
}
void setAmount(double amount)
{
this->amount = amount;
}
Date getDate()
{
return date;
}
double getBalance()
{
return balance;
}
string getType()
{
return type;
}
double getAmount()
{
return amount;
}
string getName()
{
return name;
}
friend ostream & operator<<(ostream & out, Record & r)
{
out << "交易时间:" << r.date << "\n" << "用户姓名:" << r.name << "\n" << "交易类型:" << r.type << "\n" << "交易金额:" << r.amount << "\n" << "余额:" << r.balance << endl;
return out;
}
/*void show()
{
cout <<"交易时间:"<< date.getYear() << "年" << date.getMonth() << "月" << date.getDay() <<"日"<< endl;
//cout << date << endl;
cout << "用户姓名:" << name << "交易类型:" << type << "交易金额:" << amount << "余额:" << balance << endl;
}*/
void show(Record r)
{
cout << r << endl;
}
private:
string name;
Date date;
double balance;//余额
double amount;//交易金额
string type;//交易类型
};
void test2()
{
Date d(2021, 4, 15);
Record r("张三", d, "存钱", 1000, 1000);
cout << r << endl;
r.setName("李四");
Date d1(2021, 4, 14);
r.setDate(d1);
r.setType("取钱");
r.setAmount(100);
r.show(r);
}
class User
{
public:
User() {};
User(string name, string id1, string id2) :uname(name), cid(id1), uid(id2)
{
this->balance = 0;
this->num = 0;
}
~User() {};
friend ostream &operator<<(ostream &out, const User &user);
friend istream &operator>>(istream &in, User &user);
void setUname(string uname)
{
this->uname = uname;
}
void setCid(string cid)
{
this->cid = cid;
}
void setUid(string uid)
{
this->uid = uid;
}
void setBalance(double balance)
{
this->balance = balance;
}
void setRecord(Record r1)
{
r[++num] = r1;
}
string getUname()
{
return uname;
}
string getCid()
{
return cid;
}
string getUid()
{
return uid;
}
double getBalance()
{
return balance;
}
int getNum()
{
return num;
}
Record getRecord(int i)
{
return r[i];
}
void add(Record r1)
{
setRecord(r1);
}
void show(int i)
{
getRecord(i).show(getRecord(i));
cout << "****************************************" << endl;
}
void showall()
{
for (int i = 1; i <= getNum(); ++i)
{
getRecord(i).show(getRecord(i));
cout << "****************************************" << endl;
}
}
void querybydate(Date d1, Date d2)
{
for (int i = 1; i <= getNum(); ++i)
{
if (d1 < getRecord(i).getDate() && getRecord(i).getDate() < d2)
{
getRecord(i).show(getRecord(i));
}
}
}
void querybytype(string type)
{
for (int i = 1; i <= getNum(); ++i)
{
if (getRecord(i).getType() == type)
{
getRecord(i).show(getRecord(i));
}
}
}
private:
string uname;
string cid;
string uid;
double balance;
Record r[100];
int num;
};
ostream &operator<<(ostream &out, const User &user)
{
out << user.uname << " " << user.cid << " " << user.uid<<" "<<user.balance;
return out;
}
istream &operator>>(istream &in, User &user)
{
in >> user.uname >> user.cid >> user.uid>>user.balance;
return in;
}
void test3()
{
User u1;
cin >> u1;
cout << u1;
cout << endl;
u1.setUname("张三");
u1.setCid("111111");
u1.setUid("341204");
u1.setBalance(100);
cout << u1.getUname()<<" "<<u1.getCid()<<" "<<u1.getUid()<<" "<<u1.getBalance()<<endl;
cout << u1;
}
class RecordOperation
{
public:
RecordOperation() {}
RecordOperation(User user,Date date) :user(user),date(date)
{
}
RecordOperation(Date date) : date(date)
{
}
~RecordOperation() {}
void drawmoney(double dm)//取钱
{
//double dm;
//cin >> dm;
if (dm <= user.getBalance())
{
user.setBalance(user.getBalance() - dm);
Record r1(user.getUname(), date, "取钱", dm, user.getBalance());
user.add(r1);
}
else
{
cout << date;
cout << "此时余额" << user.getBalance() << endl;
cout << "操作错误余额不足!"<<endl;
cout << "****************************************" << endl;
Record r1(user.getUname(), date, "取钱", 0, user.getBalance());
user.add(r1);
}
}
void deposite(double dp)
{
//double dp;
//cin >> dp;
user.setBalance(user.getBalance() + dp);
Record r1(user.getUname(), date, "存钱", dp, user.getBalance());
user.add(r1);
}
void querybydate(Date d1, Date d2)
{
/*int y, m, d;
cin >> y >> m >> d;
Date d1(y, m, d);
int y0, m0, d0;
cin >> y0 >> m0 >> d0;
Date d2(y0, m0, d0);
*/
user.querybydate(d1, d2);
}
void querydeposit()
{
user.querybytype("存钱");
}
void querydrawmoney()
{
user.querybytype("取钱");
}
void show(int i)
{
user.show(i);
}
void show()
{
user.showall();
}
void setDate(Date date)
{
this->date = date;
}
private:
User user;
Date date;
};
void test4()
{
User user("张三","111111","341204");
Date date(2021, 4, 15);
Date date1(2021, 3, 15);
Date date2(2020, 2, 15);
Date date3(2019, 6, 30);
Date date4(2019, 12, 4);
RecordOperation rop(user,date);
rop.deposite(1000);
rop.drawmoney(500);
rop.setDate(date1);
rop.deposite(10000);
rop.setDate(date2);
rop.drawmoney(5000);
rop.setDate(date3);
rop.drawmoney(10000);
rop.setDate(date4);
rop.deposite(50000);
//rop.show(1);
//rop.show(2);
//rop.show();
//rop.querydeposit();
//rop.querydrawmoney();
rop.querybydate(date3, date2);
}
int main()
{
//test1();
//test2();
//test3();
test4();
return 0;
}
道阻且长,行则将至

浙公网安备 33010602011771号