C++图书管理系统课程设计_第1页
C++图书管理系统课程设计_第2页
C++图书管理系统课程设计_第3页
C++图书管理系统课程设计_第4页
C++图书管理系统课程设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、目录第一章需求分析3(-)系统总体功能需求3(二)图书借书模块功能分析4(四)图书维护模块功能的需求5(七)离开功能6第二章图书管理系统界而设计7(一)初始界而7(二)图书维护7(三)读者维护界而8(四)图书借还9(五)不存在提示9(六)离开10第三章图书管理系统应用程序代码11(一)读者模块111)读者类,实现对读者的信息的描述112)读者类库,实现建立读者的个人资料13(二)图书模块161图书类,实现对图书的描述,图书的编号,书名,借出,还入等162)图书库类,实现对图书的维护,查找,删除等17(三)主程序模块20niain()函数的实现,程序的主界面的引导20(四)完整程序22第四章结束

2、语32第五章参考文献3233/32图书馆管理系统运用面向对象方法对图书馆管理系统进行分析图书馆管理系统是我国大部分院校或其它部门不可缺少的部分,书籍 是人类精神食粮,尤其对一些学校,图书馆来说,非常重要。在软 件开发中,以计算机图书为主,称“计算机图书管理系统”。计算 机图书管理系统能够为用户实现借阅图书、管理等,随着科学技术 的不断提高,计算机科学日渐成熟,其强大的功能己为人们深刻认识, 它己进入人类社会的各个领域并发挥着越来越重要的作用。作为计 算机应用的一部分,使用计算机对图书资源信息进行管理,具有着手 工管理所无法比拟的优点.例如:查阅迅速、安全性高、可靠性高、 存储量大、保密性好、成

3、木低等。计算机图书管理系统能够单一定 向计算机图书方而,具有实用,精简功能等效率,这些优点能够极 大地提高图书馆管理的效率,也是企业、学校的科学化、正规化管理, 与世界接轨的重要条件。因此,开发这样一套管理软件是很有必要. 木案例开发的是“计算机图书管理系统”第一章需求分析(一)系统总体功能需求图书馆可以为借阅者提供借还书、查询书目等服务。借阅者每 次最多能借5本书。借书员主要负责借还及新增更改书目读者,查 询等工作,图书管理员负责图书信息的增减及读者信息的维护。所 有人员都可以浏览和查询图书信息。经过初步分析,图书馆管理系 统应该具有以下几个模块:1)借书模块2)还书模块3)图书维护模块4)

4、读者维护模块5)提示6)离开(二)图书借书模块功能分析图书借阅功能需要完成借阅者对相应图书的借阅。借阅者的借 阅数量是有限定的,系统会自动检查是超过限定借阅的数量,若超 过限定数量则不允许借阅。若当前要借阅的图书己经被其他人预 约,读者也无法完成借阅。借书模块需求(三)图书还书模块功能分析图书归还功能需要完成图书的归还工作。还书模块需求(四)图书维护模块功能的需求实现对图书的描述,图书的编号,书名,借出,还入等,需要 实现的功能为:图书编目,图书注册,更新书目,图书删除。1)登记新书:将图书的特征信息(书名、图书编号等)存储在 数据库中,图书的借阅、图书信息的查询都是以其作为基础的。2)更新书

5、目:当发现图书信息错误时,可以进行图书信息的修 改。3)图书查找:对图书馆新引进的书进行编制唯一的号码(图书编 号),以便于图书的管理和查找。4)图书删除:将废旧的或丢失的图书信息删除,以减少数据库中 的无用信息,也会减少图书查询中的错误信息。图书维护模块需求(五)读者维护模块功能的需求对读者信息描述,建立读者个人资料,借阅者管理需要实现的功能包括:借阅者注册,借阅者信息更新,借阅者注销,借阅者信 息的查询。1)读者新增:借阅者作为图书馆流通的主体,其信息的注册(将 读者的特征信息存储在数据库中)也是图书馆自动化必须完成的任 务。2)读者信息更改:当发现借阅者信息错误或者当借阅者的某些信 息发

