《C++图书管理系统.pdf》由会员分享,可在线阅读,更多相关《C++图书管理系统.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 北华大学 C+课程实习报告 图书管理系统 学院:电气信息工程学院 专业:电子信息工程 班级:学号:姓名:指导教师:图书管理系统 一,需求分析 利用 C+语言编程,设计图书管理系统,实现图书信息管理和读者信息管理 1.图书录入:输入类别、名称、编号、作者、价钱等;2.图书查询:运用编号查询、书名查询和类别查询三种方法;3.图书借阅:选中图书,并输入借书者信息;4.图书归还:5.显示所有:输出所有图书信息;6.显示已借:显示已借图书,并输出图书信息和借书者信息;7.读者信息:输入读者的编号、姓名 8.读者借阅:显示读者借阅图书的情况 9.读者管理:增添删除读者的信息,查看读者所有信息 10.其他
2、功能 图书馆作为学生学习知识的重要场所,作为信息资源的集散地,图书馆和用户借阅资料繁多,包含很多的信息数据的管理。介于这一现象,我们对于图书馆的借阅管理系统进行了全面的分析处理,在信息高速发展的今天,促进图书馆管理运用网络技术,通过信息系统的开发,在图书馆之间互通有无,有利于提高图书的利用率。我的系统针对的是图书管理,面对大量纷繁复杂的图书管理工作,和不同图书的借出和归还,需要设计一个合理的系统,它应包括图书库,读者库,和图书的借还书信息建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,对过时、损失的图书进行删除,达到降低成本提高工作效率的目标。二,设计实现(1)通过提示
3、菜单选择可以进行的操作。(2)将图书的信息存入文件中。(3)将图书借阅情况信息存入文件中。(4)在本系统中可以进行图书管理系统包含的基本操作,其中包括:a)查看所有图书的信息。b)输入一本图书的图书编号,从当前图书中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。c)添加一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则提示重新输入,否则将该图书按照顺序插入到相应位置。d)删除一本图书的基本信息,通过输入图书编号,首先查找是否存在该图书编号的图书,如果存在则将该图书删除,否则给出提示信息,提示该图书不存在.e)借阅一本图书,需要给出学号和图
4、书编号,如果图书编号不存在则重新输入,直到输入正确为止,并将学号和相应的图书编号存入 SendInfo.txt 文件中。f)查找图书,运用编号查询、书名查询和类别查询三种方法。g)显示图书,显示所有和已借图书(5)图书基本信息包括图书类别、名称、编号、作者、价钱。(6)在本系统中可以进行读者管理系统包含的基本操作,其中包括:a)输入一位读者的编号,从当前所有读者中进行查找,如果找到则显示该图书的相关信息,如果没有找到则给出提示信息。b)添加一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号的信息,d)删除一位读者的基本信息,通过输入读者编号,首先查找是否存在该读者编号的信息,如果
5、存在则将该读者删除,否则给出提示信息,提示该读者不存在.e)查找读者,运用编号查询方法.(7)读者基本信息包括读者编号、姓名和借阅情况。程序实现:设计了四个类,Reader(读者类),Rdatabase(读者库类),Book(图书类)和 Bdatabase(图书库类),读者类主要用于存储信息,其中包括:读者的基本属性 int tag 删除标记 1:已删,0:未删;int no 读者编号;char name10读者姓名;int borbookMaxbor所借图书;char*getname()获取姓名;int gettag()获取删除标记;int getno()获取读者编号;void setnam
6、e(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*na)添加读者时先查找是否存在 Reader*qu
7、ery(int readerid)按编号查找 void disp()输出所有读者信息 void readerdata();读者库维护RDatabase()析构函数,将 read写入 reader.txt 文件中 图书类包括:int tag;删除标记 1:已删 0:未删;int no 图书编号 char name 20;书名;int onshelf 是否在架 1:在架 0:已借 char*getname()return name;获得书名;int getno()return no;获得书编号;int gettag()return tag;获得删除标记;void setname(char na)设
8、置书名;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();图书库维护Bdatabase 析构函数,将 b
9、ook写入 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 Rdatabase()Voi
10、d 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()三,测试
11、结果 首页:Bdatabase(图书库类)Int top Book bookmaxb BDatabase()Void clear()Int addbook(int n,char na)book query(int bookid)Void disp()Void bookdata()BDatabase()图书信息:读者信息,读者借书:借书成功后,图书信息和读者信息的变化 增加图书:增加读者:读者借已经被借走的书:一个读者可以借,多本书,读者不在读者信息中,借书的情况:读者还书,及还书后的图书信息和读者信息:读者不在读者信息中,还书的情况:该图书没有被该读者借走:查找图书:显示图书,及删除全部图书,
12、再显示:查找读者:删除编号 1 的读者,并显示:全删读者信息并显示:四,结论及需改进的问题 图书管理系统是我做 C+程序设计的中,第一个大型的程序,在刚开始运行程序时,不知道怎么实现它的多种功能,后来经过好多次的调试,终于看懂了程序的大概,看懂了构造函数,及文本的应用。在原有在网上下的程序的的基础上,增加了图书的价格、类型及作者姓名,以及按类,按书名查找图书的功能,显示已经借的图书.该程序刚刚在网上下是,有很多小错误,一个已经被借的书,再次被借,没有读者信息的读者可以借书,没有借书的读者可以还书等小错误,经过自己几天的改正下,该图书管理系统逐渐完善。由于时间和能力有限,我感觉该图书管理系统仍有
13、很多改进的地方。比如:图书不可以能有一本,增加图书数量,每次借完少一本。还有可以计算所有图书的价格总量。读者方面可以,增加读者的更多信息,完善读者信息。图书管理系统 C+代码 include iostream。h#include include#include fstream。h const int Maxr=100;/读者最大人数 const int Maxb=100;/图书最大库存 const int Maxbor=10;/读者借阅图书最大量 class Reader /读者类 private:/读者基本属性 int tag;/删除标记 1,已删 0,未删 int no;/读者编号 cha
14、r 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;iMaxbor;i+)borboo
15、ki=0;void borrowbook(int bookid)/借书操作 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()/输出读者信息 coutsetw(5)nosetw(10)name”借书编号:;for(int i=0;iMaxbor;i+)if(borbooki!=0)coutborbooki;
16、cout”endl;class RDatabase/读者库类 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()/删除所有读者信息 top=1;int addreader(int n,char*na
17、)/添加读者是先查找是否存在 Reader p=query(n);if(p=NULL)top+;readtop.addreader(n,na);return 1;return 0;Reader*query(int readerid)/按编号查找 for(int i=0;i=top;i+)if(readi。getno()=readerid readi。gettag()=0)return readi;return NULL;void disp()/输出所有读者信息 for(int i=0;i=top;i+)if(readi。gettag()=0)readi.disp();void readerda
18、ta();/读书库维护 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();;void RDatabase::readerdata()int choice=1;char rname20;int readerid;Reader*r;while(choice!=0)if(choice!=0)cout”读者管理”endl”;c
19、inchoice;if(choice=0)continue;if(choice=1)coutreaderid;cout输入读者姓名:;cin rname;addreader(readerid,rname);else if(choice=2)coutreaderid;r=query(readerid);if(r=NULL)coutsetname(rname);else if(choice=3)coutreaderid;r=query(readerid);if(r=NULL)cout该读者不存在”delbook();else if(choice=4)cout 输入读者编号:”;cinreaderi
20、d;r=query(readerid);if(r=NULL)cout 该读者不存在 endl;continue;r-disp();else if(choice=5)disp();else if(choice=6)clear();else cout您的输入有误!请重新输入:endl;class Book /图书类 private:int tag;/删除标记 1,已删 0,未删 int no;/图书编号 char name20;/书名 int onshelf;/是否在架 1,在架 0,已借出 char zzname20;/作者名字 char qian20;/图书价钱 char lei20;/类别
21、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 setname(char na)/设置书名 strcpy(name,na);void setname1(char na1)/设置作者名 strcpy(zzname,na1);void
22、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)/增加图书 tag=0;no=n;strcpy(name,na);strcpy(zzname,na1);strcpy(qian,na2);strcpy(lei,na3);onshelf=1;int borrowbook()/借书操作 if(onshelf=1)onsh
23、elf=0;return 1;return 0;int retbook()/还书操作 if(onshelf=0)onshelf=1;return 1;return 0;void disp()/输出图书 coutsetw(5)编号:nosetw(10)书名:namesetw(10)”作者:zznamesetw(10)”价格:”qiansetw(10)”类别:”leisetw(10)(onshelf=1?在架”:已借)endl;void disp1()/借出图书 if(onshelf=0)cout setw(5)”编号:nosetw(10)书名:”name setw(10)”作者:zznamese
24、tw(10)”价格:qiansetw(10)”类别:”leiendl;if(onshelf=1)cout”无图书被借出”;;class BDatabase/图书库类 int top;/图书记录指针 Book bookMaxb;/图书记录 public:BDatabase()/构造函数,将 book.txt 读到 book中 Book b;top=-1;fstream file(”book.txt,ios:in);while(1)file.read((char)b,sizeof(b);if(!file)break;top+;booktop=b;file。close();void clear()/
25、全删 top=-1;int addbook(int n,char na,char*na1,char*na2,char na3)/增加图书 Book p=query(n);if(p=NULL)top+;booktop.addbook(n,na,na1,na2,na3);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;Book query1(char bookname40)/查找
26、图书名字 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+)if(booki.getlei()=booklei&booki。gettag()=0)return&booki;return NULL;void bookdata();/图书库维护 void disp()for(int i=0;i=top;i+)if(booki。gettag()=0)booki
27、.disp();void disp1()for(int i=0;i=top;i+)if(booki.gettag()=0)booki.disp1();BDatabase()/析构函数,将 book写入 book.txt 中 fstream file(”book.txt,ios:out);for(int 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;
28、char bookname40;char booklei40;char bzzname40;char bqian40;char blei40;Book b;while(choice!=0)if(choice!=0)cout”图书管理endl 1:新增 2:更改 3:删除 4:查找编号 5:查找书名 6:查找类别;cinchoice;if(choice=0)continue;if(choice=1)cout”输入图书编号:”;cin bookid;cout”输入图书书名:;cin bname;coutbzzname;cout输入图书价格:”;cin bqian;coutblei;addbook(
29、bookid,bname,bzzname,bqian,blei);else if(choice=2)coutbookid;b=query(bookid);if(b=NULL)cout”该图书不存在”endl;continue;coutbname;b-setname(bname);else if(choice=3)coutbookid;b=query(bookid);if(b=NULL)coutdelbook();else if(choice=4)cout”输入图书编号:”;cinbookid;b=query(bookid);if(b=NULL)cout 该图书不存在bookname;b=que
30、ry1(bookname);if(b=NULL)cout”该图书不存在endl;continue;bdisp();else if(choice=6)coutbooklei;b=query2(booklei);if(b=NULL)cout 该图书不存在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;
31、Reader r;BDatabase BookDB;Book b;while(choice!=0)if(choice!=0)cout 欢迎进入图书管理系统endl;cout”制作人:张文波”endl;coutchoice;if(choice=0)continue;if(choice=1)cout”借书”endl;coutreaderid;cout”图书编号:”;cinbookid;r=ReaderDB.query(readerid);if(r=NULL)cout该读者不存在,不能借书endl;continue;b=BookDB.query(bookid);if(b=NULL)cout该图书不存
32、在,不能借书 endl;continue;if(bborrowbook()=0)cout”很抱歉,该图书已借走getno());cout”借书成功”endl;else if(choice=2)cout还书”endl;coutreaderid;cout”图书编号:”;cin bookid;r=ReaderDB.query(readerid);if(r=NULL)cout不存在该读者,不能借书endl;continue;b=BookDB。query(bookid);if(b=NULL)cout”不存在该图书,不能借书 endl;continue;if(bretbook()=0)cout”无该借书记录”retbook(bgetno());cout 还书成功”endl;if(choice=3)BookDB。disp();if(choice=4)ReaderDB。disp();if(choice=5)BookDB。bookdata();if(choice=6)ReaderDB.readerdata();if(choice6)cout您的输入有误!!请重新输入:”endl;