c++之ATM(二)#include<bits/stdc++.h>using namespace std;void test1();void test2();void test3();class Time{ private: int month,day,hour,minute; public: Time(int m,int d,int h,int mi):month(m),day(d),hour(h),minute(mi){} Time():month(0),day(0),hour(0),minute(0){} friend ostream & operator <<(ostream & output,Time & obj); void set_month(int x){month=x;} void set_day(int x){day=x;} void set_hour(int x){hour=x;} void set_minute(int x){minute=x;} int get_month(){return month;} int get_day(){return day;} int get_hour(){return hour;} int get_minute(){return minute;}};ostream & operator <<(ostream &output,Time & obj){ output<<obj.month<<" "<<obj.day<<" "<<obj.hour<<" "<<obj.minute<<" "; return output;}class Record{ private: int no; Time date; string type; int jiner; double yue; public: Record (int no,Time date,string type,int jiner,double yue) { this->no=no; this->date=date; this->type=type; this->jiner=jiner; this->yue=yue; } Record() { no=-1; type="cq"; jiner=0; yue=0; } friend ostream & operator <<(ostream & output,Record & obj); void set_no(int x){no=x;} void set_date(Time x){date=x;} void set_type(string x){type=x;} void set_jiner(int x){jiner=x;} void set_yue(double x){yue=x;} int get_no(){return no;} Time get_date(){return date;} string get_type(){return type;} int get_jiner(){return jiner;} double get_yue(){return yue;}};ostream & operator <<(ostream & output,Record & obj){ output<<obj.no<<" "; output<<obj.date<<" "; output<<obj.type<<" "; output<<obj.jiner<<" "; output<<obj.yue<<" "; return output;}class User{ private: int no; string name; string mima; double yue; Record r[201]; int num; public: User(){} User(int noo,string name,string mima,double yue):no(noo) { this->name=name; this->mima=mima; this->yue=yue; this->num=0; } User(const User & obj):no(obj.no) { name=obj.name; mima=obj.mima; yue=obj.yue; for(int i=0;i<=obj.num;++i)r[i]=obj.r[i]; num=obj.num; } friend ostream & operator <<(ostream & output,User & obj); void set_name(string x){name=x;} void set_mima(string x){mima=x;} void set_yue(double x){yue=x;} int get_no(){return no;} string get_name(){return name;} string get_mima(){return mima;} double get_yue(){return yue;} int get_num(){return num;} void add(Record rr); void dispRecord(int i); void dispAllRecord(); void queryByTime(Time t1,Time t2); void queryByType(string type);};ostream & operator <<(ostream & output,User & obj){ output<<obj.no<<" "; output<<obj.name<<" "; output<<obj.mima<<" "; output<<obj.yue<<" "; return output;}void User::add(Record rr){ num++; r[num]=rr;}void User::dispRecord(int i){ if(i<=num)cout<<r[i];}void User::dispAllRecord(){ for(int i=1;i<=num;++i)cout<<r[i]<<endl;}void User::queryByTime(Time t1,Time t2){ int a,b,c; a=t1.get_month()*pow(10,6)+t1.get_day()*pow(10,4)+t1.get_hour()*100+t1.get_minute(); b=t2.get_month()*pow(10,6)+t2.get_day()*pow(10,4)+t2.get_hour()*100+t2.get_minute(); for(int i=1;i<=num;++i) { c=r[i].get_date().get_month()*pow(10,6)+r[i].get_date().get_day()*pow(10,4) +r[i].get_date().get_hour()*100+r[i].get_date().get_minute(); if(c>=a&&c<=b)cout<<r[i]<<endl; }}void User ::queryByType(string type){ for(int i=1;i<=num;++i) { if(r[i].get_type()==type)cout<<r[i]<<endl; }}class UserOp{ private: User usr; Time t; public: UserOp(int no); UserOp(User obj); void withdraw(); void deposit(); void queryByTime(Time t1,Time t2) { usr.queryByTime(t1,t2); } void queryByType(string type) { usr.queryByType(type); } void display() { cout<<usr<<endl; usr.dispAllRecord(); } void display_usr(){cout<< usr<<endl;} void display_time(){cout<< t<<endl;}};UserOp::UserOp(int no){ string name; string mima; double yue; cin>>name>>mima>>yue; usr=User(no,name,mima,yue); int month,day,hour,minute; cin>>month>>day>>hour>>minute; t=Time(month,day,hour,minute);}UserOp::UserOp(User usr){ this->usr=usr; int month,day,hour,minute; cin>>month>>day>>hour>>minute; t=Time(month,day,hour,minute);}void UserOp::withdraw(){ int qq; cin>>qq; if(usr.get_yue()-qq>=1e-6) { usr.set_yue(usr.get_yue()-qq); usr.add(Record(usr.get_no(),t,"qq",qq,usr.get_yue())); } else cout<<"ËùqqÊý³¬¹ýÕË»§Óà¶î"<<endl;}void UserOp::deposit(){ int cq; cin>>cq; usr.set_yue(usr.get_yue()+cq); usr.add(Record(usr.get_no(),t,"cq",cq,usr.get_yue()));}int main(){ freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); test1(); test2(); test3(); return 0;}void test1(){ int a,b,c,d; cin>>a>>b>>c>>d; Time test1(a,b,c,d); cout<<test1<<endl; Time test2; cin>>a>>b>>c>>d; test2.set_month(a),test2.set_day(b),test2.set_hour(c),test2.set_minute(d); cout<<test2<<endl;}void test2(){ Time t1(4,23,8,5); int no; string type; int jiner; double yue; cin>>no>>type>>jiner>>yue; Record r1(no,t1,type,jiner,yue); cout<<r1<<endl; Record r2; int a,b,c,d; cin>>no>>a>>b>>c>>d>>type>>jiner>>yue; r2.set_no(no),r2.set_date(Time(a,b,c,d)),r2.set_type(type),r2.set_jiner(jiner),r2.set_yue(yue); cout<<r2<<endl; }void test3(){ int no; string name; string mima; double yue; cin>>no>>name>>mima>>yue; User u1(no,name,mima,yue); cout<<u1<<endl; u1.set_mima("778899"); cout<<u1<<endl; Record r1(no,Time(4,22,8,10),"qq",200,2000),r2(no,Time(4,22,8,10),"cq",400,2400); u1.add(r1); u1.add(r2); u1.dispRecord(2); cout<<endl; u1.queryByTime(Time(4,28,0,0),Time(4,29,0,0)); u1.dispAllRecord(); User u2(u1); u2.queryByType("cq"); cout<<u2<<endl; u2.dispAllRecord();}