图书馆管理系统c++_第1页
图书馆管理系统c++_第2页
图书馆管理系统c++_第3页
图书馆管理系统c++_第4页
图书馆管理系统c++_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录一、 需求分析1二、 程序的主要功能1三、系统总体框架图2四、 程序类的说明3五、 模块分析4六、 比较有特色的函数5七、 存在的不足与对策9八、实践感悟9九、程序源代码91、 需求分析图书馆管理系统是为了方便图书馆管理而开发的一套系统,其操作系统应该简便,容易操作,可以让图书管理员轻松,容易的管理和操作。2、 程序的主要功能1. 录入图书功能该部分为服务器端系统,由图书管理员使用。服务器端由管理员操作,需输入管理员口令。需录入信息入下:书名 作者 出版日期 出版社 书柜号2. 查询图书功能图书查询系统(该部分为客户端及服务器端系统,由借书者或管理员使用,不需输入密码)分类查询 按出版社

2、查询 按作者查询按出版日期查询 按书名查询每次查到所需图书时,都会显示出该图书的概要信息及是否外借。3. 显示所有图书功能显示所有图书信息,包括书名、作者、出版日期、出版社、书柜号。4. 借阅图书功能通过查询功能找到该书,找到并删除该书记录,再次查找时显示已经被借出5. 退出系统三、系统总体框架图图书馆管理输入口令录入图书信息查询图书信息显示所有图书信息借阅图书退出按书柜号查询按书名查询按作者查询按出版社查询按出版日期图1 系统总框架图4、 程序类的说明class Library /Library类的声明,结点类,用于存放图书信息private: /Library类的私有成员 class Bo

3、ok /Book类的声明(在Library类的私有成员中定义Book类 public: /定义Book类的公有成员 Book():next(0) /Book类的构造函数 string id; /定义书柜号为一个字符串形的变量 string name;/书名 string author;/作者 string time;/出版时间 string publisher;/出版社 Book *next;/指向下一结点的指针 ; Book *books;/定义指向图书信息的链表public: /Library的公有成员 Library():books(0);/Library类的构造函数 Library()

4、;/Library类的析构函数 void add(); /录入添加函数 void search();/查询函数 void display();/显示函数 void borrow();/借阅删除函数;5、 模块分析1.添加模块该部分为服务器端系统,由图书管理员使用。服务器端由管理员操作,需输入管理员口令。输入固定口令后,系统将提示管理员输入新添加的职员的信息,插入在链表中。2.查询模块该部分为客户端及服务器端系统,由借书者或管理员使用,不需输入密码。用户可以选择按书柜号、出版社、作者查询、出版日期、书名查询。然后系统用查找函数查找并输出所查找的图书信息以及该本图书是否在架。3. 显示模块显示模块

5、将输出所有图书的相关信息,包括书名、作者、出版日期、出版社、书柜号。4. 借阅模块通过调用查询函数找到该书,找到并删除该书记录,再次查找时显示已经被借出。图书管理员可以通过该模块删除图书。5. 还书模块用户通过输入借阅的图书信息调用调用添加函数添加已归还的图书信息。6、 比较有特色的函数1.添加函数void Library:add() /通过:将成员函数add捆绑到Library类。则add可以调用Library类的私有成员或者成员函数 Book *b=new Book;/ 表示通过book类实例化b这个指针对象 cout<<"输入书柜号:"cin>>

6、;(b->id);/输入书柜号 cout<<"输入书名:"cin>>(b->name);/输入书名 cout<<"输入作者:"cin>>(b->author);/输入作者 cout<<"输入出版日期:"cin>>(b->time);/输入出版日期 cout<<"输入出版社:"cin>>(b->publisher);/输入出版社 if(books=0) books=b;/链表为空的情况,将b的

7、图书信息添加进去 else if(b->id)<(books->id) /如果b的书柜号小于books的书柜号 b->next=books;/books里的图书信息向后移一位 books=b;/将book的信息存入books中 return;/返回到主函数 Book *p,*q;/*p,*q表示通过book类实例化两个指针对象 p=books;/将books里的所有信息传递给p while(p!=0) /当链表不为空的情况下 if(p->id)=(b->id) /通过遍历判别是否书柜号重复 cout<<"此书柜号已存在"<

8、;<endl; delete b;/删除b return;/返回到主函数 else if(p->id)>(b->id)break;/如果p的书柜号大于b的书柜号,结束 else q=p;/将p中的图书信息赋值给q p=p->next;/将p的图书信息传入下一节点 b->next=p; q->next=b; 2.查询函数void Library:search() /通过:将成员函数search捆绑到Library类。则search可以调用Library类的私有成员或者成员函数int i;/存储用户选择的整形变量cout<<"请选择查

9、询方式"<<endl; /选择界面cout<<"1 按书柜号查询"<<endl;cout<<"2 按书名查询"<<endl;cout<<"3 按作者查询"<<endl;cout<<"4 按出版社查询"<<endl;cout<<"5 按出版日期查询"<<endl;cout<<"请输入选择方式:"cin>>i;if(

10、i=1) string id; /书柜号 cout<<"输入书柜号:"cin>>id; Book *b; /*b表示通过book类实例化这个指针对象 b=books; /将books里的所有信息传递给b while(b!=0) /当链表不为空的情况下 if(b->id)=id) break;/遍历找到输入的书柜号 else b=b->next; /指向下一节点的指针 if(b=0)cout<<"查无此书或该书已经外借"<<endl; else cout<<"书柜号 书名 作

11、者 出版日期 出版社"<<endl; cout<<(b->id)<<" "<<(b->name)<<" "<<(b->author)<<" "<<(b->time)<<" "<<(b->publisher)<<endl;/输出图书的信息 cout<<"该书没有外借"<<endl; 3. 删除函数void

12、 Library:borrow() /通过:将成员函数borrow捆绑到Library类。则add可以调用Library类的私有成员或者成员函数 string id; cout<<"输入书柜号:"cin>>id; Book *p,*q; /*p,*q表示通过book类实例化两个指针对象 if(books->id)=id) p=books;/将books里的所有信息传递给p books=books->next; /books里的图书信息向后移一位 delete p;/删除结点p else p=books;/将books里的所有信息传递给p

13、while(p!=0) /当链表不为空的情况下 if(p->id)=id) break;/书柜号相同,跳出程序 else /找到删除卡号的上一节点 q=p; p=p->next; if(p=0) /当链表为空的情况下 cout<<"查无此书或者该书已经外借"<<endl; else q->next=p->next;/将后一节点的地址赋值给前一节点的指针域 delete p;/删除结点p 7、 存在的不足与对策由于设计水平和时间的限制,该图书管理系统的功能并不全面。比如缺少归还图书的功能。如果添加归还图书功能,调用添加录入函数,这将导致读者也可以添加图书,权限出现了错误。解决方法可以再创建一个读者类,查询借出的图书记录,如果有该图书

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论