首页 > 编程 > C++ > 正文

C++实现简单的图书管理系统

2020-05-23 14:16:12
字体:
来源:转载
供稿:网友

本文给大家分享的是使用C++实现简单的图书管理系统的代码,本系统采用了面向对象的程序设计方法,感兴趣的小伙伴可以参考下。

今天再为大家介绍另一个常用的管理系统——图书管理系统,希望大家可以亲自动手实践一下,下面就与大家一起分享我的劳动成果。

图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:

(1)图书信息录入功能(图书信息用文件保存)

(2)图书信息浏览功能

(3)查询和排序功能:(至少一种查询方式)

.按书名查询

.按作者名查询

(4)图书信息的删除与修改

分享代码如下

 

 
  1. #include<iostream.h> 
  2. #include<conio.h> //控制台数据输入输出的函数 
  3. #include<fstream.h>//文件流 
  4. #include<iomanip.h> //控制数据输出格式 
  5. #include<string.h> 
  6.  
  7. const int Maxr=100 ;//最多的读者数  
  8. const int Maxb=100; //最多的图书数 
  9. const int Maxbor=5; //每位读者最多借的书 
  10.  
  11.  
  12.  
  13. class Book  
  14. {//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能 
  15. private:  
  16. int tag; //删除标记 1:已删 0:未删 
  17. int no; //图书编号 
  18. char name[20]; //书名  
  19. char author[20];//作者 
  20. char fenlei[20];//分类号 
  21. char cbs[20]; //出版社 
  22. int cbtime;//出版时间 
  23. double bookprice;//图书价格 
  24. int onshelf; //是否再架 1:再架 2:已借  
  25. public:  
  26. Book(){;}  
  27. char *getname() 
  28. {//获取书名 
  29. return name;  
  30. }  
  31. char *getauthorname()  
  32. {//获取作者名 
  33. return author; 
  34. }  
  35.  
  36. char *getfenlei() 
  37. {//获取分类号 
  38. return fenlei; 
  39. char *getcbsname() 
  40. {//获取出版社名  
  41. return cbs;  
  42. }  
  43. int getcbtime() 
  44. {//获取出版时间 
  45. return cbtime; 
  46. double getbookprice() 
  47. {//获取图书价格 
  48. return bookprice; 
  49. int getno() 
  50. {//获取图书编号 
  51. return no;  
  52. int gettag() 
  53. {//获取删除标记  
  54. return tag;  
  55.  
  56. void setname(char na[])  
  57. {//设置书名 
  58. strcpy(name,na);  
  59. }  
  60. void setauthorname(char aa[]) 
  61. {//设置作者名 
  62. strcpy(author,aa); 
  63. void setfenlei(char fe[]) 
  64. {//设置分类号 
  65. strcpy(fenlei,fe); 
  66. void setcbs(char ca[]) 
  67. {//设置出版社 
  68. strcpy(cbs,ca); 
  69.  
  70. void setcbtime(int time)  
  71. {//设置时间 
  72. cbtime=time; 
  73. }  
  74. void setbookprice(double price) 
  75. {//设置图书价格 
  76. bookprice=price; 
  77. void setonshelf(int oa)  
  78. onshelf=oa; 
  79. }  
  80. void delbook() 
  81. {//删除图书 
  82. char i; 
  83. cout<<"确定删除吗?Y/N ?"<<endl; 
  84. cin>>i; 
  85. if(i=='y'||i=='Y'
  86. tag=1; 
  87. }  
  88. void addbook(int n,char *na,char *aa,char *fe,char *ca,int time,double price,int oa)  
  89. {//增加图书  
  90. tag=0;  
  91. no=n;  
  92. strcpy(name,na); 
  93. strcpy(author,aa); 
  94. strcpy(cbs,ca); 
  95. strcpy(fenlei,fe); 
  96. cbtime=time; 
  97. bookprice=price; 
  98. onshelf=oa;  
  99. }  
  100. int borrowbook()  
  101. {//借书操作  
  102. if (onshelf>0)  
  103. {  
  104. onshelf--; 
  105. return 1;  
  106. }  
  107. return 0;  
  108. }  
  109. void retbook() 
  110. {//还书操作 
  111. onshelf++;  
  112. }  
  113. void disp()  
  114. {//输出图书  
  115. cout<<setw(3)<<no<<setw(10)<<name<<setw(10)<<author<<setw(10)<<fenlei<<setw(15)<<cbs<<setw(10)<<cbtime<<setw(10)<<bookprice<<setw(10)<<onshelf<<endl;  
  116. }  
  117. };  
  118.  
  119.  
  120. class BDatabase  
  121. {//图书库类,实现对图书的维护,查找,删除等  
  122. private:  
  123. int top; //图书记录指针 
  124. Book book[Maxb]; //图书记录 
  125. public:  
  126. BDatabase()  
  127. {//构造函数,将book.txt读到book[]中  
  128. Book b;  
  129. top=-1;  
  130. fstream file("book.txt",ios::in);  
  131. while (1)  
  132. {  
  133. file.read((char *)&b,sizeof(b));  
  134. if (!file)  
  135. break;  
  136. top++;  
  137. book[top]=b;  
  138. }  
  139. file.close();  
  140. }  
  141. void clear()  
  142. {//全删  
  143. char i; 
  144. cout<<"确定全部删除吗?Y/N ?"<<endl; 
  145. cin>>i; 
  146. if(i=='y'||i=='Y'
  147. top=-1;  
  148. }  
  149. int addbook(int n,char *na,char *aa,char *fe,char *ca,int time, double price,int oa)  
  150. {//增加图书  
  151. Book *p=query1(n);  
  152. if (NULL==p)  
  153. {  
  154. top++;  
  155. book[top].addbook(n,na,aa,fe,ca,time,price,oa);  
  156. return 1;  
  157. }  
  158. return 0;  
  159. }  
  160. Book *query1(int bookid)  
  161. {//按编号查找图书  
  162. for(int i=0;i<=top;i++)  
  163. if(book[i].getno()==bookid &&book[i].gettag()==0)  
  164. {  
  165. return &book[i];  
  166. }  
  167. return NULL;  
  168. Book *query2(char a[])  
  169. {//按书名查找图书 
  170. Book *e; 
  171. int r=0; 
  172. for(int i=0;i<=top;i++) 
  173. if(strcmp(book[i].getname(),a)==0 &&book[i].gettag()==0)  
  174. {  
  175. if(r==0) 
  176. cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  177. e=&book[i]; 
  178. e->disp(); 
  179. r++;  
  180. }  
  181. if(r==0) 
  182. cout<<"找不到该书!"<<endl; 
  183. return NULL;  
  184. }  
  185. Book *query3(char a[])  
  186. {//按作者查找图书  
  187. Book *e; 
  188. int r=0; 
  189. for(int i=0;i<=top;i++)  
  190. if(strcmp(book[i].getauthorname(),a)==0 &&book[i].gettag()==0)  
  191. {  
  192. if(r==0) 
  193. cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  194. e=&book[i]; 
  195. e->disp(); 
  196. r++;  
  197. }  
  198. if(r==0) 
  199. cout<<"找不到该书!"<<endl; 
  200. return NULL;  
  201. Book *query4(char a[])  
  202. {//按出版社查找图书  
  203. Book *e; 
  204. int r=0; 
  205. for (int i=0;i<=top;i++) 
  206. if (strcmp(book[i].getcbsname(),a)==0 &&book[i].gettag()==0)  
  207. {  
  208. if(r==0)cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  209. e=&book[i]; 
  210. e->disp(); 
  211. r++;  
  212. if(r==0) 
  213. cout<<"找不到该书!"<<endl; 
  214. return NULL;  
  215. }  
  216. void bookdata(); //图书库信息 
  217. void disp()  
  218. {  
  219. for(int i=0;i<=top;i++)  
  220. if(book[i].gettag()==0)  
  221. book[i].disp();  
  222. }  
  223. ~BDatabase()  
  224. {//析构函数,将book[]写到book.txt文件中  
  225. fstream file("book.txt",ios::out);  
  226. for(int i=0;i<=top;i++)  
  227. if(book[i].gettag()==0) 
  228. file.write((char *)&book[i],sizeof(book[i]));  
  229. file.close();  
  230. }  
  231. };  
  232. void BDatabase::bookdata()  
  233. {  
  234. char choice3;  
  235. char bname[40];//书名 
  236. char auname[40];//作者名 
  237. char bfenlei[40];//分类号 
  238. char cname[40];//出版社 
  239. int time;//出版时间 
  240. double price;//价格 
  241. char ch; 
  242. int choice4; 
  243. int bookid; 
  244. int bookod; 
  245. Book *b;  
  246. while (choice3!='0')  
  247. {  
  248. cout<<"/n/t/t/t** 图 书 信 息 **/n"<<endl;  
  249. cout<<"/t/t/t** 1.新 增 **"<<endl; 
  250. cout<<"/t/t/t** 2.更 改 **"<<endl; 
  251. cout<<"/t/t/t** 3.删 除 **"<<endl; 
  252. cout<<"/t/t/t** 4.查 找 **"<<endl; 
  253. cout<<"/t/t/t** 5.显 示 **"<<endl; 
  254. cout<<"/t/t/t** 6.全 删 **"<<endl; 
  255. cout<<"/t/t/t** 0.返 回 **"<<endl;  
  256. cout<<"/t/t/t 请选择:"
  257. cin>>choice3;  
  258. switch(choice3)  
  259. {  
  260. case '1':  
  261. cout<<"请输入新书编号:";  
  262. cin>>bookid; 
  263.  
  264. b=query1(bookid);  
  265. if(b!=NULL)  
  266. {  
  267. cout<<"该编号已经存在,不能添加!"<<endl; 
  268. break;  
  269. cout<<"请输入新书书名:";  
  270. cin>>bname; 
  271. cout<<"请输入新书作者名:";  
  272. cin>>auname; 
  273. cout<<"请输入新书分类号:"
  274. cin>>bfenlei; 
  275. cout<<"请输入新书出版社:";  
  276. cin>>cname; 
  277. cout<<"请输入新书出版时间:"
  278. cin>>time; 
  279. cout<<"请输入图书价格:"
  280. cin>>price; 
  281.  
  282. cout<<"请输入新书数量:";  
  283. cin>>bookod; 
  284. addbook(bookid,bname,auname,bfenlei,cname,time,price,bookod); 
  285.  
  286.  
  287. char choice2; 
  288. cout<<"/n/t/t/t** 是 否 保 存 Y/N ?**/n"<<endl; 
  289. cout<<"/t/t/t** 1. Y 保 存 **"<<endl; 
  290. cout<<"/t/t/t** 0. N 不 保 存 **"<<endl; 
  291. cout<<"/t/t/t 请 选 择: "
  292. cin>>choice2; 
  293. switch(choice2) 
  294. case '1'
  295.  
  296.  
  297. cout<<"添加图书成功!"
  298.  
  299. break
  300. case '0'
  301.  
  302. break
  303. getch();  
  304. break;  
  305. case '2':  
  306. cout<<"请输入图书编号:";  
  307. cin>>bookid;  
  308. b=query1(bookid);  
  309. if(b==NULL)  
  310. {  
  311. cout<<"该图书不存在! "<<endl; 
  312. break;  
  313. cout<<"该图书的信息是:"<<endl; 
  314. cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  315. b->disp(); 
  316. cout<<"是否修改?( y/n ):"
  317. cin>>ch; 
  318. if(ch=='y'||ch=='Y'
  319. {int a; 
  320. cout<<"/n/t/t/t** 图 书 修 改 **/n"<<endl;  
  321. cout<<"/t/t/t** 1.修 改 书 名 **"<<endl; 
  322. cout<<"/t/t/t** 2.修 改 作 者 **"<<endl; 
  323. cout<<"/t/t/t** 3.修 改 分 类 号 **"<<endl; 
  324. cout<<"/t/t/t** 4.修 改 出 版 社 **"<<endl; 
  325. cout<<"/t/t/t** 5.修 改 出 版 时 间**"<<endl; 
  326. cout<<"/t/t/t** 6.修 改 图 书 价 格**"<<endl; 
  327. cout<<"/t/t/t** 7.修 改 图 书 数 量**"<<endl; 
  328. cout<<"/t/t/t** 0.返 回 **"<<endl;  
  329. cout<<"/t/t/t 请选择:"
  330. cin>>a;  
  331. switch(a) 
  332. case 1: cout<<"请输入新的书名:";  
  333. cin>>bname; b->setname(bname); break
  334. case 2: cout<<"请输入新的作者:"
  335. cin>>auname; b->setauthorname(auname); break
  336. case 3: cout<<"请输入新的分类号:"
  337. cin>>bfenlei; b->setfenlei(bfenlei); break
  338. case 4: cout<<"请输入新书出版社:"
  339. cin>>cname; b->setcbs(cname); break
  340. case 5: cout<<"请输入新书出版时间:"
  341. cin>>time;b->setcbtime(time); break
  342. case 6: cout<<"请输入图书价格:"
  343. cin>>price; b->setbookprice(price); break
  344. case 7: cout<<"请输入新的存量:";  
  345. cin>>bookod; b->setonshelf(bookod); break
  346. case 0: break
  347. cout<<"修改图书成功!"
  348. getch();  
  349. break
  350. case '3':  
  351. cout<<"请输入图书编号:";  
  352. cin>>bookid;  
  353. b=query1(bookid);  
  354. if(b==NULL)  
  355. {  
  356. cout<<"该图书不存在,无法删除!"<<endl; 
  357. break;  
  358. }  
  359. b->delbook(); 
  360. cout<<"删除成功!"
  361. getch(); 
  362. break;  
  363. case '4':  
  364. cout<<"/n/t/t/t** 1.按图书编号查找 **"<<endl; 
  365. cout<<"/t/t/t** 2.按图书书名查找 **"<<endl; 
  366. cout<<"/t/t/t** 3.按图书作者查找 **"<<endl; 
  367. cout<<"/t/t/t** 4.按图书出版社查找**"<<endl; 
  368. cout<<"/t/t/t** 0. 返 回 **"<<endl; 
  369. cout<<"/t/t/t 请选择:";  
  370. cin>>choice4; 
  371. switch(choice4) 
  372. case 1:  
  373. cout<<"请输入图书编号:";  
  374. cin>>bookid; 
  375. b=query1(bookid); 
  376. if(b==NULL)  
  377. {  
  378. cout<<"该图书不存在!"
  379. break;  
  380. cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  381. b->disp();  
  382. break;  
  383. case 2:  
  384. cout<<"请输入图书书名:";  
  385. cin>>bname; 
  386. b=query2(bname); 
  387. break
  388. case 3:  
  389. cout<<"请输入图书作者:";  
  390. cin>>auname; 
  391. b=query3(auname); 
  392. break
  393. case 4:  
  394. cout<<"请输入图书出版社:";  
  395. cin>>cname; 
  396. b=query4(cname); 
  397. break
  398. case 0:  
  399. break
  400. break
  401. case '5':  
  402. cout<<setw(3)<<"编号"<<setw(10)<<"书名"<<setw(10)<<"作者"<<setw(10)<<"分类号"<<setw(15)<<"出版社"<<setw(10)<<"出版时间"<<setw(10)<<"图书价格"<<setw(10)<<"存量"<<endl; 
  403. disp(); 
  404. getch();  
  405. break;  
  406. case '6':  
  407. clear();  
  408. break;  
  409. default:  
  410. break;  
  411. }  
  412. }  
  413.  
  414.  
  415. class Reader 
  416. {//读者的信息描述  
  417. private:  
  418. int tag; //删除标记 1表示已删 0表示未删  
  419. int no; //读者编号 
  420. char name[20]; //读者姓名  
  421. int borbook[Maxbor]; //所借图书  
  422. public:  
  423. Reader() //构造函数 
  424. { ; }  
  425. friend ostream &operator<<(ostream &output,Reader &rd) 
  426. {output<<rd.no; 
  427. output<<" "
  428. output<<endl; 
  429. return output;} 
  430. char *getname()  
  431. {//获取姓名  
  432. return name; 
  433.  
  434. }  
  435. int gettag()  
  436. {//获取删除标记  
  437. return tag;  
  438. }  
  439. int getno()  
  440. {//获取读者编号  
  441. return no;  
  442. }  
  443. void setname(char na[])  
  444. {//设置姓名  
  445. strcpy(name,na);  
  446. void delbook()  
  447. {//设置删除标记 1:已删 0:未删  
  448. char i; 
  449. cout<<"确定删除吗?Y/N ?"<<endl; 
  450. cin>>i; 
  451. if(i=='y'||i=='Y'
  452. tag=1;  
  453. }  
  454. void addreader(int n,char *na)  
  455. {//增加读者  
  456. tag=0;  
  457. no=n;  
  458. strcpy(name,na);  
  459. for(int i=0;i<Maxbor;i++)  
  460. borbook[i]=0;  
  461. }  
  462. void borrowbook(int bookid)  
  463. {//借书操作  
  464. for(int i=0;i<Maxbor;i++)  
  465. {  
  466. if (borbook[i]==0)  
  467. borbook[i]=bookid; 
  468. return ;  
  469. }  
  470. }  
  471. }  
  472. int retbook(int bookid)  
  473. {//还书操作  
  474. for(int i=0;i<Maxbor;i++)  
  475. {  
  476. if(borbook[i]==bookid)  
  477. {  
  478. borbook[i]=0; 
  479. cout<<"还书成功!"<<endl; 
  480. return 1;  
  481. }  
  482. cout<<"未借该书,还书失败!"<<endl; 
  483. return 0;  
  484. }  
  485. void disp()  
  486. {//读出读者信息 
  487. int have=0; 
  488. int bz=0; 
  489. cout<<setw(5)<<no<<setw(21)<<name<<setw(15); 
  490. for(int i=0;i<Maxbor;i++)  
  491. if(borbook[i]!=0) 
  492. {  
  493. if(bz==0) 
  494. have=1; 
  495. cout<<"["<<borbook[i]<<"]/t/t"<<endl;  
  496. bz++; 
  497. else 
  498. cout<<"/r/t/t/t/t/t""["<<borbook[i]<<"]/t/t"<<setw(15)<<endl;  
  499. if(have==0) 
  500. cout<<"/t 还未借书"<<endl; 
  501. }; 
  502.  
  503. class RDatabase  
  504. {//读者类库,实现建立读者的个人资料  
  505. private:  
  506. int top; //读者记录指针  
  507. Reader read[Maxr]; //读者记录  
  508. public:  
  509. RDatabase()  
  510. {//构造函数,将reader.txt读到read[]中  
  511. Reader s;  
  512. top=-1;  
  513. fstream file("reader.txt",ios::in); //打开一个输入文件 
  514. while (1)  
  515. {  
  516. file.read((char *)&s,sizeof(s));  
  517. if (!file) 
  518. break;  
  519. top++;  
  520. read[top]=s;  
  521. }  
  522. file.close(); //关闭 reader.txt 文件 
  523. }  
  524. void clear()  
  525. {//删除所有读者信息  
  526. char i; 
  527. cout<<"确定全部删除吗?Y/N ?"<<endl; 
  528. cin>>i; 
  529. if(i=='y'||i=='Y'
  530. top=-1;  
  531. }  
  532. int addreader(int n,char *na)  
  533. {//添加读者时先查找是否存在  
  534. Reader *p=queryid(n);  
  535. if (p==NULL) 
  536. top++;  
  537. read[top].addreader(n,na);  
  538. return 1;  
  539. else 
  540. cout<<"该编号已经存在!"
  541. return 0;  
  542. }  
  543. Reader *queryid(int readerid)  
  544. {//按读者编号查找 
  545. for (int i=0;i<=top;i++)  
  546. if (read[i].getno()==readerid&&read[i].gettag()==0)  
  547. {  
  548. return &read[i];  
  549. }  
  550. return NULL; 
  551. Reader *queryname(char readername[10])  
  552. {//按读者姓名查找 
  553. for (int i=0;i<=top;i++)  
  554. if (strcmp(read[i].getname(),readername)==0 && read[i].gettag()==0)  
  555. {  
  556. return &read[i];  
  557. }  
  558. return NULL;  
  559. }  
  560. void disp()  
  561. {//输出所有读者信息  
  562. for(int i=0;i<=top;i++) 
  563. if (read[i].gettag()==0) 
  564. read[i].disp();  
  565. }  
  566. void readerdata(); //读者库信息 
  567. ~RDatabase()  
  568. {//析构函数,将read[]写到reader.txt文件中 
  569. fstream file("reader.txt",ios::out);  
  570. for (int i=0;i<=top;i++)  
  571. if (read[i].gettag()==0)  
  572. file.write((char *)&read[i],sizeof(read[i]));  
  573. file.close();  
  574. }  
  575. }; 
  576.  
  577. void RDatabase::readerdata()  
  578. char choice1;  
  579. char rname[20];  
  580. int readerid; 
  581. char readername[10]; 
  582. int choice2; 
  583. Reader *r;  
  584. while(choice1!='0'
  585. cout<<"/n/t/t/t** 读 者 信 息 **/n"<<endl; 
  586. cout<<"/t/t/t** 1. 新 增 **"<<endl; 
  587. cout<<"/t/t/t** 2. 更 改 **"<<endl; 
  588. cout<<"/t/t/t** 3. 删 除 **"<<endl; 
  589. cout<<"/t/t/t** 4. 查 找 **"<<endl; 
  590. cout<<"/t/t/t** 5. 显 示 **"<<endl; 
  591. cout<<"/t/t/t** 6. 全 删 **"<<endl; 
  592. cout<<"/t/t/t** 0. 返 回 **"<<endl;  
  593. cout<<"/t/t/t 请选择:"
  594. cin>>choice1;  
  595. switch(choice1)  
  596. {  
  597. case '1':  
  598. cout<<"请输入读者编号:";  
  599. cin>>readerid; 
  600. cout<<"请输入读者姓名:";  
  601. cin>>rname; 
  602. addreader(readerid,rname); 
  603. cout<<"添加读者成功!"<<endl; 
  604. getch(); 
  605. break
  606. case '2':  
  607. cout<<"请输入读者编号:";  
  608. cin>>readerid;  
  609. r=queryid(readerid);  
  610. if(r==NULL)  
  611. {  
  612. cout<<"该读者不存在! "<<endl;  
  613. break;  
  614. }  
  615. cout<<"请输入新的姓名:";  
  616. cin>>rname;  
  617. r->setname(rname);  
  618. cout<<"修改读者成功!"<<endl; 
  619. getch(); 
  620. break
  621. case '3':  
  622. cout<<"请输入读者编号:";  
  623. cin>>readerid;  
  624. r=queryid(readerid);  
  625. if(r==NULL)  
  626. {  
  627. cout<<"该读者不存在!" << endl;  
  628. break;  
  629. }  
  630. r->delbook(); 
  631. cout<<"删除成功!"<<endl; 
  632. getch(); 
  633. break;  
  634. case '4'
  635. cout<<"/n/t/t/t** 1.按读者编号查找 **"<<endl; 
  636. cout<<"/t/t/t** 2.按读者姓名查找 **"<<endl; 
  637. cout<<"/t/t/t** 0.返 回 **"<<endl; 
  638. cout<<"/t/t/t 请选择:";  
  639. cin>>choice2; 
  640. switch(choice2) 
  641. case 1:  
  642. cout<<"请输入读者编号:";  
  643. cin>>readerid; 
  644. r=queryid(readerid);  
  645. if(r==NULL)  
  646. {  
  647. cout<<"该读者不存在!"<< endl;  
  648. break;  
  649. cout<<setw(10)<<"读者编号"<<setw(17)<<"读者姓名"<<setw(20)<<"已借书编号"<<endl; 
  650. r->disp(); 
  651. break;  
  652. case 2:  
  653. cout<<"请输入读者姓名:";  
  654. cin>>readername;  
  655. r=queryname(readername);  
  656. if(r==NULL)  
  657. {  
  658. cout<<"该读者不存在!"<<endl; 
  659. break;  
  660. cout<<setw(10)<<"读者编号"<<setw(17)<<"读者姓名"<<setw(20)<<"已借书编号"<<endl; 
  661. r->disp(); 
  662. break
  663. case 0:  
  664. break
  665. break
  666. case '5'
  667. cout<<setw(10)<<"读者编号"<<setw(17)<<"读者姓名"<<setw(20)<<"已借书编号"<<endl; 
  668. disp(); 
  669. getch();  
  670. break;  
  671. case '6':  
  672. clear(); 
  673. break;  
  674. default:  
  675. break;  
  676. }  
  677. }  
  678.  
  679.  
  680. class maindesk //实现程序的主界面  
  681. {  
  682. char choice5;  
  683. char choice2; 
  684. double xh,mm; 
  685. int bookid,readerid;  
  686. RDatabase ReaderDB;  
  687. Reader *r;  
  688. BDatabase BookDB;  
  689. Book *b; 
  690. public
  691. maindesk() {;} 
  692.  
  693. int denglu() 
  694.  
  695. int k=0; 
  696. cout<<"/n/t/t/t 欢 迎 光 临 图 书 馆 管 理 系 统!"<<endl; 
  697. cout<<"/t/t/t 您 共 有 3 次 登 陆 机 会"<<endl; 
  698. while(choice2!='0'
  699. { ++k; 
  700. cout<<"/t/t/t ** 1. 登 录 **"<<endl; 
  701. cout<<"/t/t/t ** 0. 退 出 **"<<endl; 
  702. cout<<"/t/t/t 请 选 择: "
  703. cin>>choice2; 
  704. switch (choice2) 
  705.  
  706. case '1'
  707.  
  708. cout<<"请输入学号和密码"<<endl; 
  709. cin>>xh>>mm; 
  710.  
  711.  
  712.  
  713. if((xh>=138325039)&&(xh<=138325039)&&(xh==mm)) 
  714. cout<<"登录成功"<<endl;  
  715. enterdesk(); 
  716.  
  717. if((xh<138325039)||(xh>138325039)||(xh!=mm)) 
  718. {cout<<"登录失败:您还有"<<3-k<<"次登陆机会"<<endl; 
  719. if(k>=3) 
  720. {  
  721. cout<<"您已超过登录次数上限,系统自动退出!"<<endl; 
  722. return 1; 
  723.  
  724. continue
  725. break
  726.  
  727. case '0'
  728. break;} 
  729. return 1; 
  730. return 0; 
  731.  
  732. void enterdesk() 
  733. while(choice5!='0')  
  734. {  
  735. cout<<"/n/t/t/t**** 图 书 管 理 系 统****/n/n";  
  736. cout<<"/t/t/t** 1.图 书 信 息 **"<<endl; 
  737. cout<<"/t/t/t** 2.读 者 信 息 **"<<endl; 
  738. cout<<"/t/t/t** 3.借 阅 图 书 **"<<endl; 
  739. cout<<"/t/t/t** 4.归 还 图 书 **"<<endl; 
  740. cout<<"/t/t/t** 0. 退 出 **"<<endl;  
  741. cout<<"/t/t/t 请选择:"
  742. cin>>choice5;  
  743. switch (choice5)  
  744. {  
  745.  
  746.  
  747. case '1':  
  748. BookDB.bookdata();  
  749. break;  
  750. case '2':  
  751. ReaderDB.readerdata();  
  752. break;  
  753. case '3'
  754. cout<<"/t/t/t/t借书操作"<<endl; 
  755. cout<<"请输入借书读者编号:";  
  756. cin>>readerid; 
  757. r=ReaderDB.queryid(readerid);  
  758. if(NULL==r)  
  759. {//按编号查找是否有该读者  
  760. cout<<"不存在该读者,不能借书!"<<endl; 
  761. break;  
  762. }  
  763. cout<<"请输入要借图书编号:";  
  764. cin>>bookid;  
  765. b=BookDB.query1(bookid);  
  766. if(b==NULL)  
  767. {//按编号查找是否有该图书  
  768. cout<<"不存在该图书,不能借书!"<<endl; 
  769. break;  
  770. }  
  771. if(b->borrowbook()==0)  
  772. {  
  773. cout<<"该图书已借完,不能借书!"<<endl; 
  774. break;  
  775. cout<<"读者借书成功!"<<endl; 
  776. r->borrowbook(b->getno()); 
  777. break;  
  778. case '4':  
  779. cout<<"/t/t/t/t还书操作"<<endl; 
  780. cout<<"请输入还书读者编号:";  
  781. cin>>readerid; 
  782. r=ReaderDB.queryid(readerid); 
  783. if(r==NULL)  
  784. {  
  785. cout<<"不存在该读者,不能还书"<<endl; 
  786. break;  
  787. }  
  788. cout<<"请输入要归还图书编号:";  
  789. cin>>bookid;  
  790. b=BookDB.query1(bookid);  
  791. if(b==NULL)  
  792. cout<<"不存在该图书,不能还书"<<endl;  
  793. break;  
  794. b->retbook();  
  795. r->retbook(b->getno()); 
  796. break
  797. case '0'
  798. break
  799. default:  
  800.  
  801. break;  
  802. }  
  803. }  
  804. }; 
  805. void main() //主函数 
  806. maindesk yourDesk; 
  807. if(yourDesk.denglu()) 
  808. cout<<"/t/t 谢 谢 使 用 , 再 见 !"<<endl; 
  809.  

运行效果图:

C++实现简单的图书管理系统

以上就是本文的全部内容,希望大家可以喜欢,抓紧动手实现吧

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表