最新c++图书管理系统(完整精华排版).doc
Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec+图书管理系统(完整精华排版)c+图书管理系统(完整精华排版)/图书管理系统#include <iostream> #include <iomanip> #include <string> #include <fstream> using namespace std;const int Maxb=10000; /最多的图书 class Book/图书类 int tag; /删除标记1:已删0:未删 int no; /图书编号 char name20; /书名 char author10; /作者名char no210;/输入分类号char dan20;/输入出版单位char time20;/出版时间int price;/价格 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; /获取出版时间char 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 delbook() tag=1; /删除图书 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); 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<<endl; ; class BDatabase /图书库类 int top; /图书记录指针 Book bookMaxb; /图书记录 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+; booktop=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+; booktop.addbook(n,na,au,n2,da,ti,pr); return 1; return 0; Book *query(int bookid) /查找图书 for (int i=0;i<=top;i+) if (booki.getno()=bookid && booki.gettag()=0) return &booki; return NULL; Book *query2(int bookid,char *name) /按书名查找图书 for(int i=0;i<=top;i+) if(strcmp(booki.getname(),name)=0) bookid=booki.getno(); return &booki; return NULL;Book *query3(int bookid,char *author) /按作者查找图书 for(int i=0;i<=top;i+) if(strcmp(booki.getauthor(),author)=0) bookid=booki.getno(); return &booki; return NULL;void bookdata(); /图书库维护 void disp() cout<<setw(10)<<"图书编号"<<setw(10)<<"图书名字"<<setw(10)<<"图书作者"<<setw(10)<<"图书分类"<<setw(10)<<"出版单位"<<setw(10)<<"出版时间"<<setw(10)<<"价格"<<endl;for (int i=0;i<=top;i+) if (booki.gettag()=0) booki.disp(); BDatabase() /析构函数,将book写入book.txt文件中 fstream file("book.txt",ios:out); for (int i=0;i<=top;i+) if (booki.gettag()=0) file.write(char *)&booki,sizeof(booki); file.close(); ; void BDatabase:bookdata() int choice=1; int choice2=1;int choice3=1;int choice4=1;char bname40; char bauthor10;char bno220;char bdan20;char btime20;int bprice;int bookid; Book *b; while (choice!=0) cout<<endl<<endl;cout<<" * * * * * * * * * * * *"<<endl;cout<<" * 1 添加信息 *"<<endl;cout<<" * 2 修改信息 *"<<endl;cout<<" * 3 删除信息 *"<<endl;cout<<" * 4 信息查询 *"<<endl;cout<<" * 5 显示信息 *"<<endl;cout<<" * 6 全部删除 *"<<endl;cout<<" * 0 退出 *"<<endl;cout<<" * * * * * * * * * * * *"<<endl<<endl;cout<<endl<<"请按键选择您需要的操作:" cin >> choice; /如果输入的编号在菜单里不存在的情况-在for循环内部如果出现这样的错的时候while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=0) cout<<endl<<" * 您输入的编号在菜单里不存在,请重新输入 *"<<'a'<<endl<<endl; cout<<" 请选择您需要的操作:" cin>>choice;switch (choice) case 1: 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<<"添加成功;按任意键返回菜单 "break; case 2: cout << " 输入图书编号:" cin >> bookid; b=query(bookid); if (b=NULL) cout << " 该图书不存在" << endl; break; cout<<endl<<endl;cout<<" * * * * * * * * * * * *"<<endl;cout<<" * 1 书名 *"<<endl;cout<<" * 2 作者 *"<<endl;cout<<" * 3 分类号 *"<<endl;cout<<" * 4 出版单位 *"<<endl;cout<<" * 5 出版时间 *"<<endl;cout<<" * 0 退出系统 *"<<endl;cout<<" * * * * * * * * * * * *"<<endl<<endl;cout<<"请输入要更改的:1书名 2作者名 3分类号 4出版单位 5出版时间 0退出"cin>>choice2;switch(choice2)case 1:cout << " 输入新的书名:" /修改图书名cin >> bname; b->setname(bname); break;case 2:cout<<"输入新的作者名:" /修改图书作者cin>>bauthor;b->setauthor(bauthor);break;case 3:cout<<"输入新的分类号:" /修改图书的分类号cin>>bno2;b->setno2(bno2);break;case 4:cout<<"输入新的出版单位:" /修改图书出版单位cin>>bdan;b->setdan(bdan);break;case 5:cout<<"输入新的出版时间:"cin>>btime;b->settime(btime); /修改出版时间break;break; case 3: cout << " 输入图书编号:" cin >> bookid; b=query(bookid); if (b=NULL) cout << " 该图书不存在" << endl; break; b->delbook(); break; case 4: cout<<"查找方式:"<<endl<<"1按图书编号查询 2按图书名查询 3按作者名查询 0退出:" cin>>choice3;switch(choice3)case 1: cout << " 输入图书编号:" /按图书编号查询cin >> bookid; b=query(bookid); if (b=NULL) cout << " 该图书不存在" << endl; break; b->disp(); break;case 2: cout<<"请输入图书名:" cin>>bname; b=query2(bookid,bname); if(b=NULL) cout<<"该图书不存在啊!"<<endl; break; b->disp(); break;case 3: cout<<"请输入作者名:" cin>>bauthor; b=query3(bookid,bauthor); if(b=NULL) cout<<"该作者不存在!"<<endl; break; b->disp(); break;break; case 5: disp(); break; case 6: clear(); break; cout<<endl<<" 谢谢您的支持! 欢迎下次继续使用 "<<endl<<endl<<endl; void main() system("color 2f"); cout<<endl; cout<<endl; cout<<" *"<<endl; cout<<" 请登录! "<<endl; cout<<" *"<<endl;cout<<endl; cout<<endl;int q=0,w=1001;number:int e;cout<<"请输入账号"<<endl;cin>>e;if(q=e) number1:int r;cout<<"请输入密码"<<endl;cin>>r;if (w=r)fstream iofile; if(!iofile) cout<<"打开文件失败!"<<endl; system("cls");BDatabase BookDB; Book *b; int nb; cout<<endl<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" 欢迎使用图书馆信息管理系统 "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<endl<<endl<< " 输入1进入菜单 :"cin>>nb;while(nb!=1) cout<<endl<<" * 您的输入有误 *"<<'a'<<endl; cout<<endl<<" 输入1进入菜单 :" cin>>nb;if(nb=1)BookDB.bookdata(); else cout<<" *密码错误!请重新输入*"<<endl;goto number1; else cout<<" *账号错误!请重新输入*"<<endl;goto number;-