{ cout <<\该读者不存在\ break; } r->disp(); break; case '5': disp(); break; case '6': clear(); break; default:cout<<\输入错误,请从新输入:\ } } }
//图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book {
private:
int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name[20];//书名
int onshelf;//是否再架 1:再架 2:已借 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 disp()//输出图书 { cout << setw(6) << no << setw(18) << name << setw(10) <<(onshelf==1? \在架\已借\ } };
//图书库类,实现对图书的维护,查找,删除等 class BDatabase {
private:
int top; //图书记录指针
Book book[Maxb]; //图书记录 public:
BDatabase()//构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file(\ while (1) { file.read((char *)&b,sizeof(b)); if (!file) break; top++; book[top]=b; } file.close(); }
void clear()//全删 { top=-1; }
int addbook(int n,char *na)//增加图书 {
Book *p=query(n); if (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; }
Book *query(int bookid)//查找图书 { for (int i=0;i<=top;i++) if (book[i].getno()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL; }
void bookdata();//图书库维护 void disp() { for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp(); }
~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstream file(\ for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } };
void BDatabase::bookdata() {
char choice; char bname[40]; int bookid; Book *b;
while (choice!='0') { cout <<\图 书 维 护 \ cout<<\新 增\\n \\t\\t2 更 改\\n\\t\\t3 删 除\\n\\t\\t4 查 找\\n\\t\\t5 显 示
\\n\\t\\t6 全 删\\n\\t\\t0 退 出\ cin >> choice; switch (choice) { case '1': cout << \输入图书编号:\ cin >> bookid; cout << \输入图书书名:\ cin >> bname; addbook(bookid,bname); break; case '2': cout << \输入图书编号:\ cin >> bookid; b=query(bookid); if (b==NULL) { cout << \该图书不存在 \ break; } cout << \输入新的书名:\ cin >> bname; b->setname(bname); break; case '3': cout <<\读入图书编号:\ cin >> bookid; b=query(bookid); if (b==NULL) { cout <<\该图书不存在\ break; } b->delbook(); break; case '4': cout << \读入图书编号:\ cin >> bookid; b=query(bookid); if (b==NULL) { cout <<\该图书不存在\ break; } b->disp(); break;
case '5': disp(); break; case '6': clear(); break; default:cout<<\输入错误,请从新输入:\ } } }
//main() 函数的实现,程序的主界面的引导 void main() {
char choice;
int bookid,readerid; RDatabase ReaderDB; Reader *r;
BDatabase BookDB; Book *b;
while(choice!='0') { cout <