C++图书管理系统.docx

上传人:牧羊曲112 文档编号:3153674 上传时间:2023-03-11 格式:DOCX 页数:22 大小:42.91KB
返回 下载 相关 举报
C++图书管理系统.docx_第1页
第1页 / 共22页
C++图书管理系统.docx_第2页
第2页 / 共22页
C++图书管理系统.docx_第3页
第3页 / 共22页
C++图书管理系统.docx_第4页
第4页 / 共22页
C++图书管理系统.docx_第5页
第5页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C++图书管理系统.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统.docx(22页珍藏版)》请在三一办公上搜索。

1、C+图书管理系统北华大学 C+课程实习报告 图书管理系统 学 院:电气信息工程学院 专 业:电子信息工程 班 级: 学 号: 姓 名: 指导教师: 图书管理系统 一, 需求分析 利用C+语言编程,设计图书管理系统,实现图书信息管理和读者信息管理 1. 图书录入:输入类别、名称、编号、作者、价钱等; 2. 图书查询:运用编号查询、书名查询和类别查询三种方法; 3. 图书借阅:选中图书,并输入借书者信息; 4. 图书归还: 5. 显示所有:输出所有图书信息; 6. 显示已借:显示已借图书,并输出图书信息和借书者信息; 7. 读者信息:输入读者的编号、姓名 8. 读者借阅:显示读者借阅图书的情况 9

2、. 读者管理:增添删除读者的信息,查看读者所有信息 10. 其他功能 图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书馆和用户借阅资料繁多,包含很多的信息数据的管理。介于这一现象,我们对于图书馆的借阅管理系统进行了全面的分析处理,在信息高速发展的今天,促进图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。 我的系统针对的是图书管理,面对大量纷繁复杂的图书管理工作,和不同图书的借出和归还,需要设计一个合理的系统,它应包括图书库,读者库,和图书的借还书信息建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量, 对过时、损失的图书

3、进行删除,达到降低成本提高工作效率的目标。 二, 设计实现 (1)通过提示菜单选择可以进行的操作。 (2)将图书的信息存入文件中。 (3)将图书借阅情况信息存入文件中。 (4)在本系统中可以进行图书管理系统包含的基本操作,其中包括: a)查看所有图书的信息。 b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。 c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。 d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存

4、在则将该图书删除,否则给出提示信息,提示该图书不存在。 e)借阅一本图书,需要给出学号和图书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入SendInfo.txt文件中。 f)查找图书,运用编号查询、书名查询和类别查询三种方法。 g)显示图书,显示所有和已借图书 (5)图书基本信息包括图书类别、名称、编号、作者、价钱。 在本系统中可以进行读者管理系统包含的基本操作,其中包括: a)输入一位读者的编号,从当前所有读者中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。 b)添加一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号

5、的信息, d)删除一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号的信息,如果存在则将该读者删除,否则给出提示信息,提示该读者不存在。 e)查找读者,运用编号查询方法。 (7)读者基本信息包括读者编号、姓名和借阅情况。 程序实现: 设计了四个类,Reader,Rdatabase,Book和Bdatabase, 读者类主要用于存储信息,其中包括:读者的基本属性int tag删除标记 1:已删,0:未删 ; int no读者编号 ;char name10读者姓名; int borbookMaxbor所借图书 ;char *getname 获取姓名 ;int gettag 获取删除标

6、记; int getno获取读者编号;void setname(char na)设置姓名;void delbook设置删除标记;void addreader(int n,char *na) 增加读者;void borrowbook(int bookid) 借书操作;int retbook(int bookid) 还书操作;void disp 输出读者信息; 读者库类包括:int top; 读者记录指针Reader readMaxr; 读者记录RDatabase 构造函数,将reader.txt读到read中void clear 删除所有读者信息int addreader (int n,char

7、 *na) 添加读者时先查找是否存在Reader *query(int readerid) 按编号查找void disp 输出所有读者信息void readerdata; 读者库维护RDatabase 析构函数,将read写入reader.txt文件中 图书类包括:int tag; 删除标记 1:已删 0:未删 ;int no 图书编号 char name20;书名; int onshelf 是否在架 1:在架 0:已借 char *getname return name; 获得书名; int getno return no; 获得书编号; int gettag return tag; 获得删

