⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 525.cpp

📁 图书管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
              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?"在架":"已借")<<endl;
              }
       };
  //定义图书库类
       class BDatabase 
       {
        private:
          int top;                  //图书记录指针
          Book book[Marb];          //图书记录
        public:
          BDatabase()               //构造函数,将book.txt读到book[]中
          {
             Book b;                //建立图书类的对象
             top=-1;
             fstream file("book.txt",ios::in);
             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(p==NULL)
             {
                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("book.txt",ios::out);
             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()
       {
             int choice=1;
             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=query(bookid);
                         if (b==NULL)
                         {
                              cout<<"该图书不存在"<<endl;
                              break;
                         }
                         cout<<"输入新的书名:";
                         cin>>bname;
                         b->setname(bname);
                         break;
                 case 3:
                         cout<<"输入图书编号:";
                         cin>>bookid;
                         b=query(bookid);
                         if(b==NULL)
                         {
                            cout<<"该图书不存在"<<endl;
                            break;
                         }
                         b->delbook();
                         break;
                 case 4:
                         cout<<"输入图书编号:";
                         cin>>bookid;
                         b=query(bookid);
                         if (b==NULL)
                         {
                            cout<<"该图书不存在"<<endl;
                            break;
                         }
                         b->disp();
                         break;
                 case 5:
                         disp();
                         break;
                 case 6:
                         clear();
                         break;
               }
             }
       }
  //主函数
       void main()
       {
          int choice=1;             
          int bookid;               //定义图书编号
          int readerid;             //定义读者编号          
          RDatabase ReaderDB;       //定义读者库类的对象
          Reader *r;                //定义读者类的对象
          BDatabase BookDB;         //定义图书库类的对象
          Book *b;                  //定义图书类的对象
          while(choice!=0)
          {
            cout<<"1:借书  2:还书  3:图书维护  4:读者维护  0:离开=>";
            cin>>choice;
	    if(choice>4)  
                  break; 
	    switch(choice)
            {
               case 1:
                       cout<<"借书 读者编号: ";
                       cin>>readerid;
                       cout<<" 图书编号: ";
                       cin>>bookid;
                       r=ReaderDB.query(readerid);
                       if(r==NULL)
                       {
                            cout<<"不存在该读者,不能借书"<<endl;
                            break;
                       }
                       b=BookDB.query(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.query(readerid);
                       if(r==NULL)
                       {
                            cout<<"不存在该读者,不能还书"<<endl;
                            break;
                       }
                       b=BookDB.query(bookid);
                       if(b==NULL)
                       {
                             cout<<"不存在该图书,不能还书"<<endl;
                             break;
                       }
                       b->retbook();
                       r->retbook(b->getno());
                       break;
               case 3:
                       BookDB.bookdata();
                       break;
               case 4:
                       ReaderDB.readerdata();
                       break;
            }
          }
       }
       
   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -