logo资料库

C++图书管理系统.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
//C++程序:图书管理系统 #include #include #include #include const int Maxr=100; //读者上限 const int Maxb=100; //图书上限 const int Maxbor=5; //每个读者最多借借 5 本 class Reader //读者类 { int tag; //删除标记 1:已删,0:未删 int no; //读者编号 char name[10]; //读者姓名 int borbook[Maxbor]; //所借图书 public: Reader() {} char *getname() {return name;} //获取姓名 int gettag() {return tag;} //获取删除标记 int getno() {return no;} //获取读者编号 void setname(char na[]) //设置姓名 { } strcpy(name,na); void delbook() { tag=1; } //设置删除标记
void addreader(int n,char *na) //增加读者 { } tag=0; no=n; strcpy(name,na); for (int i=0;i
}; class RDatabase //读者库类 { 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(); 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].getno()==readerid && read[i].gettag()==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].gettag()==0) file.write((char *)&read[i],sizeof(read[i])); file.close(); { } }; void RDatabase::readerdata() { int choice=1; char rname[20]; int readerid; Reader *r; while (choice!=0) { cout<<"读者维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出 =>"; cin>>choice; switch (choice)
{ case 1: cout<<"输入读者编号:"; cin>>readerid; cout<<"输入读者姓名:"; cin>>rname; addreader(readerid,rname); break; case 2: cout<<"输入读者编号:"; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<"该读者不存在"<>rname; r->setname(rname); break; case 3: cout<<"输入读者编号:"; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<"该读者不存在"<delbook(); break; case 4: cout<<"输入读者编号:"; cin>>readerid; r=query(readerid); if (r==NULL) { cout<<"该读者不存在"<disp(); break; case 5:
disp(); break; case 6: clear(); break; } } } class Book //图书类 { int tag; //删除标记 1:已删 0:未删 int no; //图书编号 char name[20]; //书名 int onshelf; //是否在架 1:在架 0:已借 public: Book() {} char *getname() {return name;} //获得书名 int getno() {return no;} //获得书编号 int gettag() {return tag;} //获得删除标记 void setname(char na[]) //设置书名 { } strcpy(name,na); void delbook() { tag=1; } //删除图书 void addbook(int n,char *na) //增加图书 {
tag=0; no=n; strcpy (name,na); onshelf=1; } int borrowbook() //借书操作 { } if (onshelf==1) { onshelf=0; return 1; } return 0; void retbook() //还书操作 { } onshelf=1; void disp() //输出图书 cout<
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 (p==NULL) { top++; book[top].addbook(n,na); 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; void bookdata(); //图书库维护 void disp() {
分享到:
收藏