6、生变动时,可以对读者信息进行修改。3)读者删除:由于某些原因需要对该借阅者注销,只有满足条件 的借阅者才能进行注销。4)读者查找:借阅者借阅书籍的历史查询。读者维护模块需求(六)提示功能当出现库存查无此书或读者时,给予相应提示。(七)离开功能实现管理后的系统退出。第二章图书管理系统界面设计()初始界面图书管理系统1借书2还书3图书维护4谏者维护0离开键盘输入相应数字进入相应界而。(二) 图书维护护维方増改除找示删岀 圏新更删查显盖12 3 4 5 6 0选择3,进入图书维护界面,注册图书;1)2)图书新增fM图书更改I3)读入图书编号二1112在架图书查找1读入图书编号;4)图书删除(三)读者

7、维护界而选择4,进入读者维护界而,注册读者。护JL士曽2更改3删降4抉5示&全M0出1)读者新增2)读者更改3)读者删除号在 编存 者不 入 債该4)读者查找谍入讐编号爲借书编轨(四)图书借还1)图书借阅,选择1,进入借书界而。2)图书归还,选择2,进入归还界而。图书编号(五)不存在提示图书管理系统1借书2还书3圏书维护4读者维护0离幵俠入图书编号:2该图书不存在进入系统后,如果有不存在的书籍或读者,给予提示。(六)离开图书管理系统1借书2还书3图书维护4读者维护0离幵管理后的系统退出。第三章图书管理系统应用程序代码程序一共分为3个模块:读者模块,图书模块和主程序模块。读者模块是由刘鸣静负责的

8、,分为读者类和读者库类。读者类 主要实现对读者的信息的描述。读者库类主要实现建立读者的个人 资料。图书模块是由李悦负责的,分为图书类和图书库类。图书类主 要实现对图书的描述,图书的编号,书名,借出,还入等。图书库 类主要实现对图书的维护,查找,删除等。主程序模块是由马春艳负责的,主要实现的是程序的主界而的 引导。(一) 读者模块1)读者类,实现对读者的信息的描述class Readerprivate:int tag; 删除标记1:已删0:未删int no; 读者编号char name(10; 读者姓名int borbookMaxbor ;/r 借图书public:ReaderO char *g

9、etname() return name:/获取姓名int gettagO return tag;)/获取删除标记int getno() return no;/获取读者编号void setname(char naJ) 设置姓需strcpy(name.na);void delbook() tag=l; /设置删除标记1:已删0:未删 void addreadcr(int nxhar 宅na)/增加读者lag=0;no=n;strcpy(namejia);for(int i=0;iMaxbor;i+)borbooki=0;void borrowbook(int bookid)/借书操作for(in

10、t i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;)int retbook(int bookid)/还书操作for(int i=0;iMaxbor;i+)if(borbooki=bookid)borbooki=0;return 1;)return 0;)void disp()/读出读者信息cout setw(5) no setw(10) nameH借书编号:H; for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki T;2)读者类库,实现建立读者的个人资料class RDatabase

11、private:int top;/读者记录指针Reader readfMaxr;/ 读者记录public:RDatabase() 构造函数,将 reader.txt 读到 read中Reader s;lop=-l;fstream file(ureadcr.txtH,ios:in);/ 打开一个输入文件 while (1)(char *)&s.sizcof(s);if(!;top+:readtop=s;)();关闭 reader.txtvoid clcar()删除所有读者信息lop=-i;int addreader(int n.char *na)添加读者时先査找是否存在Reader *p=que

