#include #include #include #include #include #include #define max 3 typedef struct Books{ char book_name[15]; int total_num; int borrow_num; char book_num[15]; Books *next; }books_node; typedef struct Readers{ char reader_name[15]; char reader_no[15]; int reader_borrow_num; struct Reader_borrow_books{ char borrow_books_name[15]; char borrow_books_no[15]; }reader_borrow_book[max]; Readers *next; }readers_node; class books { protected: books_node *broot; public: books(); savebooks(); search_book(); print_books(); virtual add_book()=0; virtual delet_book()=0; }; class manager:public books { protected: readers_node *rroot; public: manager(readers_node*); savereaders(); add_book(); delet_book(); search_reader(); add_reader(); delet_reader(); print_readers(); }; class reader:public books{ private:readers_node* personnel; public: reader(readers_node*); add_book(); reader_borrow(); delet_book(); reader_return(); print_me(); save_readers(readers_node*); }; books::books() { books_node *r; broot=new books_node; r=new books_node; r->next=NULL; broot=r; ifstream inFile; inFile.open("c:\\books.dat",ios::binary); if(inFile.is_open()==-1)cout<<"con't open books.dat"<next=r->next; r->next=node; } inFile.close(); if(i<2)cout<<"暂时没有图书数据"<next; ofstream outFile; outFile.open("c:\\books.dat",ios::binary); while(L) { outFile.write((char*)L,sizeof(books_node)); L=L->next; } outFile.close(); } books::search_book() { char searchedbook[15]; cout<<"输入要查找的书的名子:"; cin>>searchedbook; books_node *r; r=new books_node; r=broot->next; while(r) { if((strcmp(searchedbook,r->book_name))==0) { cout<<"书名:"<book_name<<" 书的总量:"<total_num<<" 借出:"<borrow_num<<" 书的编号:"<book_num<next; } if(r==NULL)cout<<"对不起,没有此书"<next; while(r) { cout<<"书名:" <book_name<<" 书的总量:"<total_num<<" 借出:"<< r->borrow_num <<" 书的编号:"<book_num<next; } delete r; } manager::add_book() { books_node *L; L=new books_node; L=broot; while(1) { books_node *r; r=new books_node; r->next=NULL; cout<<"输入书名:"; cin>>r->book_name; cout<<"输入书的编号:"; cin>>r->book_num; r->borrow_num=0; cout<<"输入总数:"; cin>>r->total_num; r->next=L->next; L->next=r; cout<<"add more?(n终止,其它键继续)"; char sign; cin>>sign; if(sign=='n'||sign=='N') break; } broot=L; savebooks(); } manager::delet_book() { char deleted[15]; cout<<"输入要删除的图书名字:"; cin>>deleted; books_node *node,*L; node=new books_node; L=new books_node; node=broot; while(node->next) { if((strcmp(deleted,node->next->book_name))==0)break; node=node->next; } if(node->next==NULL) { cout<<"sorry!There is no the book!"<next->borrow_num==0) { node->next=node->next->next; savebooks(); } else cout<<"对不起,暂时不能删除,因为还有没有归还的书"<next; ofstream outFile; outFile.open("c:\\Readers.dat",ios::binary); while(L) { outFile.write((char*)L,sizeof(readers_node)); L=L->next; } outFile.close(); } manager::add_reader() { readers_node *L; L=new readers_node; L=rroot; int sign=0; while(1) { readers_node *r; r=new readers_node; r->next=NULL; cout<<"输入姓名:"; cin>>r->reader_name; cout<<"输入读者的编号:"; cin>>r->reader_no; r->reader_borrow_num=0; r->next=L->next; L->next=r; cout<<"add more?(n终止,其它键继续)"; char sign; cin>>sign; if(sign=='n'||sign=='N') break; } rroot=L; savereaders(); } manager::delet_reader() { char deleted[15]; cout<<"输入要删除读者的名字:"; cin>>deleted; readers_node *node,*L; node=new readers_node; L=new readers_node; node=rroot; while(node->next) { if((strcmp(deleted,node->next->reader_name))==0)break; node=node->next; } if(node->next==NULL) { cout<<"sorry!There is no the reader!"<next=node->next->next; savereaders(); } } manager::search_reader() { readers_node *r; r=new readers_node; r=rroot->next; char reader[15]; cout<<"输入要查找读者的姓名:"; cin>>reader; while(r) { if((strcmp(reader,r->reader_name))==0) { cout<<"姓名:"<reader_name<<" 编号:"<reader_no<<" 借书总数:"<reader_borrow_num<reader_borrow_num;i++) { cout<<"书名:"<reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<reader_borrow_book[i].borrow_books_no; } break; } else r=r->next; } if(!r)cout<<"没有此人"<next; while(printL) { cout<<"姓名 编号 借书总数"<reader_name<<" "<reader_no<<" "<reader_borrow_num<reader_borrow_num;i++) { cout<<"书名:"<reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<reader_borrow_book[i].borrow_books_no; } printL=printL->next; } delete printL; } reader::reader(readers_node*node) { (personnel)=new readers_node; personnel=node; } reader::add_book() { books_node*node; node=new books_node; node=broot->next; char returned[15]; cout<<"输入要还书的名子:"; cin>>returned; for(int i=0;ireader_borrow_num;i++) { if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))==0)break; } if(i==personnel->reader_borrow_num+1) { printf("不好意思,你没有此书");system("pause"); } else{ while(node) { if((strcmp(node->book_name,returned)==0))break; else node=node->next; } if(node) { personnel->reader_borrow_num--; node->borrow_num--; savebooks(); } else cout<<"对不起,没有你要还的书或者所还书被删除"<reader_borrow_numnext; char borrowed[15]; cout<<"输入要借书的名子:"; cin>>borrowed; while(node) { if((strcmp(node->book_name,borrowed)==0))break; else node=node->next; } if(node&&(node->total_num-node->borrow_num)>0) { strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_books_name,node->book_name); strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num++].borrow_books_no,node->book_num); node->borrow_num++; savebooks(); } else cout<<"对不起,没有你要借的书或者所要借的书已经借完!"<reader_name<<" 编号:"<reader_no<<" 借书总数:"<reader_borrow_num<reader_borrow_num;i++) { printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_borrow_book[i].borrow_books_no); } } void Pause() { getch(); fflush(stdin); } reader::reader_borrow() { delet_book(); } reader::reader_return() { add_book(); } reader::save_readers(readers_node *L) { readers_node *root; root=new readers_node; root=L->next; ofstream outFile; outFile.open("c:\\Readers.dat",ios::binary); while(root) { outFile.write((char*)root,sizeof(readers_node)); root=root->next; } outFile.close(); } readers_node* read_readers() { readers_node *r; r=new readers_node; r->next=NULL; int flag=0; ifstream inFile; inFile.open("c:\\Readers.dat",ios::binary); if(inFile.is_open()==-1) { cout<<"con't open readers.dat"<next=r->next; r->next=node; } inFile.close(); if(flag<2) { cout<<"暂无读者 "<2) { printf("你已经超过输入次数,系统将退出\n"); getch(); } if(strcmp(a,b)==0)break; else cout<<"密码错误,请重新输入\n"; cerr<<"\n"; } } void manager_menu_1(manager M) { int N; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃ 图书管图书管理系统 ┃\n"; cout<<"┃ 菜单 ┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加图书 ┃\n"; cout<<"┃ ②.删除图书 ┃\n"; cout<<"┃ ③.查找图书 ┃\n"; cout<<"┃ ④.输出所有 ┃\n"; cout<<"┃ 退出请按0 ┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--4):( )\b\b"; cin>>N; switch (N) { case 1: M.add_book();getch();break; case 2: M.delet_book();getch();break; case 3: M.search_book();getch();break; case 4: M.print_books();getch();break; case 0: return; } system("cls"); } } void manager_menu_2(manager M) { int N; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃ 图书管图书管理系统 ┃\n"; cout<<"┃ 菜单 ┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①增加读者 ┃\n"; cout<<"┃ ②删除读者 ┃\n"; cout<<"┃③查找读者 ┃\n"; cout<<"┃④输出所有 ┃\n"; cout<<"┃ 退出请按0 ┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--4):( )\b\b"; cin>>N; switch (N) { case 1: M.add_reader();getch();break; case 2: M.delet_reader();getch();break; case 3: M.search_reader();getch();break; case 4: M.print_readers();getch();break; case 0: return; } system("cls"); } } void manager_menu(readers_node*L) { system("cls"); password(); manager Manager(L); int N; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃ 图书管图书管理系统 ┃\n"; cout<<"┃ 菜单 ┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①图书维护 ┃\n"; cout<<"┃②读者维护 ┃\n"; cout<<"┃退出请按0 ┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--2):( )\b\b"; cin>>N; switch (N) { case 1: system("cls"); manager_menu_1(Manager); break; case 2: system("cls"); manager_menu_2(Manager);break; case 0: return; } system("cls"); } } reader_menu(readers_node*L) { char name[15]; cout<<"输入用户名:"; cin>>name; readers_node* node; node=new readers_node; node=L->next; while(node) { if((strcmp(name,node->reader_name))==0) break; else node=node->next; } if(node) { reader Reader(node); int N; while(1) { cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃图书管图书管理系统 ┃\n"; cout<<"┃ 菜单 ┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①借书 ┃\n"; cout<<"┃ ②还书 ┃\n"; cout<<"┃③查找书 ┃\n"; cout<<"┃ ④.输出所有 ┃\n"; cout<<"┃ ⑤自身信息 ┃\n"; cout<<"┃退出请按0 ┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--5):( )\b\b"; cin>>N; switch (N) { case 1: system("cls") ;Reader.reader_borrow();Reader.save_readers(L);break; case 2: system("cls"); Reader.reader_return();Reader.save_readers(L);break; case 3: system("cls");Reader.search_book();system("pls");break; case 4: system("cls");Reader.print_books();getch();break; case 5: system("cls");Reader.print_me(); Pause();break; case 0: return; } system("cls"); } } else { printf("没有这个用户!按任意键继续"); getch(); return; } } main() { readers_node* Reader_root; Reader_root=new readers_node; Reader_root=read_readers(); int N; while(1) { system("cls"); cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"; cout<<"┃ 图书管图书管理系统 ┃\n"; cout<<"┃ 菜单 ┃\n"; cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n"; cout<<"┃①图书管理员 ┃\n"; cout<<"┃ ②.读 者 ┃\n"; cout<<"┃推出请按0 ┃\n"; cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"; cout<<"请输入您的选择(0--2):( )\b\b"; cin>>N; switch (N) { case 1: manager_menu(Reader_root);break; case 2: reader_menu(Reader_root);break; case 0:exit(0);break; } } }