8、除标记; void setname(char na) 设置书名;void delbook删除图书;void addbook(int n,char *na)增加图书;int borrowbook 借书操作;void retbook 还书操作;void disp 输出图书 图书库类包括:int top;图书记录指针 Book bookMaxb; 图书记录BDatabase 构造函数,将book.txt读到book中void clear 全删int addbook(int n,char *na) 增加图书Book *query(int bookid)查找图书void bookdata; 图书库维护B

9、database析构函数,将book写入book.txt文件中 Reader(读者类) Int tag Int no Char name10 Int borbookmaxbor Reader Char *getname Int gettag Int getno Void setname(char na) Void delreader Void addreader(int n,char *na) Void borrowbook(int bookid) Int retbook(int bookid) Void disp Rdatabase Int top Reader readmaxr Rdata

10、base Void clear Int addreader(int n,char *na) Reader *query(int readerid) Void disp Void readerdata Rdatabase Book Int tag Int no Char name20 Int oneself Book Char *getname Int getno Int gettag Void setname(char na) Void delbook Void addbook(int n,char *na) Void borrowbook Int retbook Void disp BDat

11、abase Void clear Int addbook(int n,char *na) book *query(int bookid) Void disp Void bookdata BDatabase Bdatabase Int top Book bookmaxb 三, 测试结果 首页: 图书信息: 读者信息,读者借书: 借书成功后,图书信息和读者信息的变化 增加图书: 增加读者: 读者借已经被借走的书: 一个读者可以借,多本书, 读者不在读者信息中,借书的情况: 读者还书,及还书后的图书信息和读者信息: 读者不在读者信息中,还书的情况: 该图书没有被该读者借走: 查找图书: 显示图书,及

12、删除全部图书,再显示: 查找读者: 删除编号1的读者,并显示: 全删读者信息并显示: 四, 结论及需改进的问题 图书管理系统是我做C+程序设计的中,第一个大型的程序,在刚开始运行程序时,不知道怎么实现它的多种功能,后来经过好多次的调试,终于看懂了程序的大概,看懂了构造函数,及文本的应用。在原有在网上下的程序的的基础上,增加了图书的价格、类型及作者姓名,以及按类,按书名查找图书的功能,显示已经借的图书。该程序刚刚在网上下是,有很多小错误,一个已经被借的书,再次被借,没有读者信息的读者可以借书,没有借书的读者可以还书等小错误,经过自己几天的改正下,该图书管理系统逐渐完善。 由于时间和能力有限,我感

13、觉该图书管理系统仍有很多改进的地方。比如:图书不可以能有一本,增加图书数量,每次借完少一本。还有可以计算所有图书的价格总量。读者方面可以,增加读者的更多信息,完善读者信息。 图书管理系统C+代码 #include #include #include #include const int Maxr=100; /读者最大人数 const int Maxb=100; /图书最大库存 const int Maxbor=10; /读者借阅图书最大量 class Reader /读者类 private: /读者基本属性 int tag; /删除标记 1,已删 0,未删 int no; /读者编号 char

14、 name20; /读者姓名 int borbookMaxbor;/所借图书 public: char *getname /获取姓名 return name; int gettag / 获取删除标记 return tag; int getno /获取读者编号 return no; void setname(char na) /设置姓名 strcpy(name,na); void delbook /设置删除标记 tag=1; void addreader(int n,char *na) /增加读者 tag=0; no=n; strcpy(name,na); for (int i=0;iMaxbo

15、r;i+) borbooki=0; void borrowbook(int bookid) /借书操作 int retbook(int bookid) /还书操作 for (int i=0;iMaxbor;i+) if (borbooki=bookid) borbooki=0; return 1; for (int i=0;iMaxbor;i+) if (borbooki=0) borbooki=bookid; return; return 0; void disp /输出读者信息 coutsetw(5)nosetw(10)name借书编号:; ; class RDatabase /读者库类

