图书馆
#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; }

更多精彩