您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 图书管理体统设计报告+代码
1第一章设计任务、设计基本要求1.1设计任务利用C++语言的文件操作能力设计开发一个小型的图书管信息管理系统,至少具有如下功能:查寻所有图书信息、通过输入图书编号来完成查找某一本图书信息、添加图书信息、删除图书信息以及通过学生学号实现图书借阅功能。操作界面要符合用户的一般习惯,界面易于读者明白理解,图形或文本界面都可以。1.2设计基本要求要求:明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C++语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一般方法和步骤;提高撰写技术文档的能力。掌握模块化编程的基本方法与步骤;巩固和加深学生对C++语言课程基本知识的理解与掌握,培养学生利用C++语言进行软件操作的能力和技巧。2第二章总体设计思路2.1系统功能图2.1系统功能模块图图书管理在生活中运用非常广泛,因此需要用许多的程序来对它们进行管理。该程序包含了图书信息的录入、图书信息的浏览、图书的查询、图书信息的删除与修改,借书,还书等。通过主函数调用子函数使人们能够简易、快捷的了解并找到自己所需要信息的功能。1、查询所有图书信息:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上。2、查找一本图书的信息:通过输入图书编号完成图书信息的查找,并在屏幕上显示。3、修改图书信息:通过输入编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号。4、删除图书信息:通过输入编号,判断此图书是否存在,若存在,则提示用户是否显示删除后的信息,若不存在则提示用户重新输入图书编号。5、借书:通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书的编号和学生的学号存入图书借阅文件中。新增更改删除查找显示全删退出新增更改删除查找显示全删退出主菜单借书图书维护还书读者维护退出36.退出系统:返回主页面。2.2设计思想(1)设计classReader读者信息库,实现对读者信息的描叙;classRDatabase读者类库实现建立读者的个人资料;classBook图书类,实现对图书的描述,图书的编号,书名,借出,还入等;classBDatabase图书库类,实现对图书的维护,查找,删除等。(2)用类的成员函数对链表的数据进行操作,其功能如下表。(3)设计菜单来实现功能设计1、借书2、还书3、图书维护4、读者维护0、离开2.3流程图4图2.2系统流程图5第三章功能模块的具体设计3.1设计类及对象(1)本程序定义了三个类,定义如下:classReader{private:char*getname(){returnname;}//获取姓名intgettag(){returntag;}//获取删除标记intgetno(){returnno;}//获取读者编号voidsetname(charna[])//设置姓名voiddelbook(){tag=1;}//设置删除标记1:已删0:未删voidaddreader(intn,char*na)//增加读者intretbook(intbookid)//还书操作voiddisp()//读出读者信息};classRDatabase{private:inttop;//读者记录指针Readerread[Maxr];//读者记录public:RDatabase()//构造函数,将reader.txt读到read[]中voidclear()//删除所有读者信息intaddreader(intn,char*na)//添加读者时先查找是否存在Reader*query(intreaderid)//按编号查找voiddisp()//输出所有读者信息voidreaderdata();//读者库维护~RDatabase()//析构函数,将read[]写到reader.txt文件中};classBook{private:char*getname(){returnname;}//获取姓名intgetno(){returnno;}//获取图书编号intgettag(){returntag;}//获取删除标记voidsetname(charna[])//设置书名voiddelbook(){tag=1;}//删除图书voidaddbook(intn,char*na)//增加图书intborrowbook()//借书操作6voidretbook()//还书操作voiddisp()//输出图书classBDatabase{private:BDatabase()//构造函数,将book.txt读到book[]中voidclear()//全删intaddbook(intn,char*na)//增加图书Book*query(intbookid)//查找图书voidbookdata();//图书库维护~BDatabase()//析构函数,将book[]写到book.txt文件中};(2)分别利用类classReader、classRDatabase、classBook、classBDatabase定义了各自的对象Bookbook[Maxb]、RDatabaseReaderDB;Reader*r;BDatabaseBookDB;Book*b;对其函数进行调用实现各种功能。(3)主函数实现,调用各种函数。3.2函数功能表函数功能char*getname()获取姓名intgettag()获取删除标记intgetno()获取读者编号voidsetname(charna[])设置姓名以及编号voidaddreader(intn,char*na)增加读者voiddelbook()设置删除标记voidborrowbook(intbookid)借书操作intretbook(intbookid)还书操作voiddisp()读出读者信息BDatabase()构造函数,将book.txt读到book[]中intaddbook(intn,char*na)增加图书Book*query(intbookid)查找图书voidbookdata()图书库维护~BDatabase()析构函数,将book[]写到book.txt文件图3.17第四章功能模块的调试与测试4.1主菜单运行界面图4.1主菜单4.2图书维护模块的运行界面图4.2图书维护界面4.3读者维护模块的运行界面8图4.3读者维护界面4.4借书运行界面图4.4借书运行界面4.5还书运行界面图4.5还书运行界面4.6增加图书运行界面图4.6增加图书运行界面94.7增加读者运行界面图4.7增加读者运行界面4.8删除图书运行界面图4.8删除图书运行界面4.9删除读者运行界面图4.9删除读者运行界面10第五章心得体会通过这次课程设计,让我了解了更多关于设计时容易出现的错误,而且进一步的认识到平时学习积累的重要性。在刚进行编译的时候发现了很多的错误,都是平时应该注意的细节问题,还好与同学进行了很好的交流,得以纠正错误。由于能力问题,我只能设计这个简单的图书管理系统。它存在很多缺陷,在很多地方都存在不足。编写程序最重要的是谨慎,认真,因为哪怕是一个字符或一个标点的错误都会导致程序的错误,从而使程序无法调试运行。由这次编写课程设计的过程中让我更加了解到了自己的不足,那就是对编写程序的经验不足以及对理论知识的掌握不够透彻,以致程序中还存在许多缺点。如:在程序中还有部分功能不能按我的意识表达运行,当经人指点还是比较不错的实现了。以后自己应该多加练习,熟练的运用这门语言编辑程序。参考文献:【1】谭浩强C++程序设计清华大学出版社2004【2】郑莉C++程序设计(第三版)清华大学出版社2005【3】钱能C++程序设计教程清华大学出版社2004附录:程序代码#includeiostream#includeiomanip#includewindows.h#includestring#includefstream//输入/输出文件流类usingnamespacestd;constintMaxr=100;//最多的读者constintMaxb=100;//最多的图书constintMaxbor=5;//每位读者最多借五本书//读者类,实现对读者的信息的描述classReader{private:inttag;//删除标记1:已删0:未删longno;//读者学号charname[30];//读者姓名charsex[10];charban[30];11intborbook[Maxbor];//所借图书public:Reader(){}//构造函数char*getname(){returnname;}//获取姓名intgettag(){returntag;}//获取删除标记char*getsex(){returnsex;}char*getban(){returnban;}longgetno(){returnno;}//获取读者学号voidsetname(charna[])//设置姓名{strcpy(name,na);}voiddelbook()//设置删除标记{tag=1;}voidsetsex(chars[]){strcpy(sex,s);}voidsetban(charb[]){strcpy(ban,b);}voidaddreader(longn,char*na,char*s,char*b);//增加读者voidborrowbook(intbookid);//借书操作intretbook(intbookid);//还书操作voiddisp();//输出读者信息12};voidReader::addreader(longn,char*na,char*s,char*b)//增加读者{ofstreamoutfile(reader.txt,ios::out);tag=0;no=n;if(!outfile){cerropenerror!endl;exit(1);}strcpy(name,na);strcpy(sex,s);strcpy(ban,b);for(inti=0;iMaxbor;i++)borbook[i]=0;outfile.close();}voidReader::borrowbook(intbookid)//借书操作{for(inti=0;iMaxbor;i++){if(borbook[i]==0){borbook[i]=bookid;}}}intReader::retbook(intbookid)//还书操作{for(inti=0;iMaxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return1;}elsecontinue;}return0;}13voidReader::disp()//输出读者信息{cout学号setw(10)姓名setw(10)性别setw(10)班级endl;coutsetw(2)nosetw(10)namesetw(10)sexsetw(10)banendl;for(inti=0;iMaxbor;i++)if(borbook[i]!=0)coutborbook[i];}//读者类库,实现建立读者的个人资料classRDatabase{private:inttop;//读者记录指针Readerread[Maxr];//读者记录public:RDatabase();//构造函数,将reader.txt读到read[]中voidclear()//删除所有读者信息{top=-1;}intaddreader(longn,char*na,char*s,char*b);//增添读者信息Reader*query(intreaderid)//按编号查找{for(inti=0;i=top;i++)if(read[i]
本文标题:图书管理体统设计报告+代码
链接地址:https://www.777doc.com/doc-5834141 .html