16、for (int i=0;iMaxbor;i+) if (borbooki!=0) coutborbooki; coutendl; int top; /读者记录指针 Reader readMaxr; /读者记录 public: RDatabase /构造函数,将reader.txt读到read中 Reader s; top=-1; fstream file(reader.txt,ios:in); while (1) file.read(char *)&s,sizeof(s); if (!file) break; top+; readtop=s; file.close; void clear /

17、删除所有读者信息 top=-1; int addreader (int n,char *na) /添加读者是先查找是否存在 Reader *p=query(n); Reader *query(int readerid) /按编号查找 for (int i=0;i=top;i+) if (readi.getno=readerid & readi.gettag=0) return &readi; return NULL; if (p=NULL) top+; readtop.addreader(n,na); return 1; return 0; ; void disp /输出所有读者信息 for

18、(int i=0;i=top;i+) if (readi.gettag=0) void readerdata; /读书库维护 RDatabase /析构函数,将read写入reader.txt中 fstream file(reader.txt,ios:out); for (int i=0;i=top;i+) if (readi.gettag=0) file.write(char *)&readi,sizeof(readi); file.close; readi.disp; void RDatabase:readerdata int choice=1; char rname20; int rea

19、derid; Reader *r; while(choice!=0) if (choice!=0) cout读者管理 endl; cinchoice; if(choice=0)continue; if(choice=1) coutreaderid; coutrname; addreader(readerid,rname); else if(choice=2) coutreaderid; r=query(readerid); if (r=NULL) cout该读者不存在endl; continue; coutrname; r-setname(rname); if(choice=3) coutre

20、aderid; r=query(readerid); if (r=NULL) cout该读者不存在delbook; continue; else if(choice=4) else if(choice=5)disp; else coutreaderid; r=query(readerid); if (r=NULL) cout该读者不存在disp; if(choice=6)clear; else cout您的输入有误!请重新输入:endl; class Book /图书类 private: int tag; /删除标记 1,已删 0,未删 int no; /图书编号 char name20; /

21、书名 int onshelf; /是否在架 1,在架 0,已借出 char zzname20;/作者名字 char qian20;/图书价钱 char lei20;/类别 public: char *getname /获取书名 return name; int getno /获取图书编号 return no; int gettag /获取删除标记 return tag; char *getzzname/获取作者名字 return zzname; char *getqian /获取图书钱数 return qian; char *getlei /获取图书类别 return lei; void se

22、tname(char na) /设置书名 strcpy(name,na); void setname1(char na1) /设置作者名 strcpy(zzname,na1); void setname2(char na2) /设置钱数 strcpy(qian,na2); void setname3(char na3) /设置类别 strcpy(lei,na3); void delbook/删除图书 tag=1; void addbook(int n,char *na,char *na1,char *na2,char *na3)/增加图书 int borrowbook /借书操作 if (on

23、shelf=1) onshelf=0; return 1; tag=0; no=n; strcpy(name,na); strcpy(zzname,na1); strcpy(qian,na2); strcpy(lei,na3); onshelf=1; return 0; int retbook /还书操作 void disp /输出图书 coutsetw(5)编号:nosetw(10)书名:namesetw(10)作if (onshelf=0) onshelf=1; return 1; return 0; 者:zznamesetw(10)价格:qiansetw(10)类别:leisetw(10

24、)(onshelf=1? 在架:已借)endl; void disp1/借出图书 if(onshelf=0) coutsetw(5)编号:nosetw(10)书名:namesetw(10)作者:zznamesetw(10)价格:qiansetw(10)类别:leiendl; if(onshelf=1) cout 无图书被借出; ; class BDatabase /图书库类 int top; /图书记录指针 Book bookMaxb; /图书记录 public: BDatabase /构造函数,将book.txt读到book中 Book b; top=-1; void clear /全删 t

