《面向对象程序设计(C++)》-图书管理系统设计_第1页
《面向对象程序设计(C++)》-图书管理系统设计_第2页
《面向对象程序设计(C++)》-图书管理系统设计_第3页
《面向对象程序设计(C++)》-图书管理系统设计_第4页
《面向对象程序设计(C++)》-图书管理系统设计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

《面向对象程序设计(C++)》-图书管理系统设计(此文档为word格式,下载后您可任意编辑修改!)《面向对象程序设计(C++)》项目名称:图书管理系统设计问题分析与功能定义二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,但如何把图书管理员从繁重的工作中解脱出来呢?科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。1、设计内容及要求设计一个图书馆管理系统,完成图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成一下功能,图书资料管理,可以添加、修改、删除、查询书籍信息,读者资料管理,可以添加、修改、删除、查询读者信息;借书管理,可以进行添加借书信息;还书管理,可以进行还书信息;该项目是在VisualC++6.0的平台下用c++语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;程序结束关闭并保存文件。整体系统功能全部由链表实现。2、模块图二、对象(类)设计及实现1、概要设计《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第1页。Reader读者类、RDatabase读者库类、Book图书类、BDatabase图书库类《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第1页。classRDatabase //读者库类inttop;//读者记录指针Readerread[Maxr];//读者记录RDatabase() ;//构造函数,将reader.txt读到read[]中voidclear();//删除所有读者信息intaddreader(intn,char*na);//增添读者信息Reader*query(intreaderid);//按编号查找voiddisp();//输出所有读者信息intReadernum();//记录读者信息voidreaderdata();//读者库维护~RDatabase();//析构函数,将read[]写入reader.txt文件中2、详细设计《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第2页。1)类的原型描述《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第2页。classReader //读者类inttag;//删除标记1:已删0:未删intno;//读者编号charname[10];//读者姓名intborbook[Maxbor]; //所借图书Reader(){}char*getname()//获取姓名intgettag() //获取删除标记intgetno()//获取读者编号voidsetname(charna[])//设置姓名voiddelbook()//设置删除标记voidaddreader(intn,char*na);//增加读者voidborrowbook(intbookid);//借书操作intretbook(intbookid);//还书操作voiddisp();//输出读者信息classBDatabase //图书库类inttop;//图书记录指针Bookbook[Maxb];//图书记录BDatabase() ;//构造函数,将book.txt读到book[]中voidclear();//全删intaddbook(intn,char*na);//增加图书Book*query(intbookid);//查找图书voiddisp();//输出所有图书信息voidbookdata();//图书库维护~BDatabase();//析构函数,将book[]写入book.txt文件中classBook //图书类inttag; //删除标记1:已删0:未删intno; //图书编号charname[20];//书名intonshelf;//是否在架1:在架0:已借Book(){}char*getname();//获取姓名intgetno();//获取图书编号intgettag();//获取删除标记voidsetname(charna[]);//设置书名voiddelbook();//删除图书voidaddbook(intn,char*na);//增加图书intborrowbook() ;//借书操作voidretbook();//还书操作voiddisp();//输出图书核心控制设计在主函数中我们要做的操作包括:(1)建立1个Reader读者类、1个RDatabase读者库类、1个Book图书类、1个BDatabase图书库类(2)建立菜单界面。完成以下内容:①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑图书数据以及修改图书数据、维护图书的采购信息。添加、删除、查看读者个人信息,浏览图书信息。②能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。(3)将图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。(4)系统界面友好,易操作。2、本程序应具备的功能:A.添加、借阅、还书功能:(1)添加读者和图书信息。(2)借阅尚在架的图书。《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第3页。(3)读者归还的图书。《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第3页。B.查找功能(1)根据图书的编号查找图书信息。(2)根据读者的编号查找读者的信息。C.系统的操作系统在进入时,要有菜单提示;系统在用户退出时,有一定的提示。3、算法分析1)添加操作:(读者信息的添加与图书信息的添加类似)包括两个部分,先通过输入设备输入信息,系统获取;然后添加入读者数据库read.txt文件中。㈠获取信息voidReader::addreader(intn,char*na)//增加读者 { tag=0; no=n; strcpy(name,na); for(inti=0;i<Maxbor;i++) borbook[i]=0; }intRDatabase::addreader(intn,char*na)//增添读者信息 { der*p=query(n); if(p==NULL) { top++; read[top].addreader(n,na); cout<<"读者添加成功"<<endl; return1; } return0; }流程图:㈡析构函数写入新读者的编号跟姓名RDatabase::~RDatabase() {fstreamfile("reader.txt",ios::out);for(inti=0;i<=top;i++){if(read[i].gettag()==0)file.write((char*)&read[i],sizeof(read[i]));else file.close();《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第4页。}《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第4页。}流程图:借书操作:利用for语句和if语句,通过判断图书的borbook的编号是否为0,来判断图书是否未被借走或还没有被借完。voidReader::borrowbook(intbookid)//借书操作 { for(inti=0;i<Maxbor;i++) if(borbook[i]==0) { borbook[i]=bookid; return; } }流程图:还书操作:利用for语句和if语句,通过判断图书的borbook的编号是否为要还书的编号,来判断是否借出此书。intReader::retbook(intbookid) //还书操作 { for(inti=0;i<Maxbor;i++) { if(borbook[i]==bookid) { borbook[i]=0; return1; } elsecontinue; }流程图:查找功能:利用for语句和if语句,寻找与要查询的编号相同的读者编号或图书编号,如果找到,向系统返回相应的编号,输出相应的信息。(读者的查找与图书查找类似)Reader*query(intreaderid)//按编号查找 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&&read[i].gettag()==0) return&read[i]; returnNULL; }流程图:《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第5页。《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第5页。四、测试分析(一)、此系统存在问题未设登录密码保护系统,是整个图书管理系统失去了一定的安全性;程序运行界面《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第6页。《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第6页。此界面运行时选择4有时会出现内存读取错误;1)当输入错的数据类型时可能导致内存错误;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第7页。2)读者、图书信息不完善;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第7页。3)命名不是很规范;信息存储有限;五、心得体会通过这次课程设计让我逐步学会了如何运用C++面向对象程序设计的设计思想和方法来解决实际问题。比如这次设计图书管理系统,首先我考虑是在实际应用时用户一般进行什么操作,对哪些对象进行操作。很显然我需要建立两个类,包括图书类和读者类,同时考虑到图书和读者不止一个,所以还需两个类,图书库类和读者库类,这两个类分别将其信息传递给图书类和读者类。确定了类之后,则需要对类的内容进行扩充。由于我需要这个系统完成对图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成一下功能,图书资料管理,可以添加、修改、删除、查询书籍信息,读者资料管理,可以添加、修改、删除、查询读者信息;借书管理,可以进行添加借书信息;还书管理,可以进行还书信息。所以在对应的类下建立相应功能函数。建立功能函数后就是构造主函数。主函数的作用就是通过向对象发送信息、对象接受信息启动相应的方法来实现相应的操作。当然在这些过程中要保证面向对象程序设计的抽象、封装、多态和继承的特点。在设计本系统中虽然综合考虑到了图书管理的各个方面,界面设计简洁,数据库设计合理,但依然还有一些不足。为了能够较好地完成本次课程设计,我详细阅读教材,以及网上搜索,和到图书馆查找相关资料等。在做课程设计的过程中,我在利用所学的知识同时,又学到了很多实例化的理论知识和软件工程的一些实践,总结了一些经验和方法强化了我的实际动手能力,同时也找到自己的不足,我一定会继续学习增加自己的编程能力和调试能力,在今后的学习中我将会更加的努力,增加自己的知识储备,拓宽自己的知识面,锻炼自己的能力,使我的综合素质得到较大的提高。在这设计的过程中我也出现过一些比较严重的错误,后来在同学的指点下我改正了自己的错误,并最终成功调试除了程序。当程序调试出来的那一瞬间,我感觉自己完成了一件非常了不起的事,好有成就感。在以后的日子,我将会继续我的兴趣继续深入学习程序设计,相信在越来越多的尝试之后,自己会不断进步不断提高的。最后感谢老师的指导与同学的帮助,使我能顺利完成这次程序设计。六、源程序代码#include<iostream>#include<iomanip>#include<string>#include<fstream>//输入/输出文件流类usingnamespacestd;constintMaxr=100;//最多的读者constintMaxb=100;//最多的图书《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第8页。constintMaxbor=5;//每位读者最多借五本书《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第8页。//读者类,实现对读者的信息的描述classReader{private: inttag;//删除标记1:已删0:未删 intno;//读者编号 charname[10];//读者姓名 intborbook[Maxbor];//所借图书public: Reader(){}//构造函数 char*getname() { returnname; } //获取姓名 intgettag() { returntag; } //获取删除标记 intgetno() { returnno; }//获取读者编号 voidsetname(charna[])//设置姓名 { strcpy(name,na); } voiddelbook()//设置删除标记 { tag=1; } voidaddreader(intn,char*na);//增加读者 voidborrowbook(intbookid);//借书操作 intretbook(intbookid);//还书操作 voiddisp();//输出读者信息 };voidReader::addreader(intn,char*na)//增加读者 { tag=0; no=n; strcpy(name,na); for(inti=0;i<Maxbor;i++) borbook[i]=0;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第9页。 }《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第9页。voidReader::borrowbook(intbookid)//借书操作 { for(inti=0;i<Maxbor;i++) { if(borbook[i]==0) { borbook[i]=bookid; return; } } }intReader::retbook(intbookid) //还书操作 { for(inti=0;i<Maxbor;i++) { if(borbook[i]==bookid) { borbook[i]=0; return1; } else continue; } return0; }voidReader::disp()//输出读者信息 { cout<<setw(5)<<no<<setw(10)<<name<<"借书编号:["; for(inti=0;i<Maxbor;i++) if(borbook[i]!=0) cout<<borbook[i]<<"|"; cout<<"]"<<endl; }//读者类库,实现建立读者的个人资料classRDatabase{private:inttop;//读者记录指针Readerread[Maxr];//读者记录public: RDatabase(); //构造函数,将reader.txt读到read[]中 voidclear() //删除所有读者信息 {《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第10页。 top=-1;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第10页。 } intaddreader(intn,char*na);//增添读者信息 Reader*query(intreaderid)//按编号查找 { for(inti=0;i<=top;i++) if(read[i].getno()==readerid&& read[i].gettag()==0) return&read[i]; returnNULL; } voiddisp(); //输出所有读者信息 intReadernum();//得到读者编号 voidreaderdata(); //读者库维护 ~RDatabase(); //析构函数,将read[]写入reader.txt文件中};RDatabase::RDatabase() //构造函数,将reader.txt读到read[]中 { Readers; top=-1; fstreamfile("reader.txt",ios::in); while(1) { file.read((char*)&s,sizeof(s)); if(!file)break; top++; read[top]=s; } file.close(); }RDatabase::~RDatabase() //析构函数,将read[]写入reader.txt文件中{ fstreamfile("reader.txt",ios::out); for(inti=0;i<=top;i++) if(read[i].gettag()==0) file.write((char*)&read[i],sizeof(read[i])); else file.close();} intRDatabase::addreader(intn,char*na)//增添读者信息 {《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第11页。《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第11页。 if(p==NULL) { top++; read[top].addreader(n,na); cout<<"读者添加成功"<<endl; return1; } return0; }voidRDatabase::disp() //输出所有读者信息 { for(inti=0;i<=top;i++) read[i].disp(); }intRDatabase::Readernum() { returntop; }voidRDatabase::readerdata()//读者库维护{charchoice; charrname[100];//读者姓名 intreaderid; Reader*r; do {cout<<"\n\n\t\t\t欢迎进入读者维护界面\n\n\n\t\t1新增\n\n\t\t2更改\n\n\t\t3删除\n\n\t\t4查找\n\n\t\t5显示\n\n\t\t6全删\n\n\t\t0退出"<<endl; cin>>choice; switch(choice) {case'1': cout<<"输入读者编号:"; cin>>readerid; cout<<"输入读者姓名:"; cin>>rname; addreader(readerid,rname); break;case'2': cout<<"输入读者编号:"; cin>>readerid; r=query(readerid);《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第12页。 if(r==NULL)《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第12页。 { cout<<"该读者不存在"<<endl; break; } cout<<"输入新的姓名:"; cin>>rname; r->setname(rname); break;case'3': cout<<"输入读者编号:";cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"<<endl; break; } r->delbook(); break; case'4': cout<<"读入读者编号:"; cin>>readerid; r=query(readerid); if(r==NULL) { cout<<"该读者不存在"<<endl; break; } r->disp(); break; case'5': disp(); break; case'6': clear(); break; default:if(choice!='0')cout<<"输入错误,请从新输入:";break; } }while(choice!='0');}//图书类,实现对图书的描述,图书的编号,书名,借出,还入等classBook{《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第13页。private:《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第13页。inttag;//删除标记1:已删0:未删 intno;//图书编号 charname[20];//书名 intonshelf;//是否再架1:再架0:已借public: Book(){} char*getname(){returnname;}//获取姓名 intgetno(){returnno;}//获取图书编号 intgettag(){returntag;}//获取删除标记 voidsetname(charna[])//设置书名 { strcpy(name,na); } voiddelbook(){tag=1;}//删除图书 voidaddbook(intn,char*na)//增加图书 { tag=0; no=n; strcpy(name,na); onshelf=1; } intborrowbook()//借书操作 { if(onshelf==1) { onshelf=0; return1; } return0; } voidretbook()//还书操作 { onshelf=1; } voiddisp()//输出图书 { cout<<setw(6)<<no<<setw(18)<<name<<setw(10) <<(onshelf==1?"在架":"已借")<<endl; }};//图书库类,实现对图书的维护,查找,删除等classBDatabase{《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第14页。private:《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第14页。inttop;//图书记录指针 Bookbook[Maxb];//图书记录public: BDatabase()//构造函数,将book.txt读到book[]中 { Bookb; top=-1; fstreamfile("book.txt",ios::in); while(1) { file.read((char*)&b,sizeof(b)); if(!file)break; top++; book[top]=b; } file.close(); }voidclear()//全删 { top=-1; }intaddbook(intn,char*na);//增加图书Book*query(intbookid)//查找图书 { for(inti=0;i<=top;i++) if(book[i].getno()==bookid&&book[i].gettag()==0) { return&book[i]; } returnNULL; } voidbookdata();//图书库维护 voiddisp()//输出图书 { for(inti=0;i<=top;i++) if(book[i].gettag()==0) book[i].disp(); } ~BDatabase();//析构函数,将book[]写到book.txt文件中};intBDatabase::addbook(intn,char*na)//增加图书 { Book*p=query(n);《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第15页。 if(NULL==p)《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第15页。 { top++; book[top].addbook(n,na); return1; } return0; }BDatabase::~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstreamfile("book.txt",ios::out);for(inti=0;i<=top;i++) if(book[i].gettag()==0) file.write((char*)&book[i],sizeof(book[i])); file.close(); }voidBDatabase::bookdata(){charchoice; charbname[40]; intbookid; Book*b; do { cout<<"\n\n\n\t\t\t欢迎进入图书维护界面"<<endl<<endl; cout<<"\t\t1新增\n\t\t2更改\n\t\t3删除\n\t\t4查找\n\t\t5显示\n\t\t6全删\n\t\t0退出"<<endl; cin>>choice; switch(choice) {case'1': cout<<"输入图书编号:"<<endl; cin>>bookid;cout<<"输入图书书名:"<<endl; cin>>bname; addbook(bookid,bname); break;case'2': cout<<"输入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第16页。 break;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第16页。 } cout<<"输入新的书名:"<<endl; cin>>bname; b->setname(bname); break;case'3': cout<<"读入图书编号:"<<endl;cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } b->delbook(); break; case'4': cout<<"读入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } b->disp(); break; case'5': disp(); break; case'6': clear(); break; default:if(choice!='0')cout<<"输入错误,请从新输入:"; } }while(choice!='0');}voidshowmenu(){ cout<<""; cout<<""; cout<<"|-----设计者:童安蓉,杨丹,刘蕙娟,邓小伟----完成时间:2010年12月28日---|"<<endl;《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第17页。 cout<<"";《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第17页。 cout<<""; cout<<""; cout<<"|1.借书|"<<endl; cout<<""; cout<<"|2.还书|"<<endl; cout<<""; cout<<"|3.图书维护|"<<endl; cout<<""; cout<<"|4.读者维护|"<<endl; cout<<""; cout<<"|0.退出:将数据保存到磁盘|"<<endl; cout<<"";}voidshowtip(){cout<<""; cout<<""; cout<<"|1.借书|"<<endl; cout<<""; cout<<"|2.还书|"<<endl; cout<<""; cout<<"|3.图书维护|"<<endl; cout<<""; cout<<"|4.读者维护|"<<endl; cout<<""; cout<<"|0.退出:将数据保存到磁盘|"<<endl; cout<<"";}//main()函数的实现,程序的主界面的引导intmain(){ charchoice; intbookid,readerid;//图书编号,读者编号《面向对象程序设计(C++)》-图书管理系统设计全文共20页,当前为第18页。 RDatabaseReaderDB;//读者库《

温馨提示

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

评论

0/150

提交评论