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

📄 noname01.cpp

📁 管理系统。初学C语言的人有帮助。很基本的
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
#include<string.h>
#include<fstream.h>
const int Maxr=100;
const int Maxb=100;
const int Maxbor=5;
class reader{
   int tag;
   int no;
   char name[20];
   int borbook[Maxbor];
 public:
  reader(){}
  char*getname(){return name;}
  int gettag(){return tag;}
  int getno(){return no;}
  void setname(char na[])
  {
    strcpy(name,na);
  }
  void delbook(){tag=1;}
  void addreader(int n,char*na);
  void borrowbook(int bookid);
  int retbook(int bookid);
  void disp();
  };
 void reader::addreader(int n,char*na)
  {
   tag=0;
   no=n;
   strcpy(name,na);
   for(int i=0;i<Maxbor;i++)
     {
       borbook[i]=0;
     }
   }
 void reader::borrowbook(int bookid)
    {
     for(int i=0;i<Maxbor;i++)
     {
     if(borbook[i]==0)
	{
	  borbook[i]=bookid;
	  return;
	  }
	  }
	}
    int reader::retbook(int bookid)
    {
      for(int i=0;i<Maxbor;i++)
	{
	  if(borbook[i]==bookid)
	  {
	    borbook[i]=0;
	    return 1;
	  }
	  }
	return 0;
     }
     void reader:: disp()
     {
      cout<<setw(5)<<no<<setw(10)<<name<<"借书编号:[";
      for(int i=0;i<Maxbor;i++)
         if(borbook[i]!=0)
	 cout<<borbook[i]<<"|";
       cout<<"]"<<endl;
      }
   class RDatabase{
       int top;
       reader read[Maxr];
     public:
     
       RDatabase();
       void clear();
       int addreader(int n,char*na);
       reader*query(int readerid);
       void disp();
       void readerdata();
       ~RDatabase();
     };
   RDatabase::RDatabase(){
       reader s;
       top=-1;
       fstream file("read.txt",ios::in);
       while(1)
	{
	  file.read((char*)&s,sizeof(s));
	  if(!file)break;
	  top++;
	  read[top]=s;
	  }
      file.close();
    }

 void RDatabase::clear()
 {
   top=-1;
 }
 int RDatabase::addreader(int n,char*na)
   {
      reader*p=query(n);
      if(p==NULL)
      {
	top++;
	read[top].addreader(n,na);
	return 1;
      }
      return 0;
  }
 reader*RDatabase::query(int readerid)
  {
    for(int i=0;i<=top;i++)
      if(read[i].getno()==readerid&&read[i].gettag()==0);
	 return &read[i];
      return NULL;
 
  }
  void RDatabase::disp()
  {
   for(int i=0;i<=top;i++)
    read[i].disp();
    }

  void RDatabase::readerdata()
  {
    int choice=1;
    char rname[20];
    int readerid;
    reader*r;
    while(choice!=0)
     {
       cout<<"读者维护:1:新增 2:更改3:删除 4:查找 5:显示 6:全删 0:退出=>";
       cin>>choice;
       switch(choice)
       {
	 case 1:
	 cout<<"请输入读者编号:";
	 cin>>readerid;
	 cout<<"请输入读者姓名:";
	 cin>>rname;
	 addreader(readerid,rname);
	 break;
	case 2:
	 cout<<"输入读者编号:";
	 cin>>readerid;
	 r=query(readerid);
	 if(r==NULL)
	 {
	  cout<<" 该读者不存在"<<endl;
	  break;
	  }
	 cout<<"输入新的姓名:";
	 cin>>rname;
	 r->setname(rname);
	 break;
	case 3:
	cout<<"输入读者编号:";
        cin>>readerid;
	r=query(readerid);
	if(r==NULL)
	 {
	  cout<<"该读者不存在"<<endl;
	  break;
	 }
	 r->delbook();
       break;
       
    case 4:
     cout<<"输入读者编号:";
      cin>>readerid;
      r=query(readerid);
      if(r==NULL)
	{
	 cout<<"该读者不存在:"<<endl;
	 break;
	 }
       r->disp();
       break;
       
     case 5:
       disp();
       break;
     case 6:
       clear();
       break;
    }
   }
   }
 RDatabase::~RDatabase()
 {
   fstream file("read.txt",ios::out);
   for(int i=0;i<=top;i++)
    if(read[i].gettag()==0)
     file.write((char*)&read[i],sizeof(read[i]));
   file.close();
}
class Book{
 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 disp()
    {
     cout<<setw(6)<<no<<setw(18)<<name<<setw(10)<<(onshelf==1?"在架":"已借")<<endl;
     }
     };
    class BDatabase{
     int top;
     Book book[Maxb];
    public:
       BDatabase();
       int addbook(int n,char*na);
       Book*query(int bookid);
       void bookdata();
       void clear();
       void disp();
       ~BDatabase();
       };



    BDatabase:: BDatabase()
     {
      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 BDatabase:: clear()
   {
    top=-1;
   }
  
int BDatabase::addbook(int n,char*na)
{
   Book*p=query(n);
   if(p==NULL)
    {
      top++;
      book[top].addbook(n,na);
      return 1;
    }
   return 0;
 }            	      
Book*BDatabase::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 BDatabase::disp()
{
  for(int i=0;i<=top;i++)
    if(book[i].gettag()==0)
      book[i].disp();
}
void BDatabase::bookdata()
{   int bookid;
  int choice=1;
  char bname[40];
  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;
   }
  }
 }
 BDatabase::~BDatabase()
 {
  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 main()
 {
   int choice=1,bookid,readerid;
   RDatabase ReaderDB;
   reader *r;
   BDatabase BookDB;
   Book *b;
   while(choice!=0)
   {
    cout<<"1。借书 2:还书 3图书维护 4:读者推护 0:离开=>";
    cin>>choice;
    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;
	}
      r->borrowbook(b->getno());
      break;
    case 2:
      cout<<"还书,读者编号:";
      cin>>readerid;
      cout<<"图书编号:";
      cin>>bookid;
      r=ReaderDB.query(readerid);
      if(r==NULL)
       {
       cout<<"不存在该读者,不能还书"<<endl;
	break;
	}
 
   b->retbook();
   r->retbook(b->getno());
   break;
 case 3:
   BookDB.bookdata();
   break;
 case 4:
    ReaderDB.readerdata();
  }
  }
  }         

             	                

       
      

⌨️ 快捷键说明

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