《最新c++图书管理系统(完整精华排版).doc》由会员分享,可在线阅读,更多相关《最新c++图书管理系统(完整精华排版).doc(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec+图书管理系统(完整精华排版)c+图书管理系统(完整精华排版)/图书管理系统#include #include #include #include using namespace std;const int Maxb=10000; /最多的图书 class Book/图书类 int tag; /删除标记1:已删0:未删 int no; /图书编号 char name
2、20; /书名 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
3、 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(ti
4、me,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)authorsetw(10)no2s
5、etw(10)dansetw(10)timesetw(10)priceendl; ; 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() /全删
6、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
7、 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 &book
8、i; return NULL;void bookdata(); /图书库维护 void disp() coutsetw(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 (boo
9、ki.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) coutendlendl;cout * * * * * * *
10、 * * * * *endl;cout * 1 添加信息 *endl;cout * 2 修改信息 *endl;cout * 3 删除信息 *endl;cout * 4 信息查询 *endl;cout * 5 显示信息 *endl;cout * 6 全部删除 *endl;cout * 0 退出 *endl;cout * * * * * * * * * * * *endlendl;coutendl choice; /如果输入的编号在菜单里不存在的情况-在for循环内部如果出现这样的错的时候while(choice!=1&choice!=2&choice!=3&choice!=4&choice!=5
11、&choice!=6&choice!=0) coutendl * 您输入的编号在菜单里不存在,请重新输入 *aendlendl; coutchoice;switch (choice) case 1: cout bookid; cout bname; cout bauthor;cout bno2;coutbdan;coutbtime;coutbprice;addbook(bookid,bname,bauthor,bno2,bdan,btime,bprice); cout图书编号bookid添加成功;按任意键返回菜单 ;break; case 2: cout bookid; b=query(boo
12、kid); if (b=NULL) cout 该图书不存在 endl; break; coutendlendl;cout * * * * * * * * * * * *endl;cout * 1 书名 *endl;cout * 2 作者 *endl;cout * 3 分类号 *endl;cout * 4 出版单位 *endl;cout * 5 出版时间 *endl;cout * 0 退出系统 *endl;cout * * * * * * * * * * * *endlendl;coutchoice2;switch(choice2)case 1:cout bname; b-setname(bna
13、me); break;case 2:coutbauthor;b-setauthor(bauthor);break;case 3:coutbno2;b-setno2(bno2);break;case 4:coutbdan;b-setdan(bdan);break;case 5:coutbtime;b-settime(btime); /修改出版时间break;break; case 3: cout bookid; b=query(bookid); if (b=NULL) cout 该图书不存在 delbook(); break; case 4: cout查找方式:endlchoice3;switc
14、h(choice3)case 1: cout bookid; b=query(bookid); if (b=NULL) cout 该图书不存在 disp(); break;case 2: coutbname; b=query2(bookid,bname); if(b=NULL) cout该图书不存在啊!disp(); break;case 3: coutbauthor; b=query3(bookid,bauthor); if(b=NULL) cout该作者不存在!disp(); break;break; case 5: disp(); break; case 6: clear(); brea
15、k; coutendl 谢谢您的支持! 欢迎下次继续使用 endlendlendl; void main() system(color 2f); coutendl; coutendl; cout *endl; cout 请登录! endl; cout *endl;coutendl; coutendl;int q=0,w=1001;number:int e;cout请输入账号e;if(q=e) number1:int r;cout请输入密码r;if (w=r)fstream iofile; if(!iofile) cout打开文件失败!endl; system(cls);BDatabase BookDB; Book *b; int nb; coutendlendl;cout endl;cout endl;cout endl;cout 欢迎使用图书馆信息管理系统 endl;cout endl;cout endl;cout endl;coutendlendlnb;while(nb!=1) coutendl * 您的输入有误 *aendl; coutendlnb;if(nb=1)BookDB.bookdata(); else cout *密码错误!请重新输入*endl;goto number1; else cout *账号错误!请重新输入*endl;goto number;-
限制150内