📄 e1.cpp
字号:
cin >> readerid;
r=queryR(readerid);
if (r==NULL)
{
cout <<" 该读者不存在" << endl;
break;
}
r->delbook();
break;
case 4:
cout << " 输入读者编号:";
cin >> readerid;
r=queryR(readerid);
if (r==NULL)
{
cout <<" 该读者不存在" << endl;
break;
}
r->setmoney();
break;
case 5:
cout << "读入读者编号:";
cin >> readerid;
r=queryR(readerid);
if (r==NULL)
{
cout <<"该读者不存在"<< endl;
break;
}
r->dispR();
break;
case 6:
dispR();
break;
case 7:
clearR();
break;
}
}
}
class Book
{
protected:
int tag;
int no;
char name[20];
int onshelf;
public:
Book(){}
char *getname() { return name; }
int getno(){ return no; }
int gettag(){ return tag; }
void setname(char na[])
{
strcpy(name,na);
}
void delbook(){ tag=1;}
void addbook(int n,char *na)
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()
{
if (onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook()
{
onshelf=1;
}
void dispB()
{
cout << setw(6) << no << setw(18) << name << setw(10)
<<(onshelf==1? "在架":"已借") <<endl;
}
};
class BDatabase
{
protected:
int topb;
Book book[Maxb];
public:
BDatabase()
{
Book b;
topb=-1;
fstream fileb("book.txt",ios::in);
while (1)
{
fileb.read((char *)&b,sizeof(b));
if (!fileb) break;
topb++;
book[topb]=b;
}
fileb.close();
}
void Display();
void clearB()
{
topb=-1;
}
int addbook(int n,char *na)
{
Book *p=queryB(n);
if (NULL==p)
{
topb++;
book[topb].addbook(n,na);
return 1;
}
return 0;
}
Book *queryB(int bookid)
{
for (int i=0;i<=topb;i++)
if (book[i].getno()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
Book *findbook(char bookname[])
{
for (int i=0;i<=topb;i++)
if (strcmp(book[i].getname(),bookname)==0 && book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
void bookdata();
void dispB()
{
for (int i=0;i<=topb;i++)
if (book[i].gettag()==0)
book[i].dispB();
}
~BDatabase()
{
fstream fileb("book.txt",ios::out);
for (int i=0;i<=topb;i++)
if (book[i].gettag()==0)
fileb.write((char *)&book[i],sizeof(book[i]));
fileb.close();
}
};
void BDatabase::bookdata()
{
int choice=1;
int choic=0;
char bname[40];
int bookid;
Book *b;
while (choice!=0)
{
cout <<"图书维护 1: 新增书籍 2: 更改书籍 3:删除书籍 4:查找书籍 5:显示书籍 6:清空书籍 0:退出=>";
cin >> choice;
switch (choice)
{
case 1:
cout << "输入图书编号:";
cin >> bookid;
cout << "输入图书书名:";
cin >> bname;
addbook(bookid,bname);
break;
case 2:
cout << "输入图书编号:";
cin >> bookid;
b=queryB(bookid);
if (b==NULL)
{
cout << " 该图书不存在 "<<endl;
break;
}
cout << "输入新的书名:";
cin >> bname;
b->setname(bname);
while(1)
{ cout<<"该图书是否借出(是:1/否:0)?";
cin>>choic;
if (choic==1||choic==0) break;}
if (choic==1) b->borrowbook();
else if (choic==0) b->retbook();
break;
case 3:
cout <<" 读入图书编号:";
cin >> bookid;
b=queryB(bookid);
if (b==NULL)
{
cout <<" 该图书不存在" << endl;
break;
}
b->delbook();
break;
case 4:
cout << " 读入图书编号:";
cin >> bookid;
b=queryB(bookid);
if (b==NULL)
{
cout <<" 该图书不存在"<< endl;
break;
}
b->dispB();
break;
case 5:
dispB();
break;
case 6:
clearB();
break;
}
}
}
int stoi(char str[],int in)
{int i,out=0;
for(i=0;i<in;i++)
out=(str[i]-48)+out*10;
return out;
}
class Display:public RDatabase,public BDatabase
{public:
void DispDate()
{
int choice=1;
int id;
char bn[20];
Book *b;
Reader *r;
while (choice!=0)
{
cout <<"查询信息 1: 图书馆总信息 2: 图书总信息 3:读者总信息 4:图书查询 5:用户查询 0:退出=>";
cin >> choice;
switch (choice)
{
case 1:
cout<<"图书馆目前共藏书"<<topb+1<<"本"<<endl;
cout<<"图书馆目前共有"<<topr+1<<"位读者"<<endl;
break;
case 2:
cout<<"图书馆目前共藏书"<<topb+1<<"本"<<endl;
dispB();
break;
case 3:
cout<<"图书馆目前共有"<<topr+1<<"位读者"<<endl;
dispR();
break;
case 4:
cout << " 读入图书名称:";
cin >> bn;
b=findbook(bn);
if (b==NULL)
{
cout <<" 该图书不存在"<< endl;
break;
}
b->dispB();
break;
case 5:
cout << "读入读者编号:";
cin >> id;
r=queryR(id);
if (r==NULL)
{
cout <<"该读者不存在"<< endl;
break;
}
r->dispR();
break;}}
}
};
void menu(int choice)
{
struct tm *ptr;
time_t lt;
char str[20],pn[20],pp[20];
int bookid,readerid,tf=0;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
Display DData;
login Ldata;
lt=time(NULL);
ptr=localtime(<);
strftime(str,100,"%Y",ptr);
today.year=stoi(str,4);
strftime(str,100,"%m",ptr);
today.month=stoi(str,2);
strftime(str,100,"%d",ptr);
today.day=stoi(str,2);
switch (choice)
{
case 1:
cout <<" 借书 读者编号:";
cin >>readerid;
cout <<" 图书编号: ";
cin >>bookid;
r=ReaderDB.queryR(readerid);
if (NULL==r)
{
cout <<" 不存在该读者,不能借书"<< endl;
break;
}
b=BookDB.queryB(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能借书"<< endl;
break;
}
if (b->borrowbook()==0)
{
cout << " 该图书已借出,不能借书"<< endl;
break;
}
r->borrowbook(b->getno());
break;
case 2:
cout<<"还书 读者编号:";
cin >>readerid;
cout << " 图书编号:";
cin >>bookid;
r=ReaderDB.queryR(readerid);
if (r==NULL)
{
cout <<" 不存在该读者,不能还书" << endl;
break;
}
b=BookDB.queryB(bookid);
if (b==NULL)
{
cout <<" 不存在该图书,不能还书" <<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
case 3:
DData.DispDate();
break;
case 4:
tf=0;
tf=Ldata.rootmenu();
if (tf==1) BookDB.bookdata();
break;
case 5:
tf=0;
tf=Ldata.rootmenu();
if (tf==1) ReaderDB.readerdata();
break;
case 6:
cout<<"Super Root:";
cin>>pn;
cout<<"Password:";
cin>>pp;
if (strcmp(pn,"root")==0 && strcmp(pp,"asdyou")==0)
Ldata.menu();
else cout<<"Login Faild!!!\n";
}
}
void main()
{
int choice;
cout <<"********************图书馆管理系统******************\n";
while(choice!=0)
{
cout <<"1:借书 2:还书 3:查询信息 4:图书维护 5:读者维护 0:离开=>";
cin >> choice;
menu(choice);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -