//图书管理系统
#include #include #include #include using namespace std; const int Maxb=10000; //最多的图书 class Book//图书类 { int tag; //删除标记1:已删0:未删 int no; //图书编号 char name[20]; //书名 char author[10]; //作者名 char no2[10];//输入分类号 char dan[20];//输入出版单位 char time[20];//出版时间 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)< }; class BDatabase //图书库类 { int top; //图书记录指针 Book book[Maxb]; //图书记录 public: BDatabase() //构造函数,将book.txt读到book[]中 { Book b; top=-1; fstream file(\"book.txt\ 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,char *au, char *n2, char *da,char *ti,int pr) Book *p=query(n); if (p==NULL) { top++; book[top].addbook(n,na,au,n2,da,ti,pr); return 1; } return 0; } Book *query(int bookid) //查找图书 { for (int i=0;i<=top;i++) if (book[i].getno()==bookid && book[i].gettag()==0) return &book[i]; return NULL; } Book *query2(int bookid,char *name) { for(int i=0;i<=top;i++) if(strcmp(book[i].getname(),name)==0) {bookid=book[i].getno(); return &book[i]; } return NULL; } //按书名查找图书 Book *query3(int bookid,char *author) //按作者查找图书 { for(int i=0;i<=top;i++) if(strcmp(book[i].getauthor(),author)==0) {bookid=book[i].getno(); return &book[i]; } return NULL; } void bookdata(); //图书库维护 void disp() { cout< if (book[i].gettag()==0) book[i].disp(); } ~BDatabase() //析构函数,将book[]写入book.txt文件中 { fstream file(\"book.txt\ for (int i=0;i<=top;i++) if (book[i].gettag()==0) file.write((char *)&book[i],sizeof(book[i])); file.close(); } }; void BDatabase::bookdata() { int choice=1; int choice2=1; int choice3=1; int choice4=1; char bname[40]; char bauthor[10]; char bno2[20]; char bdan[20]; char btime[20]; int bprice; int bookid; Book *b; while (choice!=0) { cout< //如果输入的编号在菜单里不存在的情况---在for循环内部如果出现这样的错的时候 while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=0){ 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<<\"图书编号\"< case 2: cout << \" 输入图书编号:\"; cin >> bookid; b=query(bookid); if (b==NULL) { cout << \" 该图书不存在\" break; } cout< << cout<<\" * * * * * * * * * * * *\"< 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<<\"查找方式:\"< switch(choice3) { case 1: {cout << \" 输入图书编号:\"; cin >> bookid; b=query(bookid); if (b==NULL) { cout << \" 该图书不存在\" break; } b->disp(); //按图书编号查询 endl; << } break; case 2: { cout<<\"请输入图书名:\"; cin>>bname; b=query2(bookid,bname); if(b==NULL) { cout<<\"该图书不存在啊!\"< } b->disp(); } break; case 3: { cout<<\"请输入作者名:\"; cin>>bauthor; b=query3(bookid,bauthor); if(b==NULL) { cout<<\"该作者不存在!\"< } b->disp(); } break; } break; case 5: disp(); break; case 6: clear(); break; } } cout< }; void main() { system(\"color 2f\"); cout< number: int e; cout<<\"请输入账号\"< if(q==e) { number1: int r; cout<<\"请输入密码\"< if (w==r) { fstream iofile; if(!iofile) { cout<<\"打开文件失败!\"< system(\"cls\"); BDatabase BookDB; Book *b; int nb; { cout< ★☆☆★☆☆★☆☆★☆☆★☆☆★☆☆★\"< cout< while(nb!=1) { cout< } if(nb==1) BookDB.bookdata(); } else cout<<\" *********************密码错误!请重新输入 *******************\"< else cout<<\" *****************************************\"< } 账号错误请重新输入 ! 因篇幅问题不能全部显示,请点此查看更多更全内容