#ifndef _bdatabase_h_
#define _bdatadase_h_

#include "book.h"
#include<iostream>
using namespace std;
const int Maxb=100;
class BDatabase{
    private:
    int top;
    Book book[Maxb];

    public:
    BDatabase();
    void clear();
    int addbook(int n,char *na);
    Book *query(int bookid);
    void list();
    void bookdata();
    BDatabase();
};

#endif

//#include "stdafx.h"
#include <fstream>
#include <iostream>
#include "bdatabase.h"

using namespace std;

BDatabase::BDatabase()
{
    Boook s;
    top = -1;
    fstream file;
    file.open("book.dat",ios::in|ios::binary);
    while(1)
    {
        file.read((char *)&s,sizeof(s));
        if(!file) break;
        top ++;
        book[top] = s;
    }
    file.close();
}

void BDatabase::clear
{
    top = -1;
}

Book *BDatabase::query(int bookid)
{
    for(int i = 0;i <= top;i ++)
    {
        if(book[i].getnumber() == bookid && book[i].getnote() == 0)
            return &book[i];
    }
    return NULL;
}

int BDatabase::addbook(int n,char *na)
{
    Book *p =query(n);
    if(p == NULL)
    {
        top ++;
        book[top].addbook(n,na);
        return 1;
    }
    return 0;
}

void BDatabase::list()
{
    for(int i = 0;i <= top;i ++)
        book[i].list();
}

BDatabase::~BDatabase()
{
    fstream file;
    file.open("book.dat",ios::out|ios::binary);
    for(int i - 0;i <= top;i ++)
    {
        if(book[i].getnote()=0)
        {
            file.write((char*)&book[i],sizeof(book[i]));

        }
        file.close();
    }
}

void BDatabase::bookdata()
{
    int choice=1;
    char bookname[20];
    int bookid;
    Book *b;
    while(choice!=0)
    {
        cout<<"图书维护:"<<endl;
        cout<<"--------------"<<endl;
        cout<<"1:新增   2:更改    3:删除   4:查找    5:显示    6:全删   0:退出"<<endl;
        cin>>choice;
        cout<<"---------------"<<endl;
        switch(choice)
        {
            case1:cout<<"输入图书编号:";
            cin>>bookid;
            cout<<"输入图书名";
            cin>>bookname;
            addbook(bookid,booknamename);break;
            
            
            case2:cout<<"输入图书编号:";
            cin>>bookid;
            b=query(bookid);
            if(b==NULL)
            {
                couot<<"该图书不存在!"<<endl;
                break;
            }
            cout<<"输入新的图书名:";
            cin>>bookname;
            b->setname(bookname);break;


            case3:cout<<"输入图书编号:";
            cin>>bookid;
            b=query(bookid);
            if(b==NULL)
            {
                cout<<"该图书不存在!"<<endl;
                break;
            }
            b->delbook();


           case4:cout<<"输入图书编号:";
            cin>>bookid;
            b=query(bookid);
            if(b==NULL)
            {
                couot<<"该图书不存在!"<<endl;
                break;
            }
           b->list();break;
        

        case5:list();break;
        case6:clear();break;
        }
    }
}




#ifndef _reader_h_
#define _reader_h_
#include <iostream>
using namespace std;
const int Maxbor=5;
class Reader
{
    private:
    int note;
    char name[10];
    int borbook [Maxbor];

    public:
    Reader(){}
    char *getname();
    int getnote();
    int getnumber();
    void setname(char na[]);
    void delbook();
    void addreader(int n,char *na);
    void borrowbook(int bookid);
    void retbook(int bookid);
    void list();
};
#endif

    
    
#include<iomainip.h>
#include "stdafx.h"
#include "reader.h"

const int Maxbor=5;
#include <iostream>
char *Reader::getname()
{
    return name;
}

int Reader::getnote()
{
    return note;
}

int Reader::getnumber()
{
    return number;
}

void Reader::Setname(char na[])
{
    strcpy(name,na);
}

void Reader ::addreader(int n,char *na)
{
    note=0;
    number=n;
    strcpy(name,na);
    for(int i=0;i<Maxber;i++)
    {
        borbook[i]=0;
    }
}

void Reader::delbook()
{
    note=1;
}

void Reader::borrowbook(int bookid)
{
    for(int i=0;i<Maxbar;i++)
    {
        if(borbook[i]==0)
        {
            borbook[i]=bookid;
            return;
        }
    }
}

int Reader::retbook(int bookid)
{
    for(int i=0;i<=Maxbar;i++)
    {
        if(borbook[i]==bookid)
        {
            borbook[i]=0;
            return 1;
        }
        return 0;
    }
}

void Reader::list()
{
    cout<<setw(5)<<number<<setw(10)<<name<<"借书编号:[";
    for(int i=0;i<Maxbor;i++)
    {
        if(borbook[i]=0;i<Maxbor;i++)
        if(borbook[i]==0)
        cout<<borbook[i]<<" ";
        cout<<"]"<<endl;
    }
    }
}