25、op=-1; int addbook(int n,char *na,char *na1,char *na2,char *na3 ) /增加图书 Book *p=query(n); fstream file(book.txt,ios:in); while (1) file.read(char*)&b,sizeof(b); if (!file) break; top+; booktop=b; file.close; if (p=NULL) top+; booktop.addbook(n,na,na1,na2,na3); return 1; return 0; Book *query(int boo

26、kid) /查找图书编号 for (int i=0;i=top;i+) if (booki.getno=bookid & booki.gettag=0) return &booki; return NULL; Book *query1(char bookname40) /查找图书名字 for (int i=0;i=top;i+) if (booki.getname=bookname & booki.gettag=0) return &booki; return NULL; Book *query2(char booklei40) /查找图书类别 for (int i=0;i=top;i+) i

27、f (booki.getlei=booklei & booki.gettag=0) return &booki; return NULL; void bookdata; /图书库维护 void disp for (int i=0;i=top;i+) void disp1 for (int i=0;i=top;i+) if (booki.gettag=0) booki.disp; ; if (booki.gettag=0) booki.disp1; BDatabase /析构函数,将book写入book.txt中 fstream file(book.txt,ios:out); for (int

28、i=0;i=top;i+) if (booki.gettag=0) file.write(char*)&booki,sizeof(booki); file.close; void BDatabase:bookdata int choice=1; char bname40; int bookid; char bookname40; char booklei40; char bzzname40; char bqian40; char blei40; Book *b; while(choice!=0) if (choice!=0) cout图书管理endl 1:新增 2:更改 3:删除 4:查找编号

29、 5:查找书名 6:查找类别endl; cout; cinchoice; if(choice=0)continue; if (choice=1) coutbookid; coutbname; coutbzzname; else coutbqian; coutblei; addbook(bookid,bname,bzzname,bqian,blei); if (choice=2) cout输入图书编号:; else if (choice=3) coutbookid; b=query(bookid); if (b=NULL) cout该图书不存在delbook; cinbookid; b=quer

30、y(bookid); if (b=NULL) cout该图书不存在endl; continue; coutbname; b-setname(bname); else if (choice=4) coutbookid; b=query(bookid); if (b=NULL) cout该图书不存在disp; else if (choice=5) coutbookname; b=query1(bookname); if (b=NULL) cout该图书不存在disp; else if (choice=6) coutbooklei; b=query2(booklei); if (b=NULL) co

31、ut该图书不存在disp; else if (choice=7)disp; else if (choice=8) disp1; if (choice=9)clear; else if(choice9) cout您的输入有误!请重新输入:endl; void main int choice=1,bookid,readerid; RDatabase ReaderDB; Reader *r; BDatabase BookDB; Book *b; while(choice!=0) if(choice!=0) cout 欢迎进入图书管理系统endl; cout 制作人:张文波endl; cout; ci

32、nchoice; if(choice=0) continue; if (choice=1) cout借书endl; coutreaderid; coutbookid; r=ReaderDB.query(readerid); if (r=NULL) cout该读者不存在,不能借书endl; b=BookDB.query(bookid); if (b=NULL) cout该图书不存在,不能借书borrowbook=0) cout很抱歉,该图书已借走borrowbook(b-getno); cout 借书成功endl; continue; continue; continue; else if (choice=2) cout还书endl; coutreaderid; coutbookid; r=ReaderDB.query(readerid); if (r=NULL) cout不存在该读者,不能借书endl; continue; b=BookDB.query(bookid); if (b=NULL) cout不存在该图书,不能借书retbook=0) cout 无该借书记录retbook(b-getno); cout 还书成功6) cout您的输入有误!请重新输入:endl; continue;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号