#include<iostream> #include<cstring> #include<cstdio> 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(); }
ATM模拟系统
猜你喜欢
转载自blog.csdn.net/sdauguanweihong/article/details/80682591
今日推荐
周排行