..课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期:..1设计任务1.1设计目的运用所学知识.完成图书馆管理系统.通过实践加强对所学知识的理解和巩固1.2设计内容建立图书馆管理系统.用户分为图书管理人员.读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息.和借还书1.3设计指标或者要求管理人员可以访问任意图书和读者.而读者只能借还图书馆存在的图书和查看自己的信息。2设计过程分析:由于管理系统用户有图书管理员和读者.但两者的权限不同.管理员有权访问所有图书信息和管理员信息.而读者只能访问所有图书信息和自身的信息。所以他们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books).管理员类(manager).读者类reader.books类为抽象类.manager.和reader类为books类的派生类。为了能让管理员和读者访问所有图书信息.所有都继承了books类;而为了分出两者的权限的不同.所以把所有读者的信息做为一个链表作为管理员的一个私有成员.而读者却只能放一个自身节点作为读者的私有成员.然后分别设计各个类的成员函数。2.1程序功能Classbooks///虚基类{..protected:books_node*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();//添加图书信息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_readers(readers_node*);};2.2程序流程图..开始菜单管理员菜单读者菜单添删加除图图书书添删加除读读者者借还查查看看所自有身图信书书书息读者管理员图书维护读者维护后退后退后退后退后退..3软件运行或者测试结果(1)管理员身份登录:..(2)读者身份登录:......4软件设计过程中遇到的问题以及解决办法由于编写前期做了大量的设计工作.在编写过程中基本没有遇到难解决的问题提.倒是在设计类时有些茫然.经过反复斟酌还是做了一些取舍.比如把读取读者文件放在了类的外面等。。5总结通过本次课程设计学到了很多东西.对于c++对象的含义有了进一步的认识.从而对类的封装和设计有了一种新的认识.不只是停留在表面.为以后的学习积累了经验.设计不比编写容易.类设计好是整个程序写好的前提.只有一个好的规划才能写出好的程序。不过也通过本次发现了自己的不足之处。总是:本次课程设计受益匪浅.动手能力大大增强;附录(程序源代码)#includeiostream.h#includefstream.h#includestring.h#includestdio.h#includeconio.h#definemax3typedefstructBooks{charbook_name[15];inttotal_num;intborrow_num;charbook_num[15];Books*next;}books_node;typedefstructReaders{charreader_name[15];charreader_no[15];intreader_borrow_num;structReader_borrow_books{charborrow_books_name[15];charborrow_books_no[15];}reader_borrow_book[max];Readers*next;}readers_node;classbooks{protected:books_node*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();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_readers(readers_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)coutcon'topenbooks.datendl;else{inti=0;..while(1){i++;books_node*node;node=newbooks_node;inFile.read((char*)node,sizeof(books_node));if(inFile.eof())break;node-next=r-next;r-next=node;}inFile.close();if(i2)cout暂时没有图书数据endl;}}books::savebooks(){books_node*L;L=newbooks_node;L=broot-next;ofstreamoutFile;outFile.open(c:\\books.dat,ios::binary);while(L){outFile.write((char*)L,sizeof(books_node));L=L-next;}outFile.close();}books::search_book(){charsearchedbook[15];cout输入要查找的书的名子:;cinsearchedbook;books_node*r;r=newbooks_node;r=broot-next;while(r){if((strcmp(searchedbook,r-book_name))==0){cout书名:r-book_name书的总量:r-total_num借出:r-borrow_num书的编号:r-book_numendl;break;}..r=r-next;}if(r==NULL)cout对不起.没有此书endl;}books::print_books(){books_node*r;r=newbooks_node;r=broot-next;while(r){cout书名:r-book_name书的总量:r-total_num借出:r-borrow_num书的编号:r-book_numendl;r=r-next;}deleter;}manager::add_book(){books_node*L;L=newbooks_node;L=broot;while(1){books_node*r;r=newbooks_node;r-next=NULL;cout输入书名:;cinr-book_name;cout输入书的编号:;cinr-book_num;r-borrow_num=0;cout输入总数:;cinr-total_num;r-next=L-next;L-next=r;coutaddmore?(n终止,其它键继续);charsign;cinsign;..if(sign=='n'||sign=='N')break;}broot=L;savebooks();}manager::delet_book(){chardeleted[15];cout输入要删除的图书名字:;cindeleted;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){coutsorry!Thereisnothebook!endl;}else{if(node-next-borrow_num==0){node-next=node-next-next;savebooks()}elsecout对不起.暂时不能删除.因为还有没有归还的书endl;}}manager::manager(readers_node*node){rroot=newreaders_node;rroot=node;}manager::savereaders(){readers_node*L;L=newreaders_node;L=rroot-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_node;L=rroot;intsign=0;while(1){readers_node*r;r=newreaders_node;r-next=NULL;cout输入姓名:;cinr-reader_name;cout输入读者的编号:;cinr-reader_no;r-reader_borrow_num=0;r-next=L-next;L-next=r;coutaddmore?(n终止,其它键继续);charsign;cinsign;if(sign=='n'||sign=='N')break;}root=L;savereaders();}manager::delet_read