#include<bits/stdc++.h>
using namespace std;
class Times
{
private:
int month;
int day;
int hour;
int minute;//组织数据成员日月时分;
public:
Times(int mo,int d,int h,int m);//定义带参构造函数...;
Times();//无参构造函数 ;
void show();
void setMonth(int m){month=m;};
void setDay(int d){day=d;};
void setHour(int h){hour=h;};
void setMinute(int m){minute=m;};
void setAll(int mo,int d,int h,int m){month=mo;day=d;hour=h;minute=m;};
void setAllin(){cin>>month>>day>>hour>>minute;};
int getMonth(){return month;}
int getDay(){return day;}
int getHour(){return hour;}
int getMinute(){return minute;};
friend istream&operator>>(istream&in,Times &t);
friend ostream&operator<<(ostream&out,Times&t);
bool operator<(const Times &t)const{
return month!=t.month?month<t.month:day!=t.day?day<t.day:hour<t.hour;}
};
istream&operator>>(istream&in,Times &t)
{
in>>t.month>>t.day>>t.hour>>t.minute;
return in;
}
ostream&operator<<(ostream&out,Times&t)
{
out<<t.month<<" "<<t.day<<" "<<t.hour<<" "<<t.minute;
return out;
}
Times::Times(int mo,int d,int h,int m)
{
month=mo;
day=d;
hour=h;
minute=m;
}
Times::Times()
{
month=0;
day=0;
hour=0;
minute=0;
}
void Times::show()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute<<" ";
}
class Record
{
private:
int money;
double left;
string type;
int number;
Times date;
public:
Record(int number1,Times date1,string type1,int money1,double left1);
Record();
void show()
{cout<<number<<" ";date.show();cout<<type<<" "<<money<<" "<<left;};
void setNumber(int number1){number=number1;};
void setType(string type1){type=type1;};
void setMoney(int money1){money=money1;};
void setLeft(double left1){left=left1;};
void setAll(int number1,int a,int b,int c,int d,string type1,int money1,double left1){number=number1;date.setAll(a,b,c,d);type=type1;money=money1;left=left1;}
void setAllin(){cin>>number;date.setAllin();cin>>type>>money>>left;};
int getNumber(){return number;};
string getType(){return type;};
int getMoney(){return money;};
double getLeft(){return left;};
int getMonth(){date.getMonth();}
int getDay(){date.getDay();}
int getHour(){date.getHour();}
int getMinute(){date.getMinute();};
Times getTimes(){return date;};
friend istream&operator>>(istream&in,Record&t);
friend ostream&operator<<(ostream&out,Record&t);
};
istream&operator>>(istream&in,Record&t)
{
in>>t.number>>t.date>>t.type>>t.money>>t.left;
return in;
}
ostream&operator<<(ostream&out,Record&t)
{
out<<t.number<<" "<<t.date<<" "<<t.type<<" "<<t.money<<" "<<t.left;
return out;
}
Record::Record(int number1,Times date1,string type1,int money1,double left1)
{
number=number1;
date=date1;
type=type1;
money=money1;
left=left1;
}
Record::Record()
{
number=0;
type=" ";
money=0;
left=0;
}
class User
{
private:
int number;//?
double left;有问题测试
string code;
string name;
vector<Record>r;
vector<Record>::iterator it;
multimap<string,int>m1;
multimap<string,int>::iterator m1p;
multimap<Times,int>m2;
multimap<Times,int>::iterator m2p;
int num;//交易次数
public:
User( int number1,string name1,string code1,double left1):number(number1),name(name1),code(code1),left(left1){num=0;}
//再加一个复制构造函数!
User(){num=0;};
User(User&u);
void show();
void setLeft(double left1){left=left1;};
void setCode(string code1){code=code1;};
void setNum(int num1){num=num1;};
double getLeft(){return left;};
string getCode(){return code;};
string getName(){return name;};
int getNumber(){return number;};
Record getRecord(int i){return r[i];};
int getNum(){return num;};
void addRecord(Record r1){r[num++]=r1;};
void addRecord1(Record r1);
void showRecord(int i){r[i].show();};
void showallRecord();
void queryTime(Times t1,Times t2);
void queryTime1(Times t1,Times t2);
void queryType1(string type);
void queryType(string type);
void showAll();
friend istream&operator>>(istream&in,User&u);
};
istream&operator>>(istream&in,User&u)
{
in>>u.number>>u.name>>u.code>>u.left;
return in;
}
void User::queryTime1(Times t1,Times t2)
{
multimap<Times,int>::iterator p1,p2,p3;
p1=m2.lower_bound(t1);
p2=m2.upper_bound(t2);
for(p3=p1;p3!=p2;p3++)
{
cout<<r[p3->second]<<endl;//第几个;
}
}
void User::queryType1(string type)
{
multimap<string,int>::iterator p1,p2,p3;
p1=m1.lower_bound(type);
p2=m1.upper_bound(type);
for(p3=p1;p3!=p2;p3++)
{
cout<<r[p3->second]<<endl;//第几个;
}
}
void User::addRecord1(Record r1)
{
int i;
r.push_back(r1);
num++;
i=r.size();
m1.insert(make_pair(r1.getType(),i-1));
m2.insert(make_pair(r1.getTimes(),i-1));
}
//复制构造函数
User::User(User&u)
{
number=u.getNumber();
left=u.getLeft();
code=u.getCode();
name=u.getName();
num=u.num;
for(int i=0;i<u.num;i++)
{
r.push_back(u.r[i]);
int j=r.size();
m1.insert(make_pair(u.r[i].getType(),j-1));
m2.insert(make_pair(u.r[i].getTimes(),j-1));
}
}
void User::show()
{
cout<<number<<" "<<name<<" "<<code<<" "<<left;
}
void User::showAll()
{ show();
cout<<endl;//if(num>0)
showallRecord();
}
void User::showallRecord()
{
for(int i=0;i<num;i++)
{
cout<<r[i]<<endl;
}
}
void User::queryTime(Times t1,Times t2)
{
for(int i=0;i<num;i++)
{
if(r[i].getMonth()==t1.getMonth()&&(r[i].getMonth()==t2.getMonth()))
{
if(r[i].getDay()>=t1.getDay()&&r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}//月份内;
else if(r[i].getMonth()==t1.getMonth()&&r[i].getMonth()!=t2.getMonth())
{
if(r[i].getDay()>=t1.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()==t2.getMonth()&&r[i].getMonth()!=t1.getMonth())
{
if(r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()>t1.getMonth()&&(r[i].getMonth()<t2.getMonth()))
{
r[i].show();
cout<<endl;
}
}//t1为月份小的一个
}
void User::queryType(string type)
{
for(int i=0;i<num;i++)
{
if(r[i].getType()==type)
{r[i].show();
cout<<endl;}
}
}
class Atm
{private:
User u;
Times t;
public:
Atm(int number1,string name1,string code1,double left1,int a,int b,int c,int d):u(number1,name1,code1,left1),t(a,b,c,d){}
Atm(User u1,Times t1):u(u1),t(t1){}
void outMoney();
void inMoney();
void queryTime();
void queryType(string type);
void showRecord();
void showInformation();
void showAll(){u.show();cout<<endl;u.showallRecord();};
};
void Atm::showInformation()
{
u.showAll();
}
void Atm::showRecord()
{
u.showallRecord();
}
void Atm::queryType(string type)
{
u.queryType(type);
}
void Atm::queryTime()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
cin>>a>>b>>c>>d;
Times t2(a,b,c,d);
u.queryTime(t1,t2);
}
void Atm::inMoney()
{
int money;
cin>>money;
u.setLeft(u.getLeft()+money);
Record r1(u.getNumber(),t,"cq",money,u.getLeft());
u.addRecord(r1);
}
void Atm::outMoney()
{
int money;
cin>>money;
if(money<=u.getLeft())
{
u.setLeft(u.getLeft()-money);
Record r1(u.getNumber(),t,"qq",money,u.getLeft());
u.addRecord(r1);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int main()
{
/*Times t1;
cin>>t1;
cout<<t1;
cout<<endl;
Times t2;//无参函数定义不加括号;
cin>>t2;
cout<<t2;
return 0;
int num,m,l;
string t;
cin>>num>>t>>m>>l;
Times t1(4,23,8,5);
Record r1(num,t1,t,m,l);
cout<<r1<<endl;
Record r2;
cin>>r2;
cout<<r2;
return 0;
int number;
string code;
string name;
double left;
cin>>number>>name>>code>>left;*/
User u1;
cin>>u1;
u1.show();
cout<<endl;
u1.setCode("778899");
u1.show();
cout<<endl;
Times t1(4,22,8,10),t2(4,28,13,20);
Record r1(u1.getNumber(),t1,"qq",200,2000),r2(u1.getNumber(),t2,"cq",400,2400);
u1.addRecord1(r1);
u1.addRecord1(r2);
u1.showRecord(1);
cout<<endl;
Times t3(4,28,0,0),t4(4,29,0,0);
u1.queryTime1(t3,t4);
u1.showallRecord();
u1.showAll();
User u2(u1);
u2.queryType1("cq");
u2.showAll();
/*int n;
cin>>n;
string name;
cin>>name;
string code;
cin>>code;
int left;
cin>>left;
int a1,b1,c1,d1;
cin>>a1>>b1>>c1>>d1;
Atm as(n,name,code,left,a1,b1,c1,d1);
as.showInformation();//第一行输出
as.inMoney();
as.outMoney();
as.queryType("cq");
as.showInformation();//空格
User u(2 ,"wyy","321",2000);
int a3,b2,c2,d2;
cin>>a3>>b2>>c2>>d2;
Times t(a3,b2,c2,d2);
Atm a2(u,t);
a2.outMoney();
a2.outMoney();
a2.queryType("qq");
a2.inMoney();
a2.showInformation();*/
}
LIBRARY
#include<bits/stdc++.h>
using namespace std;
class Time
{
int year;
int month;
int day;
int hour;
public:
Time(int x,int y,int z,int v):year(x),month(y),day(z),hour(v){}
Time(){}
int getYear(){return year;};
int getMonth(){return month;};
int getDay(){return day;};
int getHour(){return hour;};
bool operator<(const Time&d)const
{
return year!=d.year?year<d.year:month!=d.month?month<d.month:day!=d.day?day<d.day:hour<d.hour;
}
friend ostream&operator<<(ostream &os, const Time &d);
friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
os<<d.year<<" "<<d.month<<" "<<d.day<<" "<<d.hour;
return os;
}
istream&operator>>(istream &in,Time &d)
{
in>>d.year;
in>>d.month;
in>>d.day;
in>>d.hour;
/*while(1)
{
in>>d.year;
if(d.year>1900&&d.year<2019)
break;
else cout<<"请重输\n";
}
while(1)
{
in>>d.month;
if(d.month>0&&d.month<13)
break;
else cout<<"请重输\n";
}
while(1)
{
in>>d.day;
if(d.day>0&&d.day<32)
break;
else cout<<"请重输\n";
}
while(1)
{
in>>d.hour;
if(d.hour>0&&d.hour<24)
break;
else cout<<"请重输\n";
}
*/
return in;
}
/*
记录类
1.包含借阅人一部分信息
2.借阅图书序号及少部分信息
3.简易为下面服务的函数及运算符重载;
*/
class Record
{
string name;
int id;
int id1;
int code;
int major;
int classes;
int nowBorrows;
int breaks;
string type;
Time start;
Time end;
bool either;
Time changeEnd;
public:
Record(Time t1,Time t2);
Record(){changeEnd=end;}
Time getStart(){return start;};
Time getEnd(){return end;};
Time setChange(Time t){changeEnd=t;}
int getNo(){return id;};
int getId(){return id1;};
string getType(){return type;};
string getName(){return name;};
friend ostream&operator<<(ostream&os,const Record&r);
friend istream&operator>>(istream&in,Record&r);
};
istream&operator>>(istream&in,Record&r)
{
in>>r.id;
if(r.id==0)return in;
in>>r.id1;
in>>r.type;
in>>r.start;
in>>r.end;
r.changeEnd=r.end;
return in;
}
ostream&operator<<(ostream&os,const Record&r)
{
os<<r.id<<" ";
os<<r.id1<<" ";
os<<r.type<<" ";
os<<r.start<<" ";
os<<r.changeEnd<<" "<<endl;
return os;
}
Record::Record(Time t1,Time t2)
{
start=t1;
end=t2;
changeEnd=end;
}
/*
书数据类
1.提供书的信息
2.提供这本书一些人借阅记录查阅
3.可借数量,判断函数为下面操作类服务
*/
class Book//书籍类
{
string name;
string name1;
string press;
int no;
int number;//每类书的总数
int borrow;//借出数量
int left;
vector<Record>r;
int num;
public:
Book(string name1,int no1,string press1,int number1,int num1):name(name1),no(no1),press(press1),number(number1),num(num1){}
Book(){number=0;borrow=0;num=0;}
string getName(){return name;};
string getPress(){return press;};
Record getRecord(int i){return r[i];};
void addBorrowsJ(int n){borrow+=n;}
void addBorrowsH(int n){borrow-=n;};
int getNo(){return no;};
int getNum(){return num;};
void setNum(int i){num+=i;};
void addRecord(Record rr){num++;r.push_back(rr);};
int getNowNumber(){return (number-borrow);}//可借数量
int getNumber(){return number;};
int getBorrows(){return borrow;};
int getLeft(){return left;};
friend ostream&operator<<(ostream&os,const Book&b);
friend istream&operator>>(istream&in,Book&b);
};
istream&operator>>(istream&in,Book&b)
{
in>>b.name;
if(b.name=="E")return in;
in>>b.no>>b.name1>>b.press>>b.number>>b.num;
for(int i=0;i<b.num;++i)
{
Record rr;
in>>rr;
b.r.push_back(rr);
}
return in;
}
ostream&operator<<(ostream&os,const Book&b)
{
os<<b.name<<" "<<b.no<<" "<<b.name1<<" "<<b.press<<" "<<b.number<<" "<<b.num<<endl;
for(int i=0;i<b.num;++i)
{
os<<b.r[i];
}
return os;
}
/*
用户数据类
1.提供大多数数据
2.包含一部分小函数
3.查询函数,显示函数,修改函数,为操作类服务;
4.一部分注释,修改版
*/
class User
{
string name;
string major;
string classes;
int id;
int num;//记录条数
int code;
int borrows;
int nowBorrows;
int canReborrow;
bool breaks;
vector<Book>b;
multimap<int,int>b1;
multimap<int,int>::iterator b1p;
multimap<string,int>b2;
multimap<string,int>::iterator b2p;
vector<Record>r;
vector<Record>::iterator it;
multimap<int,int>m1;
multimap<int,int>::iterator m1p;
multimap<string,int>m2;
multimap<int,int>::iterator m2p;
multimap<Time,int>m3;
multimap<Time,int>::iterator m3p;
public:
User()
{borrows=10;breaks=0;nowBorrows=0;canReborrow=1;}
void addOne();
void addSome();
int getNowBorrows(){return nowBorrows;};
int getNowReborrow(){return canReborrow;};
int getBreaks(){return breaks;};
int getId(){return id;}
string getName(){return name;}
void addReborrow(int i){canReborrow-=i;};
void addBreaks(int m){breaks+=m;};
void addNowBorrowsJ(int m){nowBorrows+=m;};
void addNowBorrowsH(int m){nowBorrows-=m;};
void addRecord(Record rr){num++;r.push_back(rr);}
void show();
void queryTime(Time t);
void changeTime(int no,Time t);
void queryNow();
//void reBorrow();
friend istream&operator>>(istream&in,User &u);
friend ostream&operator<<(ostream&os,User &u);
};
void User::changeTime(int no,Time t)//具体哪一位学生
{
for(it=r.begin();it!=r.end();it++)
{
if(it->getNo()==no)
{
r[it-r.begin()].setChange(t);
}
}
}
void User::queryTime(Time t)
{
for(it=r.begin();it!=r.end();it++)
{
if(it->getEnd()<t)
cout<<*it;
}
}
void User::show()
{
for(it=r.begin();it!=r.end();it++)
{
cout<<*it;
}
}
/*void User::load()
{
int i;
Book bb;
ifstream infile("d:\\User.txt",ios::in);
if(!infile)
return;
b.clear();
b1.clear();
b2.clear();
i=0;
while(infile>>bb)
{
b.push_back(bb);
b1.insert(make_pair(bb.getNo(),i));
b2.insert(make_pair(bb.getName(),i));
i++;
}
infile.close();
}
void User::reBorrow()
{
bool e;
if(!can())
{
cout<<"您已达借阅上限\n";
}
else
{
cout<<"您想续借书的序号以及借到的时间\n";
int s;
cin>>s;
Time t;
cin>>t;
for(it=r.begin();it!=r.end();it++)
{
if(r[it-r.begin()].getId()==s)
r[it-r.begin()].setChange(t);
}
}
}*/
void User::queryNow()
{
cout<<"输入当前时间\n";
Time t;
cin>>t;
for(it=r.begin();it!=r.end();it++)
{
if(r[it-r.begin()].getEnd()<t)
cout<<r[it-r.begin()]<<endl;
}
}
/*void User::queryId(int ids)
{
it=find_if(r.begin(),r.end(),cmp1(ids));
while(it!=r.end())
{
cout<<"found:\t"<<r[it-r.begin()]<<endl;
it=find_if(it+1,r.end(),cmp1(ids));
}
}*/
istream&operator>>(istream&in,User &u)
{
in>>u.id;
if(u.id==0)return in;
in>>u.code>>u.name>>u.major>>u.classes>>u.nowBorrows>>u.breaks>>u.num;
for(int i=0;i<u.num;++i)
{
Record rr;
in>>rr;
u.r.push_back(rr);
}
return in;
}
ostream&operator<<(ostream&os,User&u)
{
os<<u.id<<" "<<u.code<<" "<<u.name<<" "<<u.major<<" "<<u.classes<<" "<<u.nowBorrows<<" "<<u.breaks<<" "<<u.num<<endl;
for(int i=0;i<u.num;++i)
{
os<<u.r[i];
}
}
/*
操作类
1.查询当前信息
2.查询记录
2.借还书
3.续借
4.添加记录
*/
class Operate
{
vector<Book>b;
vector<Book>::iterator it1;
multimap<int,int>b1;
multimap<int,int>::iterator b1p;
multimap<string,int>b2;
multimap<string,int>::iterator b2p;
vector<User>u;
vector<User>::iterator it;
multimap<int,int>u1;
multimap<int,int>::iterator u1p;
multimap<string,int>u2;
multimap<string,int>::iterator u2p;
User user;
public:
public:
Operate()
{
load1();
load2();
}
~Operate()
{
load1p();
load2p();
}
void load1();//把文件中的数据读到vector里
void load2();
void load1p();//析构函数
void load2p();
void addOne();
void addSome();//增加记录;
void reBorrow();//修改时间
void queryNow();
void queryHistory();
};
void Operate::reBorrow()
{
cout<<"您的学号为\n";
int id;
cin>>id;
cout<<"您想续借的书的序号为\n";
int no;
cin>>no;
cout<<"您想更改的日期为\n";
Time t;
cin>>t;
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)//找到这一个人
{
if(it->getNowReborrow()>1)
{
cout<<"续借失败\n";
return;
}
it->addReborrow(1);
it->changeTime(no,t);
cout<<"修改成功\n";
}
}
}
void Operate::queryNow()
{
cout<<"您的学号为\n";
int id;
cin>>id;
cout<<"请输入当今时间\n";
Time t;
cin>>t;
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
it->queryTime(t);
}
}
void Operate::queryHistory()
{
cout<<"您的学号为\n";
int id;
cin>>id;
cout<<"您的记录为\n";
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
{
cout<<*it;
}
}
}
void Operate::addOne()
{
cout<<"您想借阅书的编号您的学号等信息\n";
Record rr;
Book bb;
bool e=0;//判断
cin>>rr;
int no=rr.getNo();
int id=rr.getId();
if(rr.getType()=="J")//借书类型
{
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
{
if(it->getNowBorrows()>10)
{
e=1;
break;
}
cout<<"添加成功\n";
u[it-u.begin()].addRecord(rr);
u[it-u.begin()].addNowBorrowsJ(1);//该学生可借数量减1
}
}
if(e==1)
{
for(it1=b.begin();it1!=b.end();it1++)
{
if(it1->getNo()==no)
{
if(it1->getNowNumber()>0)
{
cout<<"添加成功\n";
b[it1-b.begin()].addRecord(rr);
b[it1-b.begin()].addBorrowsJ(1);//书的数量变化
}
}
}
}
}
if(rr.getType()=="H")//还书类型
{
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
{
cout<<"添加成功\n";
u[it-u.begin()].addRecord(rr);
u[it-u.begin()].addNowBorrowsH(1);//该学生可借数量减1
}
}
for(it1=b.begin();it1!=b.end();it1++)
{
if(it1->getNo()==no)
{
cout<<"添加成功\n";
b[it1-b.begin()].addRecord(rr);
b[it1-b.begin()].addBorrowsH(1);//书的数量变化
}
}
}
}
void Operate::addSome()
{
while(1)
{
cout<<"您想借阅书的编号您的学号等信息,输入书号为0结束\n";
Record rr;
Book bb;
bool e=0;//判断
cin>>rr;
if(rr.getNo()==0)break;
int no=rr.getNo();
int id=rr.getId();
if(rr.getType()=="J")//借书类型
{
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
{
if(it->getNowBorrows()>10)
{
e=1;
break;
}
cout<<"添加成功\n";
u[it-u.begin()].addRecord(rr);
u[it-u.begin()].addNowBorrowsJ(1);//该学生可借数量减1
}
}
if(e==1)
{
for(it1=b.begin();it1!=b.end();it1++)
{
if(it1->getNo()==no)
{
if(it1->getNowNumber()>0)
{
cout<<"添加成功\n";
b[it1-b.begin()].addRecord(rr);
b[it1-b.begin()].addBorrowsJ(1);//书的数量变化
}
}
}
}
}
if(rr.getType()=="H")//还书类型
{
for(it=u.begin();it!=u.end();it++)
{
if(it->getId()==id)
{
cout<<"添加成功\n";
u[it-u.begin()].addRecord(rr);
u[it-u.begin()].addNowBorrowsH(1);//该学生可借数量减1
}
}
for(it1=b.begin();it1!=b.end();it1++)
{
if(it1->getNo()==no)
{
cout<<"添加成功\n";
b[it1-b.begin()].addRecord(rr);
b[it1-b.begin()].addBorrowsH(1);//书的数量变化
}
}
}
}
}
void Operate::load1p()
{
ofstream outfileB("e:\\book.txt",ios::out);
if(!outfileB)
return;
for(it1=b.begin();it1!=b.end();it1++)
{
outfileB<<*it1;
}
outfileB.close();
}
void Operate::load2p()
{
ofstream outfileS("e:\\student.txt",ios::out);
if(!outfileS)
return;
for(it=u.begin();it!=u.end();it++)
{
outfileS<<*it;
}
outfileS.close();
}
void Operate::load1()
{
int i;
Book bb;
ifstream infile("e:\\book.txt",ios::in);
if(!infile)
return;
b.clear();
b1.clear();
b2.clear();
i=0;
while(infile>>bb)
{
b.push_back(bb);
b1.insert(make_pair(bb.getNo(),i));
b2.insert(make_pair(bb.getName(),i));
i++;
}
infile.close();
}
void Operate::load2()
{
cout<<"hello worldope!\n";
int i;
User uu;
ifstream infile("e:\\student.txt",ios::in);
if(!infile)
return;
u.clear();
u1.clear();
u2.clear();
i=0;
while(infile>>uu)
{
u.push_back(uu);
u1.insert(make_pair(uu.getId(),i));
u2.insert(make_pair(uu.getName(),i));
i++;
}
infile.close();
}
/*void Operate::query()
{
cout<<"学生学号为\n";
int id;
cin>>id;
for(it=u.begin();it!=u.end();it++)
{
if(u[it-u.begin()].getId()==id)
cout<<*it<<endl;
}
}
void Operate::reBorrow()
{
user.reBorrow();
}*/
/*
管理员类
1.增加学生图书信息
2.删除学生图书信息
3.修改学生图书信息
4.查询学生图书信息
*/
class Adm
{
vector<Book>b;
vector<Book>::iterator it1;
multimap<int,int>b1;
multimap<int,int>::iterator b1p;
multimap<string,int>b2;
multimap<string,int>::iterator b2p;
vector<User>u;
vector<User>::iterator it;
multimap<int,int>u1;
multimap<int,int>::iterator u1p;
multimap<string,int>u2;
multimap<string,int>::iterator u2p;
//对书集合和学生集合操作
public:
Adm()
{
load1();
load2();
}
~Adm()
{
load1p();
load2p();
}
void load1();//把文件中的数据读到vector里
void load2();
void load1p();//析构函数
void load2p();
void addUser();//增加一个用户
void addBook();
void deletesU();//删除一个用户
void deletesB();
void queryIdS();//查询
void queryIdB();
void changeU();//修改
void changeB();
};
void Adm::load1p()
{
ofstream outfileB("e:\\book.txt",ios::out);
if(!outfileB)
return;
for(it1=b.begin();it1!=b.end();it1++)
{
outfileB<<*it1;
}
outfileB.close();
}
void Adm::load2p()
{
ofstream outfileS("e:\\student.txt",ios::out);
if(!outfileS)
return;
for(it=u.begin();it!=u.end();it++)
{
outfileS<<*it;
}
outfileS.close();
}
void Adm::queryIdS()
{
cout<<"你想查询的学生学号为\n";
User uu;
int id;
cin>>id;
for(it=u.begin();it!=u.end();it++)
{
if(u[it-u.begin()].getId()==id)
{
cout<<*it;
uu=*it;
}
}
}
void Adm::queryIdB()
{
cout<<"你想查询的书号为\n";
Book bb;
int id;
cin>>id;
for(it1=b.begin();it1!=b.end();it1++)
{
if(b[it1-b.begin()].getNo()==id)
{
cout<<*it1;
bb=*it1;
}
}
}
void Adm::changeU()
{
cout<<"您想修改信息的学生的学号为\n";
User uu;
int id;
cin>>id;
for(it=u.begin();it!=u.end();it++)
{
if(u[it-u.begin()].getId()==id)
{
u.erase(it);
u1.erase(id);//删除map内指定元素;
cout<<"请重输\n";
cin>>uu;
u.insert(it,uu);
cout<<"修改信息成功\n";
}
}
}
void Adm::changeB()
{
cout<<"您想修改信息的书的编号为\n";
Book bb;
int id;
cin>>id;
for(it1=b.begin();it1!=b.end();it1++)
{
if(b[it1-b.begin()].getNo()==id)
{
b.erase(it1);
b1.erase(id);
cout<<"请重输\n";
cin>>bb;
b.insert(it1,bb);
cout<<"修改信息成功\n";
}
}
}
void Adm::deletesU()
{
cout<<"你想删除的学生学号为\n";
int id;
User uu;
cin>>id;
for(it=u.begin();it!=u.end();)
{
if(u[it-u.begin()].getId()==id)
{
it=u.erase(it);
cout<<"删除成功\n";
}
else
{
it++;
}
}
}
void Adm::deletesB()
{
cout<<"您想删除的书的编号是\n";
int id;
Book bb;
cin>>id;
for(it1=b.begin();it1!=b.end();)
{
if(b[it1-b.begin()].getNo()==id)
{
it1=b.erase(it1);
cout<<"删除成功\n";
}
/*
删除部分
普通办法会越界
网上搜集资料
*/
else
{
it1++;
}
}
}
void Adm::addUser()
{
cout<<"您想增加的用户信息为,学号输入为0结束\n";
User uu;
while(cin>>uu)
{
if(uu.getId()==0)break;
u.push_back(uu);
cout<<"增加用户信息成功\n";
}
};
void Adm::addBook()
{
cout<<"您想增加的图书信息为:书名输入为E结束\n";
Book bb;
while(cin>>bb)
{
if(bb.getName()=="E")break;
b.push_back(bb);
cout<<"增加图书信息成功\n";
}
}
void Adm::load1()
{
int i;
Book bb;
ifstream infile("e:\\book.txt",ios::in);
if(!infile)
return;
b.clear();
b1.clear();
b2.clear();
i=0;
while(infile>>bb)
{
b.push_back(bb);
b1.insert(make_pair(bb.getNo(),i));
b2.insert(make_pair(bb.getName(),i));
i++;
}
infile.close();
}
void Adm::load2()
{
int i;
User uu;
ifstream infile("e:\\student.txt",ios::in);
if(!infile)
return;
u.clear();
u1.clear();
u2.clear();
i=0;
while(infile>>uu)
{
u.push_back(uu);
u1.insert(make_pair(uu.getId(),i));
u2.insert(make_pair(uu.getName(),i));
i++;
}
infile.close();
}
int main()
{
Operate o;
//o.addSome();
//o.queryHistory();
o.queryNow();
//Adm a;
//a.queryIdB();
//a.queryIdS();
//a.deletesU();
//a.addUser();
//a.addBook();
//a.deletesB();
}
#include<bits/stdc++.h>
using namespace std;
class Times
{
private:
int month;
int day;
int hour;
int minute;//组织数据成员日月时分;
public:
Times(int mo,int d,int h,int m);//定义带参构造函数...;
Times();//无参构造函数 ;
void show();
void setMonth(int m){month=m;};
void setDay(int d){day=d;};
void setHour(int h){hour=h;};
void setMinute(int m){minute=m;};
void setAll(int mo,int d,int h,int m){month=mo;day=d;hour=h;minute=m;};
void setAllin(){cin>>month>>day>>hour>>minute;};
int getMonth(){return month;}
int getDay(){return day;}
int getHour(){return hour;}
int getMinute(){return minute;};
};
Times::Times(int mo,int d,int h,int m)
{
month=mo;
day=d;
hour=h;
minute=m;
}
Times::Times()
{
month=0;
day=0;
hour=0;
minute=0;
}
void Times::show()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute<<" ";
}
class Record
{
private:
int money;
double left;
string type;
int number;
Times date;
public:
Record(int number1,Times date1,string type1,int money1,double left1);
Record();
void show()
{cout<<number<<" ";date.show();cout<<type<<" "<<money<<" "<<left;};
void setNumber(int number1){number=number1;};
void setType(string type1){type=type1;};
void setMoney(int money1){money=money1;};
void setLeft(double left1){left=left1;};
void setAll(int number1,int a,int b,int c,int d,string type1,int money1,double left1){number=number1;date.setAll(a,b,c,d);type=type1;money=money1;left=left1;}
void setAllin(){cin>>number;date.setAllin();cin>>type>>money>>left;};
int getNumber(){return number;};
string getType(){return type;};
int getMoney(){return money;};
double getLeft(){return left;};
int getMonth(){date.getMonth();}
int getDay(){date.getDay();}
int getHour(){date.getHour();}
int getMinute(){date.getMinute();};
};
Record::Record(int number1,Times date1,string type1,int money1,double left1)
{
number=number1;
date=date1;
type=type1;
money=money1;
left=left1;
}
Record::Record()
{
number=0;
type=" ";
money=0;
left=0;
}
class User
{
private:
int number;//?
double left;有问题测试
string code;
string name;
vector<Record>v;
vector<Record>iterator it;
multimap<string,int>m1;
multimap<string,int>m1p;
multimap<Data,int>m2;
multimap<Data,int>m2p;
int num;//交易次数
public:
User( int number1,string name1,string code1,double left1):number(number1),name(name1),code(code1),left(left1){num=0;}
//再加一个复制构造函数!
User(User&u);
void show();
void setLeft(double left1){left=left1;};
void setCode(string code1){code=code1;};
void setNum(int num1){num=num1;};
double getLeft(){return left;};
string getCode(){return code;};
string getName(){return name;};
int getNumber(){return number;};
Record getRecord(int i){return r[i];};
int getNum(){return num;};
void addRecord(Record r1);
void showRecord(int i){r[i].show();};
void showallRecord();
void queryTime(Times t1,Times t2);
void queryType(string type);
void showAll();
void showAlll(){ show();cout<<endl;showallRecord();};
};
void User::addRecord(Record r1)
{
v.push_back(r1);
int i=v.size();
m1.insert(make_pair(r1.getType,i-1));
m2.insert(make_pair(r2.getDataS,i-1));
}
//复制构造函数
User::User(User&u)
{
number=u.getNumber();
left=u.getLeft();
code=u.getCode();
name=u.getName();
num=u.getNum();
for(it=u.v.begin();it!=u.v.end();it++)
{
v.push_back(it);
m1p.
}
}
void User::show()
{
cout<<number<<" "<<name<<" "<<code<<" "<<left;
}
void User::showAll()
{ show();
if(num>0)cout<<endl;
showallRecord();
}
void User::showallRecord()
{
for(int i=0;i<num;i++)
{
showRecord(i);
cout<<endl;
}
}
void User::queryTime(Times t1,Times t2)
{
for(int i=0;i<num;i++)
{
if(r[i].getMonth()==t1.getMonth()&&(r[i].getMonth()==t2.getMonth()))
{
if(r[i].getDay()>=t1.getDay()&&r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}//月份内;
else if(r[i].getMonth()==t1.getMonth()&&r[i].getMonth()!=t2.getMonth())
{
if(r[i].getDay()>=t1.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()==t2.getMonth()&&r[i].getMonth()!=t1.getMonth())
{
if(r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()>t1.getMonth()&&(r[i].getMonth()<t2.getMonth()))
{
r[i].show();
cout<<endl;
}
}//t1为月份小的一个
}
void User::queryType(string type)
{
for(int i=0;i<num;i++)
{
if(r[i].getType()==type)
{r[i].show();
cout<<endl;}
}
}
class Atm
{private:
User u;
Times t;
public:
Atm(int number1,string name1,string code1,double left1,int a,int b,int c,int d):u(number1,name1,code1,left1),t(a,b,c,d){}
Atm(User u1,Times t1):u(u1),t(t1){}
void outMoney();
void inMoney();
void queryTime();
void queryType(string type);
void showRecord();
void showInformation();
void showAll(){u.show();cout<<endl;u.showallRecord();};
};
void Atm::showInformation()
{
u.showAll();
}
void Atm::showRecord()
{
u.showallRecord();
}
void Atm::queryType(string type)
{
u.queryType(type);
}
void Atm::queryTime()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
cin>>a>>b>>c>>d;
Times t2(a,b,c,d);
u.queryTime(t1,t2);
}
void Atm::inMoney()
{
int money;
cin>>money;
u.setLeft(u.getLeft()+money);
Record r1(u.getNumber(),t,"cq",money,u.getLeft());
u.addRecord(r1);
}
void Atm::outMoney()
{
int money;
cin>>money;
if(money<=u.getLeft())
{
u.setLeft(u.getLeft()-money);
Record r1(u.getNumber(),t,"qq",money,u.getLeft());
u.addRecord(r1);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int main()
{
/*int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
t1.show();
cout<<endl;
Times t2;//无参函数定义不加括号;
t2.setAllin();
t2.show();
return 0;*/
Times t1(4,23,8,5);
int n,m,l;
string t;
cin>>n>>t>>m>>l;
Record r1(n,t1,t,m,l);
r1.show();
cout<<endl;
Record r2;
r2.setAllin();
r2.show();
return 0;
/* int number;
string code;
string name;
double left;
cin>>number>>name>>code>>left;
User u1(number,name,code,left);
u1.show();
cout<<endl;
u1.setCode("778899");
u1.show();
cout<<endl;
Times t1(4,22,8,10),t2(4,28,13,20);
Record r1(number,t1,"qq",200,2000),r2(number,t2,"cq",400,2400);
u1.addRecord(r1);
u1.addRecord(r2);
u1.showRecord(1);
cout<<endl;
Times t3(4,28,0,0),t4(4,29,0,0);
u1.queryTime(t3,t4);
u1.showallRecord();
u1.showAll();
User u2(u1);
u2.queryType("cq");
u2.showAll();
/*int n;
cin>>n;
string name;
cin>>name;
string code;
cin>>code;
int left;
cin>>left;
int a1,b1,c1,d1;
cin>>a1>>b1>>c1>>d1;
Atm as(n,name,code,left,a1,b1,c1,d1);
as.showInformation();//第一行输出
as.inMoney();
as.outMoney();
as.queryType("cq");
as.showInformation();//空格
User u(2 ,"wyy","321",2000);
int a3,b2,c2,d2;
cin>>a3>>b2>>c2>>d2;
Times t(a3,b2,c2,d2);
Atm a2(u,t);
a2.outMoney();
a2.outMoney();
a2.queryType("qq");
a2.inMoney();
a2.showInformation();*/
}
#include<bits/stdc++.h>
using namespace std;
class Times
{
private:
int month;
int day;
int hour;
int minute;//组织数据成员日月时分;
public:
Times(int mo,int d,int h,int m);//定义带参构造函数...;
Times();//无参构造函数 ;
void show();
void setMonth(int m){month=m;};
void setDay(int d){day=d;};
void setHour(int h){hour=h;};
void setMinute(int m){minute=m;};
void setAll(int mo,int d,int h,int m){month=mo;day=d;hour=h;minute=m;};
void setAllin(){cin>>month>>day>>hour>>minute;};
int getMonth(){return month;}
int getDay(){return day;}
int getHour(){return hour;}
int getMinute(){return minute;};
};
Times::Times(int mo,int d,int h,int m)
{
month=mo;
day=d;
hour=h;
minute=m;
}
Times::Times()
{
month=0;
day=0;
hour=0;
minute=0;
}
void Times::show()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute<<" ";
}
class Record
{
private:
int money;
double left;
string type;
int number;
Times date;
public:
Record(int number1,Times date1,string type1,int money1,double left1);
Record();
void show()
{cout<<number<<" ";date.show();cout<<type<<" "<<money<<" "<<left<<endl;};
void setNumber(int number1){number=number1;};
void setType(string type1){type=type1;};
void setMoney(int money1){money=money1;};
void setLeft(double left1){left=left1;};
void setAll(int number1,int a,int b,int c,int d,string type1,int money1,double left1){number=number1;date.setAll(a,b,c,d);type=type1;money=money1;left=left1;}
void setAllin(){cin>>number;date.setAllin();cin>>type>>money>>left;};
int getNumber(){return number;};
string getType(){return type;};
int getMoney(){return money;};
double getLeft(){return left;};
int getMonth(){date.getMonth();}
int getDay(){date.getDay();}
int getHour(){date.getHour();}
int getMinute(){date.getMinute();};
};
Record::Record(int number1,Times date1,string type1,int money1,double left1)
{
number=number1;
date=date1;
type=type1;
money=money1;
left=left1;
}
Record::Record()
{
number=0;
type=" ";
money=0;
left=0;
}
class User
{
private:
int number;//?
double left;有问题测试
string code;
string name;
Record r[100];
static int num;//交易次数
public:
User( int number1,string name1,string code1,double left1):number(number1),name(name1),code(code1),left(left1){}
//再加一个复制构造函数!
User(User&u);
void show();
void setLeft(double left1){left=left1;};
void setCode(string code1){code=code1;};
void setNum(int num1){num=num1;};
double getLeft(){return left;};
string getCode(){return code;};
string getName(){return name;};
int getNumber(){return number;};
Record getRecord(int i){return r[i];};
int getNum(){return num;};
void addRecord(Record r1){r[num++]=r1;};
void showRecord(int i){r[i].show();};
void showallRecord();
void queryTime(Times t1,Times t2);
void queryType(string type);
void showAll();
void showAlll(){ show();cout<<endl;showallRecord();};
};
//复制构造函数
User::User(User&u)
{
number=u.getNumber();
left=u.getLeft();
code=u.getCode();
name=u.getName();
num=u.getNum();
for(int i=0;i<num;i++)
{
r[i]=u.getRecord(i);
}
}
int User::num=0;
void User::show()
{
cout<<number<<" "<<name<<" "<<code<<" "<<left;
}
void User::showAll()
{ show();
showallRecord();
}
void User::showallRecord()
{
for(int i=0;i<num;i++)
{
showRecord(i);
}
}
void User::queryTime(Times t1,Times t2)
{
for(int i=0;i<num;i++)
{
if(r[i].getMonth()==t1.getMonth()&&(r[i].getMonth()==t2.getMonth()))
{
if(r[i].getDay()>=t1.getDay()&&r[i].getDay()<=t2.getDay())
r[i].show();
}//月份内;
else if(r[i].getMonth()==t1.getMonth()&&r[i].getMonth()!=t2.getMonth())
{
if(r[i].getDay()>=t1.getDay())
r[i].show();
}
else if(r[i].getMonth()==t2.getMonth()&&r[i].getMonth()!=t1.getMonth())
{
if(r[i].getDay()<=t2.getDay())
r[i].show();
}
else if(r[i].getMonth()>t1.getMonth()&&(r[i].getMonth()<t2.getMonth()))
{
r[i].show();
}
}//t1为月份小的一个
}
void User::queryType(string type)
{
for(int i=0;i<num;i++)
{
if(r[i].getType()==type)
r[i].show();
}
}
class Atm
{private:
User u;
Times t;
public:
Atm(int number1,string name1,string code1,double left1,int a,int b,int c,int d):u(number1,name1,code1,left1),t(a,b,c,d){}
Atm(User u1,Times t1):u(u1),t(t1){}
void outMoney();
void inMoney();
void queryTime();
void queryType(string type);
void showRecord();
void showInformation();
void showAll(){u.show();cout<<endl;u.showallRecord();};
};
void Atm::showInformation()
{
u.showAll();
}
void Atm::showRecord()
{
u.showallRecord();
}
void Atm::queryType(string type)
{
u.queryType(type);
}
void Atm::queryTime()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
cin>>a>>b>>c>>d;
Times t2(a,b,c,d);
u.queryTime(t1,t2);
}
void Atm::inMoney()
{
int money;
cin>>money;
u.setLeft(u.getLeft()+money);
Record r1(u.getNumber(),t,"cq",money,u.getLeft());
u.addRecord(r1);
}
void Atm::outMoney()
{
int money;
cin>>money;
if(money<=u.getLeft())
{
u.setLeft(u.getLeft()-money);
Record r1(u.getNumber(),t,"qq",money,u.getLeft());
u.addRecord(r1);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int main()
{
/*int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
t1.show();
cout<<endl;
Times t2;//无参函数定义不加括号;
t2.setAllin();
t2.show();
return 0;*/
/*Times t1(4,23,8,5);
int n,m,l;
string t;
cin>>n>>t>>m>>l;
Record r1(n,t1,t,m,l);
r1.show();
Record r2;
r2.setAllin();
r2.show();
return 0;*/
/*int number;
string code;
string name;
double left;
cin>>number>>name>>code>>left;
User u1(number,name,code,left);
u1.show();
cout<<endl;
u1.setCode("778899");
u1.show();
cout<<endl;
Times t1(4,22,8,10),t2(4,28,13,20);
Record r1(number,t1,"qq",200,2000),r2(number,t2,"cq",400,2400);
u1.addRecord(r1);
u1.addRecord(r2);
u1.showRecord(1);
Times t3(4,28,0,0),t4(4,29,0,0);
u1.queryTime(t3,t4);
u1.showallRecord();
u1.showAlll();
User u2(u1);
u2.queryType("cq");
u2.showAlll();*/
int n;
cin>>n;
string name;
cin>>name;
string code;
cin>>code;
int left;
cin>>left;
int a1,b1,c1,d1;
cin>>a1>>b1>>c1>>d1;
Atm as(n,name,code,left,a1,b1,c1,d1);
as.showInformation();//第一行输出
as.inMoney();
as.outMoney();
as.queryType("cq");
as.showAll();//空格
User u(2 ,"wyy","321",2000);
int a3,b2,c2,d2;
cin>>a3>>b2>>c2>>d2;
Times t(a3,b2,c2,d2);
Atm a2(u,t);
u.setNum(0);
a2.outMoney();
a2.outMoney();
a2.queryType("qq");
a2.inMoney();
a2.showAll();
}
#include<bits/stdc++.h>
using namespace std;
class Times
{
private:
int month;
int day;
int hour;
int minute;//组织数据成员日月时分;
public:
Times(int mo,int d,int h,int m);//定义带参构造函数...;
Times();//无参构造函数 ;
void show();
void setMonth(int m){month=m;};
void setDay(int d){day=d;};
void setHour(int h){hour=h;};
void setMinute(int m){minute=m;};
void setAll(int mo,int d,int h,int m){month=mo;day=d;hour=h;minute=m;};
void setAllin(){cin>>month>>day>>hour>>minute;};
int getMonth(){return month;}
int getDay(){return day;}
int getHour(){return hour;}
int getMinute(){return minute;};
};
Times::Times(int mo,int d,int h,int m)
{
month=mo;
day=d;
hour=h;
minute=m;
}
Times::Times()
{
month=0;
day=0;
hour=0;
minute=0;
}
void Times::show()
{
cout<<month<<" "<<day<<" "<<hour<<" "<<minute<<" ";
}
class Record
{
private:
int money;
double left;
string type;
int number;
Times date;
public:
Record(int number1,Times date1,string type1,int money1,double left1);
Record();
void show()
{cout<<number<<" ";date.show();cout<<type<<" "<<money<<" "<<left;};
void setNumber(int number1){number=number1;};
void setType(string type1){type=type1;};
void setMoney(int money1){money=money1;};
void setLeft(double left1){left=left1;};
void setAll(int number1,int a,int b,int c,int d,string type1,int money1,double left1){number=number1;date.setAll(a,b,c,d);type=type1;money=money1;left=left1;}
void setAllin(){cin>>number;date.setAllin();cin>>type>>money>>left;};
int getNumber(){return number;};
string getType(){return type;};
int getMoney(){return money;};
double getLeft(){return left;};
int getMonth(){date.getMonth();}
int getDay(){date.getDay();}
int getHour(){date.getHour();}
int getMinute(){date.getMinute();};
};
Record::Record(int number1,Times date1,string type1,int money1,double left1)
{
number=number1;
date=date1;
type=type1;
money=money1;
left=left1;
}
Record::Record()
{
number=0;
type=" ";
money=0;
left=0;
}
class User
{
private:
int number;//?
double left;有问题测试
string code;
string name;
Record r[100];
int num;//交易次数
public:
User( int number1,string name1,string code1,double left1):number(number1),name(name1),code(code1),left(left1){num=0;}
//再加一个复制构造函数!
User(User&u);
void show();
void setLeft(double left1){left=left1;};
void setCode(string code1){code=code1;};
void setNum(int num1){num=num1;};
double getLeft(){return left;};
string getCode(){return code;};
string getName(){return name;};
int getNumber(){return number;};
Record getRecord(int i){return r[i];};
int getNum(){return num;};
void addRecord(Record r1){r[num++]=r1;};
void showRecord(int i){r[i].show();};
void showallRecord();
void queryTime(Times t1,Times t2);
void queryType(string type);
void showAll();
void showAlll(){ show();cout<<endl;showallRecord();};
};
//复制构造函数
User::User(User&u)
{
number=u.getNumber();
left=u.getLeft();
code=u.getCode();
name=u.getName();
num=u.getNum();
for(int i=0;i<num;i++)
{
r[i]=u.getRecord(i);
}
}
void User::show()
{
cout<<number<<" "<<name<<" "<<code<<" "<<left;
}
void User::showAll()
{ show();
if(num>0)cout<<endl;
showallRecord();
}
void User::showallRecord()
{
for(int i=0;i<num;i++)
{
showRecord(i);
cout<<endl;
}
}
void User::queryTime(Times t1,Times t2)
{
for(int i=0;i<num;i++)
{
if(r[i].getMonth()==t1.getMonth()&&(r[i].getMonth()==t2.getMonth()))
{
if(r[i].getDay()>=t1.getDay()&&r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}//月份内;
else if(r[i].getMonth()==t1.getMonth()&&r[i].getMonth()!=t2.getMonth())
{
if(r[i].getDay()>=t1.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()==t2.getMonth()&&r[i].getMonth()!=t1.getMonth())
{
if(r[i].getDay()<=t2.getDay())
{
r[i].show();
cout<<endl;
}
}
else if(r[i].getMonth()>t1.getMonth()&&(r[i].getMonth()<t2.getMonth()))
{
r[i].show();
cout<<endl;
}
}//t1为月份小的一个
}
void User::queryType(string type)
{
for(int i=0;i<num;i++)
{
if(r[i].getType()==type)
{r[i].show();
cout<<endl;}
}
}
class Atm
{private:
User u;
Times t;
public:
Atm(int number1,string name1,string code1,double left1,int a,int b,int c,int d):u(number1,name1,code1,left1),t(a,b,c,d){}
Atm(User u1,Times t1):u(u1),t(t1){}
void outMoney();
void inMoney();
void queryTime();
void queryType(string type);
void showRecord();
void showInformation();
void showAll(){u.show();cout<<endl;u.showallRecord();};
};
void Atm::showInformation()
{
u.showAll();
}
void Atm::showRecord()
{
u.showallRecord();
}
void Atm::queryType(string type)
{
u.queryType(type);
}
void Atm::queryTime()
{
int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
cin>>a>>b>>c>>d;
Times t2(a,b,c,d);
u.queryTime(t1,t2);
}
void Atm::inMoney()
{
int money;
cin>>money;
u.setLeft(u.getLeft()+money);
Record r1(u.getNumber(),t,"cq",money,u.getLeft());
u.addRecord(r1);
}
void Atm::outMoney()
{
int money;
cin>>money;
if(money<=u.getLeft())
{
u.setLeft(u.getLeft()-money);
Record r1(u.getNumber(),t,"qq",money,u.getLeft());
u.addRecord(r1);
}
else
cout<<"所取钱数超过账号余额"<<endl;
}
int main()
{
/*int a,b,c,d;
cin>>a>>b>>c>>d;
Times t1(a,b,c,d);
t1.show();
cout<<endl;
Times t2;//无参函数定义不加括号;
t2.setAllin();
t2.show();
return 0;*/
Times t1(4,23,8,5);
int n,m,l;
string t;
cin>>n>>t>>m>>l;
Record r1(n,t1,t,m,l);
r1.show();
cout<<endl;
Record r2;
r2.setAllin();
r2.show();
return 0;
/* int number;
string code;
string name;
double left;
cin>>number>>name>>code>>left;
User u1(number,name,code,left);
u1.show();
cout<<endl;
u1.setCode("778899");
u1.show();
cout<<endl;
Times t1(4,22,8,10),t2(4,28,13,20);
Record r1(number,t1,"qq",200,2000),r2(number,t2,"cq",400,2400);
u1.addRecord(r1);
u1.addRecord(r2);
u1.showRecord(1);
cout<<endl;
Times t3(4,28,0,0),t4(4,29,0,0);
u1.queryTime(t3,t4);
u1.showallRecord();
u1.showAll();
User u2(u1);
u2.queryType("cq");
u2.showAll();
/*int n;
cin>>n;
string name;
cin>>name;
string code;
cin>>code;
int left;
cin>>left;
int a1,b1,c1,d1;
cin>>a1>>b1>>c1>>d1;
Atm as(n,name,code,left,a1,b1,c1,d1);
as.showInformation();//第一行输出
as.inMoney();
as.outMoney();
as.queryType("cq");
as.showInformation();//空格
User u(2 ,"wyy","321",2000);
int a3,b2,c2,d2;
cin>>a3>>b2>>c2>>d2;
Times t(a3,b2,c2,d2);
Atm a2(u,t);
a2.outMoney();
a2.outMoney();
a2.queryType("qq");
a2.inMoney();
a2.showInformation();*/
}
#include<bits/stdc++.h>
using namespace std;
class times//时间类
{
private:
int year,month,day;
public:
times(int a,int b,int c):year(a),month(b),day(c){}
times(){year=0;month=0;day=0;}
int getY(){return year;};
int getM(){return month;};
int getD(){return day;};
void showDate(){cout<<year<<"-"<<month<<"-"<<day<<endl;};
void setTime(int a,int b,int c){year=a;month=b;day=c;};
};
class consumer
{
private:
times t1;
char card[20];
char passward[20];
string name;
float money;
public:
consumer(char kk[],string name1,char pass[],float money1);
string getName(){return name;};
char *getCard(){return card;};
char *getPass(){return passward;};
float getMoney(){return money;};//left
void outMoney(int a){money-=a;};
void saveMoney(int b){money+=b;};
void changePass(char pass[]){strcpy(passward,pass);};
void getDate(){t1.showDate();};
};
consumer::consumer(char kk[],string name1,char pass[],float money1)
{
strcpy(card,kk);
strcpy(passward,pass);
name=name1;
money=money1;
}
class record//记录类
{
public:
record(times t3):t1(t3){x=0;s=0;}
void showRecord()//时间,交易类型,交易金额;
{
t1.showDate();
}
int setX(int a){x=a;};
int setS(int a){s=a;};
int getX(){return x;};
int getS(){return s;};
private:
times t1;//含有对象t1
int x;//类型
int s;//钱数
};
class atm
{
private:
consumer cons;
times t1;
record rec1;
int time;
public:
atm(consumer cn,record cnn):cons(cn),rec1(cnn){}
void welcome();//主界面
void function();//功能界面
bool checkPass(char a[],char b[]);//1
void fetch();//2
void search();//3
void exitatm();//4
void lock();//5
void change();//6
void save();//7
void searchRecord();//8
};
void atm::welcome()
{
int time=0;
cout<<"欢迎使用本台atm机!"<<endl;
char pass[20],cd[20],e;
int i;
do
{
i=0;
cout<<"请输入卡号"<<endl;
do
{
cin.get(e);
cd[i++]=e;
}while(e!='\n');
cd[i-1]='\0';
i=0;
cout<<"请输入密码"<<endl;
do
{
cin.get(e);
pass[i++]=e;
}while(e!='\n');
pass[i-1]='\0';
if(!checkPass(cd,pass))//判断函数
{
++time;
cout<<"您输入密码或卡号有误请重输"<<endl;
}
else function();
}while(time<3);
lock();//没收卡片
}
bool atm::checkPass(char a[],char b[])
{
if(strcmp(cons.getPass(),b)==0&&strcmp(cons.getCard(),a)==0)
return 1;
else return 0;
}
void atm::function()
{
cout<<"您想执行的操作序号为:"<<endl;
cout<<"1.查询余额"<<endl;
cout<<"2.取款"<<endl;
cout<<"3.存款"<<endl;
cout<<"4.退出系统"<<endl;
cout<<"5.修改密码"<<endl;
cout<<"6.查询交易记录"<<endl;
do
{
int n;
cin>>n;
while(n>6||n<1)//while语句
{cout<<"您输入的序号有误,请重输"<<endl;cin>>n;}
if(n!=6)rec1.setX(n);
switch(n)
{
case 1:search();break;
case 2:fetch();break;
case 3:save();break;
case 4:exitatm();break;
case 5:change();break;
case 6:searchRecord();break;
}
}while(true);//!!!!!
}
void atm::search()
{
cout<<"***********"<<endl;
cout<<"卡号:"<<cons.getCard()<<endl;
cout<<"姓名: "<<cons.getName()<<endl;
cout<<"余额: "<<cons.getMoney()<<endl;
cout<<"输入您想继续的操作"<<endl;
}
void atm::searchRecord()
{
cout<<"时间:";
rec1.showRecord();
cout<<"类型:"<<rec1.getX()<<" "<<"金额:"<<rec1.getS()<<endl;
}
void atm::change()
{
char a[10],b[10];
int time=0,t;
do
{
cout<<"请输入旧密码"<<endl;
cin>>a;
if(strcmp(cons.getPass(),a)!=0)
{
++time;
cout<<"密码错误,请重新输入"<<endl;
}
else break;
}while(time<3);
if (time==3)lock();
int flag=0;
do//细节问题
{
cout<<"请输入新密码"<<endl;
cin>>b;
cout<<"请再次输入密码"<<endl;
cin>>a;
if(flag=strcmp(a,b)!=0)
{
cout<<"两次密码不同,请重输"<<endl;
}
else
{
cout<<"修改密码成功,请牢记密码"<<endl;
cons.changePass(b);
cout<<"修改密码成功返回主界面请输入F,若停止交易请输入'N'"<<endl;
char e;
cin>>e;
if(e=='F')
function();
else exitatm();
}
}while(flag!=0);
}
void atm::fetch()
{
cout<<"您想取多少钱?"<<endl;
int m;
while(cin>>m)
{
if(m%100!=0&&m!=0)
{
cout<<"请输入规范的钱数"<<endl;
}
else if(m>cons.getMoney())
{
cout<<"余额不足,若想继续交易请输入Y,输入F返回主界面,输入其它结束本次交易"<<endl;
char e;
cin>>e;
if(e=='Y')continue;
else if(e=='F') function();
else exitatm();
}
else
{
cons.outMoney(m);
rec1.setS(m);
cout<<"取款成功,若继续取钱请输入'Y',返回主界面请输入F,若停止交易请输入'N'"<<endl;
char e;
cin>>e;
if(e=='Y')
{
continue;
}
else if(e=='N') exitatm();
else if(e=='F')function();
}
}
}
void atm::save()
{
cout<<"您想存多少少钱?"<<endl;
int x;
cin>>x;
cout<<"存钱成功"<<endl;
rec1.setS(x);
cons.saveMoney(x);
cout<<"输入您想继续的操作"<<endl;
}
void atm::lock()
{
cout<<"您操作失误,卡已经被没收!"<<endl;
exit(1);
}
void atm::exitatm()
{
cout<<endl<<"感谢你对本银行的支持, 欢迎下次光临!"<<endl;
cout<<"请取卡"<<endl;
exit(0);
}
int main()
{
consumer con1("123456","李华","666666",9000);
times tt(2018,4,21);
record record1(tt);
//record1.showRecord();
atm sss(con1,record1);
sss.welcome();
sss.searchRecord();
// cout<<con1.getName()<<endl;
//sss.welcome();
}