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

运行效果图:

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

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

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