这是我之前期末做到,要的就拿走吧
#include
#include
#include
#include
#include
using namespace std;
const int Maxr=100;//最多的读者
const int Maxb=100;//最多的图书
const int Maxbor=5;//每位读者最多借五本书
//读者类,实现对读者的信息的描述
class Reader
{
public:
Reader() {}
char *getName() {return name;} //获取姓名
int getFlag() {return flag;} //获取删除标记
int getNum() {return num;} //获取读者编号
void setname(char na[]) //设置姓名
{
strcpy(name,na);
}
void delbook(){ flag=1; }//设置删除标记 1:已删 0:未删
void addreader(int n,char *na)//增加读者
{
flag=0;
num=n;
strcpy(name,na);
for(int i=0;i borbook[i]=0; } void borrowbook(int bookid)//借书操作 { for(int i=0;i { if (borbook[i]==0) { borbook[i]=bookid; return; } } } int retbook(int bookid)//还书操作 { for(int i=0;i { if(borbook[i]==bookid) { borbook[i]=0; return 1; } } return 0; } void disp()//读出读者信息 { cout << setw(5) << num < for(int i=0;i if(borbook[i]!=0) cout << borbook[i] << "|"; cout << "]"< } private: int flag; //删除标记 1:已删 0:未删 int num; //读者编号 char name[10]; //读者姓名 int borbook[Maxbor];//所借图书 }; //读者类库,实现建立读者的个人资料 class RDatabase { private: int top; //读者记录指针 Reader read[Maxr];//读者记录 public: RDatabase() //构造函数,将reader.txt读到read[]中 { Reader s; top=-1; fstream file("reader.txt",ios::in);//打开一个输入文件 while (1) { file.read((char *)&s,sizeof(s)); if (!file)break; top++; read[top]=s; } file.close(); //关闭 reader.txt } void clear()//删除所有读者信息 { top=-1; } int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n); if (p==NULL) { top++; read[top].addreader(n,na); return 1; } return 0; } Reader *query(int readerid)//按编号查找 { for (int i=0;i<=top;i++) if (read[i].getNum()==readerid && read[i].getFlag()==0) { return &read[i]; } return NULL; } void disp() //输出所有读者信息 { for (int i=0;i<=top;i++) read[i].disp(); } void readerdata();//读者库维护 ~RDatabase() //析构函数,将read[]写到reader.txt文件中 { fstream file("reader.txt",ios::out); for (int i=0;i<=top;i++) if (read[i].getFlag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); } }; void RDatabase::readerdata() { char choice; char rname[20]; int readerid; Reader *r; while (choice!='0') { cout<<"★ ★ ★ ★ ★ ★ ★ ★ ★ 读 者 信 息 ★ ★ ★ ★ ★ ★★ ★ ★"< cout<<"-------------------------------------------------------------------------------"< cout<<"☆ ☆ ☆ ☆ 1、新 增 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 2、更 改 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 3、删 除 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 4、查 找 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 5、显 示 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 6、全 删 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 0、退 出 ☆ ☆ ☆ ☆"< cin >> choice; switch (choice) { case '1': system("cls"); cout << "输入读者编号:"; cin >> readerid; cout << "输入读者姓名:"; cin >> rname; addreader (readerid,rname); system("pause"); system("cls"); break; case '2': system("cls"); cout << "输入读者编号:"; cin >> readerid; r=query(readerid); if (r==NULL) { cout << " 不好意思,该读者不存在 "< break; } cout << "输入新的姓名:"; cin >> rname; r->setname(rname); system("pause"); system("cls"); break; case '3': system("cls"); cout << " 输入读者编号:"; cin >> readerid; r=query(readerid); if (r==NULL) { cout <<" 该读者不存在" << endl; break; } r->delbook(); system("pause"); system("cls"); break; case '4': system("cls"); cout << "读入读者编号:"; cin >> readerid; r=query(readerid); if (r==NULL) { cout <<"不好意思,该读者不存在"<< endl; system("pause"); system("cls"); break; } r->disp(); break; case '5': system("cls"); disp(); system("pause"); system("cls"); break; case '6': system("cls"); clear(); system("pause"); system("cls"); break; case '0': break; default:cout<<"输入错误,请从新输入:";break; } } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Book { public: Book(){} char *getName() { return name; }//获取姓名 int getNum(){ return num; }//获取图书编号 int getFlag(){ return flag; }//获取删除标记 void setname(char na[])//设置书名 { strcpy(name,na); } void delbook(){ flag=1;}//删除图书 void addbook(int n,char *na)//增加图书 { flag=0; num=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) << num << setw(18) << name << setw(10) <<(onshelf==1? "在架":"已借") < } private: int flag;//删除标记 1:已删 0:未删 int num;//图书编号 char name[20];//书名 int onshelf;//是否再架 1:再架 2:已借 }; //图书库类,实现对图书的维护,查找,删除等 class BDatabase { 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 (NULL==p) { top++; book[top].addbook(n,na); return 1; } return 0; } Book *query(int bookid)//查找图书 { for (int i=0;i<=top;i++) if (book[i].getNum()==bookid &&book[i].getFlag()==0) { return &book[i]; } return NULL; } void bookdata();//图书库维护 void disp() { for (int i=0;i<=top;i++) if (book[i].getFlag()==0) book[i].disp(); } ~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstream file("book.txt",ios::out); for (int i=0;i<=top;i++) if (book[i].getFlag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } private: int top; //图书记录指针 Book book[Maxb]; //图书记录 }; void BDatabase::bookdata() { char choice; char bname[40]; int bookid; Book *b; while (choice!='0') { cout<<"★ ★ ★ ★ ★ ★ ★ ★ ★ 图 书 信 息 ★ ★ ★ ★ ★ ★★ ★ ★"< cout<<"-------------------------------------------------------------------------------"< cout<<"☆ ☆ ☆ ☆ 1、新 增 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 2、更 改 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 3、删 除 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 4、查 找 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 5、显 示 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 6、全 删 图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 0、退 出 ☆ ☆ ☆ ☆"< cin >> choice; switch (choice) { case '1': system("cls"); cout << "输入图书编号:"< cin >> bookid; cout << "输入图书书名:"< cin >> bname; addbook(bookid,bname); system("pause"); system("cls"); break; case '2': system("cls"); cout << "输入图书编号:"< cin >> bookid; b=query(bookid); if (b==NULL) { cout << " 不好意思,该图书不存在 "< system("pause"); system("cls"); break; } cout << "输入新的书名:"< cin >> bname; b->setname(bname); break; case '3': system("cls"); cout <<" 读入图书编号:"< cin >> bookid; b=query(bookid); if (b==NULL) { cout <<" 不好意思,该图书不存在" << endl; break; } b->delbook(); system("pause"); system("cls"); break; case '4': system("cls"); cout << " 读入图书编号:"< cin >> bookid; b=query(bookid); if (b==NULL) { cout <<" 不好意思,该图书不存在"<< endl; break; } b->disp(); system("pause"); system("cls"); break; case '5': system("cls"); disp(); system("pause"); system("cls"); break; case '6': system("cls"); clear(); system("pause"); system("cls"); break; case '0': break; default:cout<<"输入错误,请从新输入:"; } } } //main() 函数的实现,程序的主界面的引导 int main(void) { char choice; int bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!='0') { cout<<"★ ★ ★ ★ ★ ★ ★ ★ ★ ★ 欢 迎 使 用 本 系 统 ★ ★ ★ ★ ★ ★ ★ ★★ ★"< cout<<"★ ★ ★ ★ ★ ★ ★ ★ ★ 请 根 据 提 示 选 择 操 作 ★ ★ ★ ★ ★ ★★ ★ ★"< cout<<"-------------------------------------------------------------------------------"< cout<<"☆ ☆ ☆ ☆ 1、借 书 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 2、还 书 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 3、图 书 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 4、读 者 信 息 ☆ ☆ ☆ ☆"< cout<<"☆ ☆ ☆ ☆ 0、退 出 ☆ ☆ ☆ ☆"< cin >> choice; switch (choice) { case '1': system("cls"); cout<<"借书"< cout <<" 请输入读者编号:"; cin >>readerid; cout <<" 请输入图书编号: "; cin >>bookid; r=ReaderDB.query(readerid);//按编号查找 if (NULL==r) { cout <<" 不好意思,不存在该读者"<< endl; system("pause"); system("cls"); break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不好意思,不存在该图书"<< endl; system("pause"); system("cls"); break; } if (b->borrowbook()==0) { cout << " 不好意思,该图书已借出"<< endl; system("pause"); system("cls"); break; } r->borrowbook(b->getNum()); break; case '2': system("cls"); cout<<"还书"< cout<<" 请输入读者编号:"; cin >>readerid; cout << " 请输入图书编号:"; cin >>bookid; r=ReaderDB.query(readerid); if (r==NULL) { cout <<" 不好意思,不存在该读者" << endl; system("pause"); system("cls"); break; } b=BookDB.query(bookid); if (b==NULL) { cout <<" 不好意思,不存在该图书" < system("pause"); system("cls"); break; } b->retbook(); r->retbook(b->getNum()); break; case '3': system("cls"); BookDB.bookdata(); system("pause"); system("cls"); break; case '4': system("cls"); ReaderDB.readerdata(); system("pause"); system("cls"); break; case '0': break; default:cout<<"输入错误,请从新输入:"; } } return 0; }