#ifndef _rdatabase_h_
#define _rdatebase_h_
#include "reader.h"
#include<iostream>
using namespace std;
const int Maxr=100;
class RDdatabase{
    private:
        int top;
        Reader read[Maxr];
    public:
        RDatabase();
        void clear();
        int addreader(int n,char *na);
        Reader *query(int readerid);
        void list();
        void readerdata();
        ~RDatabase();
};
#endif



#include<fstream>
#include<iostream>
#include "rdatabase.h"
#include"stdafx.h"
using namespace std;
RDatabase::RDatabase()
{
    Reader s;
    top=-1;
    ifstream file;
    file.open("reader.dat", ios::in|ios::binary);
    while(1)
    {
        file.read((char*)&s, sizeof(s));
        if(!file) break;
        top++;
        read[top]=s;
    }
    file.close();
}
void RDatabase::clear()
{
    top=-1;
}
Reader *RDatabase::query(int readerid)
{
    for(int i=0;i<=top;i++)
    {
        if(reader[i].getnumber()==readerid&&read[i].getnote()==0)
            return &read[i];
    }
    return NULL;
}
int RDatabase::addreader(int n,char *na)
{
    Reader *p=query(n);
    if(p==NULL)
    {
        top++;
        read[top].addreader(n,na);
        return 1;
    }
    return 0;
}
void RDatabase::list()
{
    for(int i=0;i<top;i++)
    {
        reader[i].list();
    }
}
RDatabase::~RDatabase()
{
    fstream file;
    file.open("reader.dat", ios::out|ios::binary);
    for(int i=0;i<=top;i++)
    {
        if(read[i].getnote()==0)
            filr.write((char*)&read[i], sizeof(read[i]));
        file.open();
    }
}
void RDatabase::readerdata()
{
    int choice=1;
    char readername[20];
    int readerid;
    Reader *r;
    while(choice!=0)
    {
        cout<<"读者维护: "<<endl;
        cout<<"-----------------------------"<<endl;
        cout<<"1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出"<<endl;
        cin>>choice;
        cout<<"-----------------------------"<<endl;
        switch(choice)
        {
            case 1:cout<<"输入读者编号";
                   cin>>readerid;
                   cout<<"输入读者姓名";
                   cin>>readername;
                   addreader(readerid, readername);break;
            case 2:
                   cout<<"输入读者编号";
                   cin>>readerid;
                   r=query(readerid);
                   if(r==NULL)
                   {
                       cout<<"该读者不存在!"<<endl;
                       break;
                   }
                   cout<<"输入新的姓名";
                   cin>>readername;
                   r->setname(readername);break;
            case 3:cout<<"输入读者编号";
                   cin>>readerid;
                   r=query(readerid);
                   if(r==NULL)
                   {
                       cout<<"该读者不存在"<<endl;
                       break;
                   }
                   r->delbook();

            case 4:cout<<"输入读者编号";
                   cin>>readerid;
                   r=query(readerid);
                   if(r==NULL)
                   {
                       cout<<"该读者不存在!"<<endl;
                       break;
                   }
                   r->list();break;
            case 5:list();break;
            case 6:clear();break;
        }//end switch
    }//end while
}





#include "stdafx.h"
#include"reader.h"
#include"rdatabase.h"
#include"book.h"
#include"bdatabase.h"
#include<iostream>
using namespace std;
int main(int argc, char *argv[])
{
    int choice=1,bookid,readerid;
    RDatabase ReaderDB;
    RDatabase BookDB;
    Reader *r;
    Book *b;
    cout<<""<<endl;
    cout<<"--------------------"<<endl;
    while(choice!=0)
    {
        cout<<"--------------------"<<endl;
        cout<<"";
        cin>>choice;
        cout<<"---------------------"<<endl;
        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->getonshelf==0)
                {cout<<"该书已借出";break;}

                b->borrowbook();

                r->borrowbook(b->getnumber());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->getnumber());break;

            case 3:
                BookDB.bookdata();break;
            case 4:
                ReaderDB.readerdata();break;
        }//end switch
    }//end while
    return 0;
}


#ifndef _book_h_
#define _book_h_
#include<iostream>
using namespace std;
class Book
{
    private:
    int note;
    int number;
    char name[10];
    int oneself;

    public:
    Book(){}
    char *getname();
    int getnote();
    int getnumber();
    void setname(char na[]);
    void delbook();
    void addbook(int n,char *na);
    int borrowbook();
    void retbook();
    void list();
};
    
    
#endif


#include<iomainip>
//#include "stdafx.h"
#include<iostream>
#include "book.h"
using namespace std;
char *Book::getname()
{
    return name;
}

int Book::getnote()
{
    return note;
}

int Book::getnumber()
{
    return number;
}

void Book::setname(char na[])
{
    strcpy(name,na);
}

void Book::addbook(int n,char *na)
{
    note=0;
    number=n;
    strcpy(name,na);
    onshelf=1;
}

void Book::delbook()
{
    note=1;
}

void Book::borrowbook()
{
    onshelf =1;
}

int Book::getonshelf()
{
    return onshelf;
}

void Book::retbook()
{
    onshelf=1;
}

void Book::list()
{
    cout<<setw(5)<<number<<setw(10)<<name<<setw(10)<<onshelf<<endl;
}

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。