图书信息管理系统C++程序设计.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流图书信息管理系统C+程序设计.精品文档.#include<iostream.h>#include<conio.h> /控制台数据输入输出的函数#include<fstream.h>/文件流#include<iomanip.h> /控制数据输出格式#include<string.h>const int Maxb=100; /最多可存储的图书class Book /图书类,实现对图书的描述,图书的编号,书名等功能private: int tag; /删除标记 1:已删 0:未删int no; /登陆号char name20; /书名 char author20;/作者名char sno20;/分类号char cbs20; /出版社int cbtime;/出版时间double bookprice;/图书价格public: Book() /图书信息char *getname()/获取书名 return name; char *getauthorname() /获取作者名 return author;char *getsno()/获取分类号return sno;char *getcbsname()/获取出版社名 return cbs; int getcbtime()/获取出版时间return cbtime;double getbookprice()/获取图书价格return bookprice;int getno()/获取登录号 return no; int gettag()/获取删除标记 return tag; /设置void setname(char na) /设置书名 strcpy(name,na); void setauthorname(char aa)/设置作者名strcpy(author,aa);void setsno(char sa)/设置分类号strcpy(sno,sa);void setcbs(char ca)/设置出版社strcpy(cbs,ca);void setcbtime(int time) /设置时间 cbtime=time;void setbookprice(double price)/设置图书价格 bookprice=price;void delbook() /删除图书char i;cout<<"确定删除吗?Y/N ?"<<endl;cin>>i;if(i='y'|i='Y') tag=1;void addbook(int n,char *na,char *aa,char *sa,char *ca,int time,double price) /增加图书 tag=0; no=n; strcpy(name,na); strcpy(author,aa); strcpy(sno,sa); strcpy(cbs,ca); cbtime=time; bookprice=price;void disp() /输出图书 cout<<setw(6)<<no<<setw(10)<<name<<setw(10)<<author<<setw(10)<<sno<<setw(10)<<cbs<<setw(15)<<cbtime<<setw(15)<<bookprice<<endl; class BDatabase /图书库类,实现对图书的维护,查找,删除等 private: 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() /全删 char i;cout<<"确定全部删除吗?Y/N ?"<<endl;cin>>i;if(i='y'|i='Y') top=-1; int addbook(int n,char *na,char *aa,char *sa,char *ca,int time, double price) /增加图书 Book *p=query1(n); if (NULL=p) top+; booktop.addbook(n,na,aa,sa,ca,time,price); return 1; return 0; Book *query1(int bookid) /按登陆号查找图书 for(int i=0;i<=top;i+) if(booki.getno()=bookid &&booki.gettag()=0) return &booki; return NULL; Book *query2(char a) /按书名查找图书 Book *e; int r=0; for(int i=0;i<=top;i+) if(strcmp(booki.getname(),a)=0 &&booki.gettag()=0) if(r=0) cout<<setw(6)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(10)<<"出版社"<<setw(15)<<"出版时间"<<setw(15)<<"图书价格"<<endl; e=&booki; e->disp(); r+; if(r=0) cout<<"找不到该书!"<<endl; return NULL; Book *query3(char a) /按作者查找图书 Book *e; int r=0; for(int i=0;i<=top;i+) if(strcmp(booki.getauthorname(),a)=0 &&booki.gettag()=0) if(r=0) cout<<setw(6)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"出版社"<<setw(15)<<"出版时间"<<setw(15)<<"图书价格"<<endl; e=&booki; e->disp(); r+; if(r=0) cout<<"找不到该书!"<<endl; return NULL; void bookdata(); /图书库信息void disp() 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() char choice1; char bname40;/书名char auname40;/作者名char sno40;/分类号char cname40;/出版社int time;/出版时间double price;/价格char ch;int choice2;int bookid;Book *b; while (choice1!='0') cout<<"nttt* 图 书 信 息 *n"<<endl; cout<<"ttt* 1.新增图书信息 *"<<endl; cout<<"ttt* 2.更改图书信息 *"<<endl; cout<<"ttt* 3.删除图书信息 *"<<endl; cout<<"ttt* 4.查找图书信息*"<<endl; cout<<"ttt* 5.显示图书信息 *"<<endl; cout<<"ttt* 6.全删图书信息 *"<<endl; cout<<"ttt* 0.返 回 *"<<endl; cout<<"ttt 请选择:" cin>>choice1; switch(choice1) case '1': cout<<"请输入登陆号:" cin>>bookid; b=query1(bookid); if(b!=NULL) cout<<"该编号已经存在,不能添加!"<<endl; break; cout<<"请输入新书书名:" cin>>bname; cout<<"请输入新书作者名:" cin>>auname; cout<<"请输入新书出版社:" cin>>cname;cout<<"请输入新书分类号"cin>>sno;cout<<"请输入新书出版时间:"cin>>time;cout<<"请输入图书价格:"cin>>price; addbook(bookid,bname,auname,sno,cname,time,price); cout<<"添加图书成功!" getch(); break; case '2': cout<<"请输入登录号:" cin>>bookid; b=query1(bookid); if(b=NULL) cout<<"该图书不存在! "<<endl; break; cout<<"该图书的信息是:"<<endl; cout<<setw(6)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(10)<<"出版社"<<setw(15)<<"出版时间"<<setw(15)<<"图书价格"<<endl; b->disp(); cout<<"是否修改?( y/n ):" cin>>ch; if(ch='y'|ch='Y') int a;cout<<"nttt* 图 书 修 改 *n"<<endl; cout<<"ttt* 1.修 改 书 名 *"<<endl; cout<<"ttt* 2.修 改 作 者 *"<<endl; cout<<"ttt* 3.修 改 分类号 *"<<endl; cout<<"ttt* 3.修 改 出 版 社 *"<<endl; cout<<"ttt* 4.修 改 出 版 时 间*"<<endl; cout<<"ttt* 5.修 改 图 书 价 格*"<<endl; cout<<"ttt* 0.返 回 *"<<endl; cout<<"ttt 请选择:" cin>>a; switch(a)case 1: cout<<"请输入新的书名:" cin>>bname; b->setname(bname); break;case 2: cout<<"请输入新的作者:" cin>>auname; b->setauthorname(auname); break;case 3:cin>>sno;b->setsno(sno);break;case 4: cout<<"请输入新书出版社:" cin>>cname; b->setcbs(cname); break;case 5: cout<<"请输入新书出版时间:" cin>>time;b->setcbtime(time); break;case 6: cout<<"请输入图书价格:" cin>>price; b->setbookprice(price); break;case 0: break; cout<<"修改图书成功!" getch(); break; case '3': cout<<"请输入图书登录号:" cin>>bookid; b=query1(bookid); if(b=NULL) cout<<"该图书不存在,无法删除!"<<endl; break; b->delbook(); cout<<"删除成功!" getch(); break; case '4': cout<<"ttt* 1.按图书登录号查找 *"<<endl; cout<<"ttt* 2.按图书书名查找 *"<<endl; cout<<"ttt* 3.按图书作者查找 *"<<endl; cout<<"ttt* 0. 返 回 *"<<endl; cout<<"ttt 请选择:" cin>>choice2; switch(choice2) case 1: cout<<"请输入图书编号:" cin>>bookid; b=query1(bookid); if(b=NULL) cout<<"该图书不存在!" break; cout<<setw(6)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(10)<<"出版社"<<setw(15)<<"出版时间"<<setw(15)<<"图书价格"<<endl; b->disp(); break; case 2: cout<<"请输入图书书名:" cin>>bname; b=query2(bname); break; case 3: cout<<"请输入图书作者:" cin>>auname; b=query3(auname); break; case 0: break; break; case '5': cout<<setw(6)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(10)<<"出版社"<<setw(15)<<"出版时间"<<setw(15)<<"图书价格"<<endl; disp(); getch(); break; case '6': clear(); break; case'0':break; default: cout<<"输入错误,请从新输入(数字为06):" break; /main() 函数的实现,程序的主界面的引导void main() char choice3; BDatabase BookDB; while(choice3!='0')cout<<"ttt 欢迎光临图书管理系统!"<<endl;cout<<"nttt* 图 书 管 理 系 统*nn" cout<<"ttt* 1. 进入系统 *"<<endl; cout<<"ttt* 0. 退 出 *"<<endl; cout<<"ttt 请选择:" cin>>choice3; switch(choice3)case '1': cout<<"ttt欢迎登录图书管理系统"<<endl;BookDB.bookdata();break; case '0': cout<<"ttt欢迎下次使用图书管理系统nn" break;default:cout<<"输入错误,请从新输入:"