12、ry(n);if (p=NULL)top+;readjtopj.addreader(n.na);return 1;return 0;Reader *query(int readerid)/按编号査找for (int i=0;i=top:i+)if (read(i.getno()=readerid &readi.gettag()=O)return &read(i;return NULL;void disp() 输出所有读者信息for (int i=0;i=top;i+)readi.disp();void readerdata()7/读者库维护-RDatabaseO 析构函数,将read写到rea

13、der.txt文件中 fstream file(ureadc 匚 lx.ios:out);for (int i=0;isetname(rname);break:case 3*:cout 输入读者编号:; cin readerid;r=query(readerid);if (r=NULL)cout H该读者不存在 endl; break:r-delbook();break:case 41cout 读入读者编号:;cin readerid:r=query(readerid);if (r=NULL)cout vv”该读者不存在”vv cndl: break;r-disp();break:case S

14、:disp();break:case 6:clear();break:dcfault:coutH输入错误,请从新输入break;(二)图书模块1)图书类,实现对图书的描述,图书的编号,书名,借岀,还入等class Bookprivate:int tag”/删除标记1:已删0:未删int noy/图书编号char namc20; 书名int onshelfy/是否再架1:再架2:已借 public:Book()char *getnanie() return name; 获取姓需 int getno() return no; 获取图书编号 int gettag() return tag; /获取删

15、除标记 void setnamc(char na)设置书名strcpy(name.na);void delbook() tag=l;删除图书 void addbook(int n,char *na)增加图书tag=O;no=n;strcpy(namejia); onshelf=l;int borrowbook()/借书操作if (onshelf=l) onshelf=0; return 1:return 0;void retbook()/还书操作 onshelf=l;voiddisp()输出图书cout setw(6) no setw( 18) name setw(10)(onshelf=l?

16、初在架叩已借”)endl;;2)图书库类,实现对图书的维护,查找,删除等class BDatabaseprivate:int top;/图书记录指针Book bookMaxb; 图书记录public:BDatabase()/构造函数,将 book.txt 读到 book中Book b:lop=-l;fstream file(ubook.txtHJos:in);while (1)(char *)&b,sizcof(b);if (!file) break;top+;booktop=b;0;void clear()/全删top=-l;)int addbook(int n.char *na)增加图书B

17、ook *p=qucry(n); if (NULL=p)top+:booktop.addbook(n.na);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 NULL;void bookdata()y/图书库维护void disp()for (int i=0;i=top;i+)if (booki.gettag()=0)booki.disp();-BDatabase()/析构函数

18、,将book写到book.txt文件中fstream file(vbook.txtH,ios:out);for (int i=0;isetname(bname);break:case 3*:cout H读入图书编号:,rendl; cin bookid;b=qucry(bookid);if (b=NULL)cout H该图书不存在 endl; break;b-delbook();break;case 4:cout M读入图书编号:Hendl;cin bookid: b=qucry(bookid);if (b=NULL)cout H该图书不存但Nvcndl; break;bdisp();brea

19、k:case 3:disp();break:case 6:clear():break:defauIt:coutH入错误,请从新输入:”;(三) 主程序模块main()函数的实现,程序的主界面的引导int main()char choice;int bookid.readerid: RDatabase RcaderDB: Reader *r;BDatabase BookDB: Book *b;whilc(choicc!=0)cout endlcndlHttt 图书 管理系 统nnn”;cout Htttl 借 书nntN2 还 书 nnttt3 图书维护iiiittt4 读 者维护nnlN0 离

20、 开”vvcndl;cin choice;switch (choice)case T:cin readerid;cout H图书编号:”;cin bookid;r=RcaderDB .query(readerid);/按编号査找case 2:case 3:case 4:if(NULL=r)cout H不存在该读者,不能借书”vvcndl; break;)b=BookDB.query(bookid);if (b=NULL)cout H不存在该图书,不能借书”vvcndl; break:if (b-borrowbook()=0)cout H该图书已借出,不能借书H endl; break;)r-b

21、orrowbook(b-getno();break:coutH还书n读者编号:”;cin readerid;cout 图书编号:;cin bookid;r=ReaderDB .query(readerid);if (r=NULL)cout H不存在该读者,不能还书” endl; break;)b=BookDB.query(bookid);if (b=NULL)cout n不存在该图书,不能还书11 endl; break;b-retbook(); r-retbook(b-getno();break:BookDB.bookdataO; break;RcaderDB.readerdataO;bre

22、ak:dcfault:coul输入错误,请从新输入:;)(四) 完整程序#include include #includc #includc vfstrcam/输入/输出文件流类using namespace std;const int Maxr=100;/最多的读者const int Maxb=1007/最多的图书const int Maxbor=5;每位读者最多借五本书读者类,实现对读者的信息的描述class Readerprivate:int tag; 删除标记1:已删0:未删int no; 读者编号char name10; 读者姓名int borbookMaxbor;所借图书publi

