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

📄 book.txt

📁 关于图书管理系统的 一些代码 自己写的也有借鉴别人之处 不过还可以
💻 TXT
字号:
#include<iostream.h>
#include<fstream.h>
#include<iomanip.h>
#include<string.h>
//using namespace std;
const int Maxb=10000;      //最多的图书
const int Maxr=100;        //最多的读者
const int Maxbor=5;        //每位读者最多借五本书
//------------------------------------------------------------------------------
class Book          //图书类
{
       int tag;        //删除标记 1:已删 0:未删
       int no;       //图书编号
       char name[20];       //书名
       char author[10];     //作者名
       char no2[10];      //输入分类号
       char dan[20];     //输入出版单位
       char time[20];      //出版时间
       int     price;         //价格
       int onshelf;      //是否在架1:在架0:已借
public:
       Book(){}
       char *getname(){return name;}      //获取书名
       int      getno(){return no;}       //获取图书编号
       int      gettag(){return tag;}     //获取删除标记
       char *getauthor(){return author;}      //获取作者名
       char *getno2(){return no2;}           //获取分类号
       char *getdan(){return dan;}          //获取出版单位
       char *gettime(){return time;}       //获取出版时间
       int      getprice(){return price;}        //获取图书价格
       void     setname(char na[]){strcpy(name,na);}      //设置书名
       void     setauthor(char au[]){strcpy(author,au);} //设置作者名
       void     setno2(char n[]){strcpy(no2,n);}       //设置分类号
       void     setdan(char d[]){strcpy(dan,d);}      //设置出版单位
       void     settime(char t[]){strcpy(time,t);}     //设置出版时间
void     setprice(int p){price=p;}
       void     delbook(){tag=1;}      //删除图书 1:已删 0:未删
       void     addbook(int n,char*na,char*au,char*n2,char*da,char*ti,int pr)//增加图书
           {
               tag=0;
               no=n;
               price=pr;
               strcpy(name,na);
               strcpy(author,au);
               strcpy(no2,n2);
               strcpy(dan,da);
               strcpy(time,ti);
               onshelf=1;
           }
       int borrowbook()      //借书操作
           {
               if(onshelf==1)
                   {
                       onshelf=0;
                       return 1;
                   }
               return 0;
           }
       void retbook(){onshelf=1;}      //还书操作
       void disp()      //输出图书
           {
               cout<<setw(10)<<no<<setw(10)<<name<<setw(10)<<setw(10)
               <<author<<setw(10)<<no2<<setw(10)<<dan<<setw(10)<<time
               <<setw(10)<<price;
      if(onshelf==1)cout<<setw(10)<<"在架";
      else cout<<setw(10)<<"已借出"<<endl;
           }
};
//------------------------------------------------------------------------------
class     BDatabase      //图书库类
{
       int top;      //图书数量记录指针
       Book book[Maxb];      //图书记录
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,char*au,char*n2,char*da,char*ti,int pr)//增加图书
           {
               Book *p=query(n);//调用函数
               if(p==NULL)
               {
                   top++;
                   book[top].addbook(n,na,au,n2,da,ti,pr);
                   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;
           }
       Book *query2(int bookid,char *name)//按书名查找图书
           {
               for(int i=0;i<=top;i++)
               {
                   if(strcmp(book[i].getname(),name)==0)
                       {
                           bookid=book[i].getno();
                           return &book[i];
                       }
               }
               return NULL;
           }
       Book *query3(int bookid,char *author) //按作者查找图书
           {
               for(int i=0;i<=top;i++)
               {
                   if(strcmp(book[i].getauthor(),author)==0)
                   {
                       bookid=book[i].getno();
                       return &book[i];
                   }
               }
               return NULL;
           }
       void     bookdata();      //图书库维护
       void disp()     //输出图书
           {
               cout<<setw(10)<<"图书编号"<<setw(10)<<"图书名字"
               <<setw(10)<<"图书作者"<<setw(10)<<"图书分类"
               <<setw(10)<<"出版单位"<<setw(10)<<"出版时间"
               <<setw(10)<<"价格"<<setw(10)<<"借还信息"<<endl;
               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 bookid;      //图书编号
char bname[40]; //图书名
char bauthor[10]; //图书作者
char bno2[20]; //图书分类
char bdan[20]; //出版单位
char btime[20]; //出版时间
int bprice; //图书价格
Book      *b;

       int choice=1;
int choice2=1;
int choice3=1;
       while(choice!=0)
       {
           cout<<"\t\t\t图书信息维护\n";
           cout<<"\t\t\t1.添加信息\n";
           cout<<"\t\t\t2.修改信息\n";
           cout<<"\t\t\t3.删除信息\n";
           cout<<"\t\t\t4.信息查询\n";
           cout<<"\t\t\t5.显示信息\n";
           cout<<"\t\t\t6.全部删除\n";
           cout<<"\t\t\t0.退出图书信息维护\n";
           cout<<"请选择:";
           cin>>choice;
           switch(choice)
           {
            case 1:
       {
        cout<<"添加图书操作:\n";
        cout<<"请输入图书编号:";
        cin>>bookid;
        cout<<"请输入书名:";
        cin>>bname;
        cout<<"请输入图书作者:";
        cin>>bauthor;
        cout<<"请输入图书分类:";
        cin>>bno2;
        cout<<"请输入出版单位:";
        cin>>bdan;
        cout<<"请是输入出版时间:";
        cin>>btime;
        cout<<"请输入图书价格:";
        cin>>bprice;
        addbook(bookid,bname,bauthor,bno2,bdan,btime,bprice);
        cout<<"图书编号"<<bookid<<"添加成功\n";
        break;     
       }
            case 2:
       {
        cout<<"修改图书信息操作:\n";
        cout<<"请输入图书编号:";
        cin>>bookid;
        b=query(bookid);
        if(b==NULL)
        {
         cout<<"图书不存在,无法修改\n";
         break;
        }
        cout<<"请输入要更改的:1.书名 2.作者名 3.分类 4.出版单位 5.出版时间 6.图书价格";
        cin>>choice2;
        switch(choice2)
        {
        case 1:
         {
          cout<<"请输入书名:";
          cin>>bname;
          b->setname(bname);
          cout<<"修改书名成功\n";
          break;
         }
        case 2:
         {
          cout<<"请输入作者名:";
          cin>>bauthor;
          b->setauthor(bauthor);
          cout<<"修改作者名成功\n";
          break;
         }
        case 3:
         {
          cout<<"请输入分类号:";
          cin>>bno2;
          b->setno2(bno2);
          cout<<"修改分类成功\n";
          break;
         }
        case 4:
         {
          cout<<"请输入出版单位:";
          cin>>bdan;
          b->setdan(bdan);
          cout<<"修改出版单位成功\n";
          break;
         }
        case 5:
         {
          cout<<"请输入出版时间:";
          cin>>btime;
          b->settime(btime);
          cout<<"修改出版时间成功\n";
          break;
         }
        case 6:
         {
          cout<<"请输入图书价格:";
          cin>>bprice;
          b->setprice(bprice);
          cout<<"修改图书价格成功\n";
          break;
         }
        }
        break;
       }
            case 3:
       {
        cout<<"删除图书操作:\n";
        cout<<"请输入图书编号:";
        cin>>bookid;
        b=query(bookid);
        if(b==NULL){cout<<"不存在该图书,无法删除\n";}
        b->delbook();
        cout<<"删除图书成功\n";
        break;
       }
            case 4:
       {
        cout<<"图书信息查询操作:\n";
        cout<<"1.按图书编号查询 2.按图书作者查询 3.按图书名字查询\n";
        cout<<"请选择查询方式:";
        cin>>choice3;
        switch(choice3)
        {
        case 1:
         {
          cout<<"请输入图书编号:";
          cin>>bookid;
          b=query(bookid);
          if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
          b->disp();
          break;
         }
        case 2:
         {
          cout<<"请输入图书作者:";
          cin>>bauthor;
          b=query3(bookid,bauthor);
          if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
          b->disp();
          break;
         }
        case 3:
         {
          cout<<"请输入图书名:";
          cin>>bname;
          b=query2(bookid,bname);
          if(b==NULL){cout<<"你要查询的图书不存在\n";break;}
          b->disp();
          break;
         }
        }
        break;
       }
            case 5:
       {
        disp();
        break;
       }
            case 6:
       {
        clear();
        break;
       }
           }
       }
        

}

⌨️ 快捷键说明

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