1、c+图书管理系统实验报告和源代码课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期:1设计任务1.1设计目的运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固1.2设计内容建立图书馆管理系统,用户分为图书管理人员,读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息,和借还书1.3设计指标或者要求管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。2设计过程分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。所以他
2、们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类的派生类。为了能让管理员和读者访问所有图书信息,所有都继承了books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。2.1程序功能Classbooks/虚基类protected: books_nod
3、e*broot;public: books();/构造函数 savebooks();/保存修改的内容 search_book();/查找某一本书 print_books();/输出所有书的信息 virtualadd_book()=0;/对于读者是还书,对于管理员添加书 virtualdelet_book()=0;/对于读者是借书,对于管理员是去掉某一本书;Classmanager:publicbooks/管理员类protected: readers_node*rroot;public: manager(readers_node*); savereaders(); add_book();/添加图
4、书信息 delet_book();/删除图书 search_reader();/查找读者信息 add_reader();/添加读者 delet_reader();/删除读者 print_readers();/输出所有读者;classreader:publicbooks/读者类private:readers_node*personnel;/存放读者自身信息public: reader(readers_node*); add_book();/还书 reader_borrow(); delet_book(); reader_return();/借书 print_me();/查看自己借书情况 save
5、_readers(readers_node*);2.2程序流程图3软件运行或者测试结果(1)管理员身份登录:(2)读者身份登录:4软件设计过程中遇到的问题以及解决办法由于编写前期做了大量的设计工作,在编写过程中基本没有遇到难解决的问题提,倒是在设计类时有些茫然,经过反复斟酌还是做了一些取舍,比如把读取读者文件放在了类的外面等。5总结通过本次课程设计学到了很多东西,对于c+对象的含义有了进一步的认识,从而对类的封装和设计有了一种新的认识,不只是停留在表面,为以后的学习积累了经验,设计不比编写容易,类设计好是整个程序写好的前提,只有一个好的规划才能写出好的程序。不过也通过本次发现了自己的不足之处。
6、总是:本次课程设计受益匪浅,动手能力大大增强;附录(程序源代码)#include#include#include#include#include#include#definemax3typedefstructBooks charbook_name15; inttotal_num; intborrow_num; charbook_num15; Books*next;books_node;typedefstructReaders charreader_name15; charreader_no15; intreader_borrow_num; structReader_borrow_books c
7、harborrow_books_name15; charborrow_books_no15; reader_borrow_bookmax; Readers*next;readers_node;classbooksprotected: books_node*broot;public: books(); savebooks(); search_book(); print_books(); virtualadd_book()=0; virtualdelet_book()=0;classmanager:publicbooksprotected: readers_node*rroot;public: m
8、anager(readers_node*); savereaders(); add_book(); delet_book(); search_reader(); add_reader(); delet_reader(); print_readers();classreader:publicbooksprivate:readers_node*personnel;public: reader(readers_node*); add_book(); reader_borrow(); delet_book(); reader_return(); print_me(); save_readers(rea
9、ders_node*);books:books() books_node*r; broot=newbooks_node; r=newbooks_node; r-next=NULL; broot=r; ifstreaminFile; inFile.open(c:books.dat,ios:binary); if(inFile.is_open()=-1)coutcontopenbooks.datnext=r-next; r-next=node; inFile.close(); if(i2)cout暂时没有图书数据next; ofstreamoutFile; outFile.open(c:books
10、.dat,ios:binary); while(L) outFile.write(char*)L,sizeof(books_node); L=L-next; outFile.close(); books:search_book() charsearchedbook15; coutsearchedbook; books_node*r; r=newbooks_node; r=broot-next; while(r) if(strcmp(searchedbook,r-book_name)=0) cout书名:book_name书的总量:total_num借出:borrow_num书的编号:book_
11、numnext; if(r=NULL)cout对不起,没有此书next; while(r) cout书名:book_name书的总量:total_num借出:borrow_num书的编号:book_numnext; deleter;manager:add_book() books_node*L; L=newbooks_node; L=broot; while(1) books_node*r; r=newbooks_node; r-next=NULL; coutr-book_name; coutr-book_num; r-borrow_num=0; coutr-total_num; r-next
12、=L-next; L-next=r; coutsign; if(sign=n|sign=N) break; broot=L; savebooks(); manager:delet_book() chardeleted15; coutdeleted;books_node*node,*L; node=newbooks_node; L=newbooks_node; node=broot; while(node-next) if(strcmp(deleted,node-next-book_name)=0)break; node=node-next; if(node-next=NULL) coutsor
13、ry!Thereisnothebook!next-borrow_num=0) node-next=node-next-next; savebooks(); else cout对不起,暂时不能删除,因为还有没有归还的书next; ofstreamoutFile; outFile.open(c:Readers.dat,ios:binary); while(L) outFile.write(char*)L,sizeof(readers_node); L=L-next; outFile.close();manager:add_reader() readers_node*L; L=newreaders_
14、node; L=rroot; intsign=0; while(1) readers_node*r; r=newreaders_node; r-next=NULL; coutr-reader_name; coutr-reader_no; r-reader_borrow_num=0; r-next=L-next; L-next=r; coutsign; if(sign=n|sign=N) break; rroot=L; savereaders(); manager:delet_reader() chardeleted15; coutdeleted;readers_node*node,*L; no
15、de=newreaders_node; L=newreaders_node; node=rroot; while(node-next) if(strcmp(deleted,node-next-reader_name)=0)break; node=node-next; if(node-next=NULL) coutsorry!Thereisnothereader!next=node-next-next; savereaders(); manager:search_reader()readers_node*r; r=newreaders_node; r=rroot-next; charreader
16、15; coutreader; while(r) if(strcmp(reader,r-reader_name)=0) cout姓名:reader_name编号:reader_no借书总数:reader_borrow_numendl; for(inti=0;ireader_borrow_num;i+) cout书名:reader_borrow_booki.borrow_books_name书的编号:reader_borrow_booki.borrow_books_no; break; elser=r-next; if(!r)cout没有此人next; while(printL) cout姓名编
17、号借书总数endl; coutreader_namereader_noreader_borrow_numendl; for(inti=0;ireader_borrow_num;i+) cout书名:reader_borrow_booki.borrow_books_name书的编号:reader_borrow_booki.borrow_books_no; printL=printL-next; deleteprintL;reader:reader(readers_node*node) (personnel)=newreaders_node; personnel=node;reader:add_b
18、ook() books_node*node; node=newbooks_node; node=broot-next; charreturned15; coutreturned;for(inti=0;ireader_borrow_num;i+) if(strcmp(returned,personnel-reader_borrow_booki.borrow_books_name)=0)break; if(i=personnel-reader_borrow_num+1) printf(不好意思,你没有此书);system(pause); else while(node) if(strcmp(nod
19、e-book_name,returned)=0)break; elsenode=node-next; if(node) personnel-reader_borrow_num-; node-borrow_num-; savebooks(); elsecout对不起,没有你要还的书或者所还书被删除reader_borrow_numnext; charborrowed15; coutborrowed; while(node) if(strcmp(node-book_name,borrowed)=0)break; elsenode=node-next; if(node&(node-total_num
20、-node-borrow_num)0) strcpy(personnel-reader_borrow_bookpersonnel-reader_borrow_num.borrow_books_name,node-book_name); strcpy(personnel-reader_borrow_bookpersonnel-reader_borrow_num+.borrow_books_no,node-book_num); node-borrow_num+; savebooks(); elsecout对不起,没有你要借的书或者所要借的书已经借完!endl; elsecout对不起,你借书的数量
21、已经超过最大借数量endl;reader:print_me() cout姓名reader_name编号:reader_no借书总数:reader_borrow_numendl; for(inti=0;ireader_borrow_num;i+) printf(书名:%s,书的编号:%s,personnel-reader_borrow_booki.borrow_books_name,personnel-reader_borrow_booki.borrow_books_no); voidPause() getch(); fflush(stdin);reader:reader_borrow() de
22、let_book();reader:reader_return() add_book();reader:save_readers(readers_node*L) readers_node*root; root=newreaders_node; root=L-next; ofstreamoutFile; outFile.open(c:Readers.dat,ios:binary); while(root) outFile.write(char*)root,sizeof(readers_node); root=root-next; outFile.close();readers_node*read_readers() readers_node*r; r=newreaders_node; r-next=NULL; intflag=0; ifstreaminFile; inFile.open(c:Readers.dat,ios:binary); if(inFile.is_open()=-1) coutcontopenreaders.datnext=r-next; r-next=node; inFile.close(); if(flag2) cout暂无读者
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1