#include<iostream> #include<cstring> #include<cstdio> #include<vector> #include<map> 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; } friend bool operator<(Time t1,Time t2); }; bool operator<(Time t1,Time t2) { if(t1.month<t2.month) return 1; else if(t1.month==t2.month) if(t1.day<=t2.day) return 1; return 0; } ostream&operator<<(ostream&output,Time&t1) { output<<t1.month<<" "<<t1.day<<" "<<t1.hour<<" "<<t1.minute<<" "; return output; } 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; } 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; vector<Record>r; multimap<string,Record>m1; multimap<Time,Record>m2; public: User(int id,string nam,string m,double yu):no(id),name(nam),mima(m),yue(yu) { } User():no(0) { } User(const User&u1):no(u1.no) { name=u1.name; mima=u1.mima; yue=u1.yue; for(int i=0;i<u1.r.size();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 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.r.size()!=0) for(int i=0;i<u1.r.size();i++) output<<u1.r[i]; return output; } void User::add(Record r1) { r.push_back(r1); m1.insert(make_pair(r1.getType(),r1)); m2.insert(make_pair(r1.getDate(),r1)); } void User::dispRecord(int i) { cout<<r[i]; } void User::dispAllRecord() { for(int i=0;i<r.size();i++) cout<<r[i]; } /*void User::queryByTime(Time t1,Time t2) { for(int i=0;i<r.size();i++) if((t1<r[i].getDate())&&(r[i].getDate()<t2)) cout<<r[i]; }*/ void User::queryByTime(Time t1,Time t2) { multimap<Time,Record>::iterator m2i,p1,p2; p1=m2.lower_bound(t1); p2=m2.upper_bound(t2); for(m2i=p1;m2i!=p2;m2i++) cout<<m2i->second; } void User::queryByType(string type) { multimap<string,Record>::iterator m1i,p1,p2; p1=m1.lower_bound(type); p2=m1.upper_bound(type); for(m1i=p1;m1i!=p2;m1i++) cout<<m1i->second; } 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() { cout<<usr; } 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机模拟STL版
猜你喜欢
转载自blog.csdn.net/sdauguanweihong/article/details/80682615
今日推荐
周排行