23、c:ReaderOchar *getname() return name;获取姓名int gettagO return tag;获取删除标记int getno() return no;获取读者编号void setname(char na)设置姓名 strcpy(name,na);void lelbook() tag=l; 设置删除标记1:已删0:未删void addreader(int n9char *na)增加读者tag=O;no=n;strcpy(name9na);for(int i=0;iMaxbor;i+)borbooki=0;void borrowbook(int bookid)/借

24、书操作for(int i=0;iMaxbor;i+)if (borbooki=0)borbooki=bookid;return;int retbook(int bookid)/还书操作for(int i=0;iMaxbor;i+)if(borbooki=bookid)borbooki=0;return 1; return 0;void disp()读出读者信息cout setw(5) no setw(10) nameH借书编号:n; for(int i=0;iMaxbor;i+)if(borbooki!=0)cout borbooki nlH;cout,endl;读者类库,实现建立读者的个人资

25、料class RDatabaseprivate:int top;读者记录指针Reader readIaxr; 读者记录public:RDatabase() 构造函数将 reader.txt 读到 read(中Reader s;top=-l;fstream fi!e(Mreader.txtM3os:in);/ 打开一个输入文件while (1)(char *)&s,sizeof(s);if(!;top+;readtop=s;();关闭 reader.txtvoid dear()删除所有读者信息top=-l;int addreader(int n9char *na)/添加读者时先査找是否存在Rea

26、der *p=query(n);if (p=NULL)top+;readtop.addreader(n,na);return 1; return 0;Reader *query(int reader id )/ 编号查找for (int i=0;i=top;i+)if (readi.getno()=rea(leri(l &readi.gettag()=O)return &readi; return NULL;void(lisp() /瀚出所有读者信息for (int i=0;i=top;i+)readi.disp();void readerdata()/者库维护-RDatabaseO 析构函数

27、,将read写到reader.txt文件中 fstream file(,reader.txt,ios:out);for (int l=0;isetnaine(rname);break;case 3:cout ”输入读者编号:;cin readerid;r=querj(readerid); if(r=NULL)cout M该读者不存在vv endl; break;r-delbook();break;case 4:COUt ”读入读者编号:”;cin readerid;r=querjr(readerid);if (r=NULL)cout vv”该读者不存在”vv endl; break;r-dis

28、p();break;case 5:disp();break;case 6:clear();break;default:coutH输入错误,请从新输入:H;break;图书类,实现对图书的描述,图书的编号,书名,借出,还入等 class Bookprivate:int tag/D除标记1:已删0:未删int no;/图书编号char name20;/ 书名int onshelf”/是否再架1:再架2:已借public:Book()char *getname() return name;获取姓名 int getno() return no;/获取图书编号 int gettag() return t

29、ag;/儀取制除标记 void setname(char na)/置书名 strcpy(name9na);void lelbook() tag=l;/J除图书void a(ldbook(int n,char 宕na)增加图书tag=O;no=n;strcpy(name9na);onshelf=l;int boiro、book()借书操作if (onshelf=l)onshelf=0;return 1;return ();void retbook()还书操作onshelf=l;void disp()霜出图书cout setw(6) no setw(18) name setw(10) (onshe

30、lf=l? ”在架忖已借”)endl;图书库类,实现对图书的维护,査找,删除等class BDatabaseprivate:int top; /图书记录指针Book bookMaxb; 图书记录public:BDatabase()构造函数,将 book.txt 读到 book中Book b;top=-l;fstream file(Mbook.txtM4os:in);while (1)(char *)&b 小 izeof(b);if (!file) break;top+; booktop=b;0;void clear。/全删 top=-l;int adclbook(int n,char *na)

31、增加图书Book *p=query (n); if(NULL=p)top+;booktop.addbook(n,na);return 1; return 0;Book *query(int bookid)/査找图书for (int i=0;i=top;l+)if (booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL;void bookdata()/图书库维护void(lisp()for (int l=0;i=top;i+)if (booki.gettag()=0)booki.disp();BDatabase()析构函数,将book写到booktxt文件中fstream fi!e(Mbook.txtM4os:out);for (int i=0;i=top;i+)if (bookisetname( bnanie); break;case 3:cout n读入图书编号:vvendl; cin bookid;b=query(bookid);if(b=NULL)cout M该图书不存在vv endl; break;b-delbook();break;case 4:cout H读入图书编号:”vvendl;cin b

温馨提示

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

评论

0/150

提交评论