面向对象程序设计—图书管理系统设计.doc

上传人:豆**** 文档编号:35348980 上传时间:2022-08-21 格式:DOC 页数:20 大小:184.50KB
返回 下载 相关 举报
面向对象程序设计—图书管理系统设计.doc_第1页
第1页 / 共20页
面向对象程序设计—图书管理系统设计.doc_第2页
第2页 / 共20页
点击查看更多>>
资源描述

《面向对象程序设计—图书管理系统设计.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计—图书管理系统设计.doc(20页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、如有侵权,请联系网站删除,仅供学习与交流面向对象程序设计图书管理系统设计【精品文档】第 15 页面向对象程序设计专题实验报告题 目: 图书管理系统设计 班 级: 姓 名: 学 号: 摘要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢?科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时

2、代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。关键词: C+;图书管理系统 Visual C+ 6.0 Abstract 21centuriesisresourcesthatinformationthatsociety,socialmostinconductandactionsininformation,willbecomethes

3、trategyresourcescausetheextensiveconcerninpeople.Howtoobtaintheinformation?Booksisworkthatthewaythatweobtaintheinformationbest,butcollectandkeeptohavegreatcapacitythe bigincrementbecauseofthelibrarybooks,maketraditionalbooksmanagingpersonincreasinglyheavytogetup.Forcingpeoplerisestomanagethebookswit

4、hthenewmanagementmethod,showingtosetfreeoutthebooksthemanagingpersonfromtheheavywork?Theadvanceofthesciencetechniquecontinuouschangesandimprovements,letmankindthelifetookplacetheenormousvariety,thecalculatorfliestechnicallytodevelopsoon,makingtheeverytradegettheextensiveuniversalitywithuseintheaspec

5、tsofcalculatortechniqueapplying.Theinformationturnstheagescomesthecurrentthatbecomecantresist,humancivilizationenterabrand-newages.Therefore,booksmanagementsystemtoowiththeconvenience,fast,lowadvantageinexpensesisenteringpeoplelifeslowly,managethetraditionalbookstowaytosetfreeoutthoroughly,lifthigh-

6、efficiency,alleviateworkerspersonnelformerbusywork,letuptocomeamissallrate,canmakethereaderspendmoretimeatchoosethebookwithreadtheinthebook.Frombutmakethatpeoplehavemoretimetoobtaintheinformation,understandtheinformationandcontroltheinformation.Keywords:C+;Booksmanagementsystem;Visual C+6.0目录第1章 概述1

7、.1 题目及要求1)问题描述定义图书类,属性有:书名、出版社、ISBN号、作者、库存量、价格等信息和相关的对属性做操作的行为。主要完成对图书的销售、统计和图书的简单管理。2)功能要求(1)销售功能。购买书籍时,输入相应的ISBN号,并在书库中查找该书的相关信息。如果有库存量,输入购买的册数,进行相应计算。如果库存量不够,给出提示信息,结束购买。(2)图书简单管理功能。添加功能:主要完成图书信息的添加,要求ISBN号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加。查询功能:可按书名、ISBN号、作者、出版社进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该标题不存在

8、!”。修改功能:可根据查询结果对相应的记录进行修改,修改时注意ISBN号的唯一性。删除功能:主要完成图书信息的删除。输入要删除的ISBN号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。(3)统计功能。输出当前书库中所有图书的总数及详细信息;可按书的价格、库存量、作者、出版社进行统计,输出统计信息时,要按从大到小进行排序。图书存盘:将当前程序中的图书信息存入文件中。读出信息:从文件中将图书信息读入程序。1.2背景和意义背景:图书馆是我们日常生活中必不可少的学习、阅读的场所,借阅图书则是我们进入图书馆进行阅读的首要行为。为了能够借阅到我们想要借阅的图书,我们需要借助电

9、脑查询需要借阅的图书的具体信息,然后找出图书后再去借阅处刷卡登记。如今我们处于一个知识大爆炸的时代,图书种类数量剧增,工作人员每天不仅要登记借阅者借阅的图书,还要登记新购进的图书,工作量繁重。而随着科学技术的进步,计算机日益进入我们的生活工作之中,我们能否利用计算机技术,取代原来的手工登记,提高图书管理的效率呢?答案是肯定的。意义:借助计算机C+中的知识,编写相应的图书管理程序就可以实现这一功能。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。,不仅能节省我们大量的工作时间,减轻巨大的工作

10、量,提高工作效率,还能够减少工作失误。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。1.3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;(8)完成系统总结报告。第2章 系统分析2.1系统的整体需求该系统需要完成的内容:用类和对象实现新书上架、 图书浏览、 图书查询、图书

11、下架。该系统需要完成的整体目标:系统能够正常运行,基本上实现添加、删除图书信息,显示所有信息,能够由相应条件查阅图书信息这四种功能。2.2 系统的功能需求必须完成的模块:(1)界面模块:当进入该管理系统时候,提示相应的说明,引导如何操作(2) 新书上架模块:能够添加书号、书名、作者名、出版社、出版时间、价格这些图书信息。(3) 图书浏览模块:能够输出所有图书信息。(4) 图书查询模块:可按条件查询图书信息,当输入书号或书名或作者名时候,相对应的图书信息便可自动搜索出来。(5) 图书下架模块:可按书号删除指定图书信息。2.3系统功能总体设计 图书管理系统主界面系统退出图书删除图书查询图书浏览图书

12、修改信息录入按ISBN按出版社按作者按书名价格出版时间作者出版社书名ISBN 图1 系统功能总框图 第3章 系统设计开始输入a3.1 系统的整体设计NY a=1NY创建新书信息 a=2YN a=3NY显示所有图书修改图书信息 a=4NY a=5按条件查询 a=6按书号删除图书结束 图2 系统整体流程图3.2 系统的主要模块设计(1) 主界面模块。该模块显示管理程序的名称,提示相应的操作。(2) 信息录入模块。在主界面情况下,选择1,即进入图书信息录入模块,录完后信息保存到txt文件中。开始输入a a=1创建新书信息录入ISBN、书名、书号、作者、出版社、出版时间、价格保存到txt文件中 图3

13、信息录入模块流程图 (3)信息修改模块。开始程序开始,进入主界面,输入2,输入要修改图书的ISBN,对图书的信息进行修改。输入a a=2输入要修改图书的ISBN录入新的图书信息修改完成 图4 信息修改模块流程图(4) 图书浏览模块程序开始,进入主界面,输入3,就可以对所有的图书信息进行浏览,查看。开始输入a a=3 读取txt文件信息 显示图书信息 图5 图书浏览模块流程图 (5)图书查询模块开始 程序开始,进入主界面,输入4,进入查询模块,可分别按ISBN、书名、作者、出版社等选项查询图书信息输入a a=4 进入图书查询界面输入b b=1YNNY按ISBN查询 b=2NY b=3按书名查询N

14、 b=4Y按作者查询输入错误按出版社查询显示图书信息 图6 图书查询模块流程图(6)图书下架模块 开始进入主界面,选择5,就可以按ISBN好删除图书。开始输入a a=5 选择要删除图书的ISBN删除完成 图7 图书下架模块流程图第4章 系统实现1登入界面实现方式:调用主函数,利用Book.read ()读入数据,同时定义功能选项按钮char function=0;,对function的真假进行判断,若function为真,即与初值相同,实现while循环内语句。界面主要程序语句:coutendl;coutt*n;couttttt欢迎使用图书管理系统endl;coutttttt请选择操作nend

15、l;couttttt1 创建新书信息endl; couttttt2 修改图书信息endl;couttttt3 显示所有图书endl;couttttt4 按指定条件查询书目endl;couttttt5 按书号删除书目endl; couttttt6 退出系统并保存修改endl; coutttt(查询可按书号/ 作者/ 书名查询)endl; coutt*n;调试运行代码后结果如下: 图82、创建图书信息当选择按钮1,执行main函数中function=1的条件语句,首先定义字符串string a,b,c,d,e,f; 然后调用#include,根据提示输入相应的书本信心,建立对象book newbo

16、ok(a,b,c,d,e,f);,利用添加函数Book.add(newbook)把数据添加到新建对象里,然后调用display()函数显示此次输入的信息。 输入数字1后按提示输入相应信息,结果如下: 图93、 显示所有图书信息当选择按钮3,执行function=3的条件语句。Main函数调用#include,利用如下语句: cout这是所有藏书:endl; cout*endl;输出相应的提示信息和图案,然后调用函数display_all (),显示出所有信息。 图10 4、 按条件查询 当选择按钮4,执行function=4的条件语句。main函数调用#include,输出相应选择的提示,执行

17、如下代码: cout请选择查询方式endl; cout1 按ISBN查询endl; cout2 按书名查询endl; cout3 按作者查询endl; cout3 按出版社查询endl;然后定义字符j和字符串search,此时j是作为按钮使用,search是为了输入你要查询的内容。子按钮功能的实现再次调用#include文件,当输入好相应的信息,执行如下语句: cout以下是查询结果endl; cout-endl;给出提示后执行搜索函数search_by_isbn(),同理利用search_by_name()、search_by_writer()实现书名查找,按作者查找的功能。(1)按书号查询

18、查询书号为0001的图书步骤一:在主界面选择4。步骤二:回车后点击“1”,然后输入0001,回车。 图11(2)按书名查询查询书名为“高等数学”这本书步骤一:在主界面选择4。步骤二:回车后点击“2”,然后输入“高等数学”,回车 图12(3)按作者名查询步骤一:在主界面选择4。步骤二:回车后点击“3”,然后输入“天路公考”,回车 图135、 按书号删除图书信息 当选择按钮5,执行function=5的条件语句。首先定义字符串a,然后main函数调用#include,输入相应的书号,接下来建立对象del(a, , , , , ),调用删除函数delete_by_isbn(),实现删除功能。例如删除

19、0003号图书步骤一:在登陆界面输入“5”,回车;步骤二:按提示输入要删除的书号“0003”,回车。 图146、 退出图书管理系统 当选择按钮6,执行function=6的条件语句。此时执行空操作,跳出while循环,执行main函数后续语句,利用system(CLS);清屏后由写函数Book.write ();把操作后的数据读入到文件中,最后调用头文件#include输出相应的提示信息后退出系统。 在登录界面输入“5”,回车。 图15第5章 结束语这次课程设计历时三个星期,通过课程设计,我发现了自己的很多不足,知识上还存在很多漏洞,我看到了自己的实践经验还比较缺乏,理论联系实际的能力还急需提

20、高。当自己做的时候才知道好多地方不懂,然后又找来C+的书仔细看相关知识。再做再改,虽然现在还有好多缺陷,但好歹也算是完成了。 为完成这次课程设计我确实付出很多,有苦有乐,这十几天的工作日子,怎么形容呢,每次做不出来就会心情不好,感觉自己什么都没有做成,慢慢的摸索着,开始入门,而且有了一点成就感,就这样每一次都比前一次收获多,心情也慢慢好了,而且我的系统也一天比一天的完善。毕竟没有白费心血,以艰辛的付出最终还是获得不少回报! 总之,计算机是一门实践性很强的学科,要想学好,就必须多练习,多总结,只有这样,才能够更加深入地了解,才能够学会如何去运用它。参考文献1郑莉,董渊,何江舟.C+程序设计M.清

21、华大学出版社,2010.2谭浩强.C程序设计M.清华大学出版社.20073李强,贾云霞.Visual C+项目开发实践.北京:中国铁道出版社,2004.4李书贤.C+Primer中文版M.人民邮电出版社附录源代码:#include#include /cstdio是将stdio.h的内容用C+头文件的形式表示出来。 #include /stdlib 头文件即standard library标准库头文件using namespace std;#includeclass bookprivate:string isbn; /书号 string name; /书名string writer; /作者st

22、ring publisher; /出版社string time; /出版时间string price; /图书价格public:book()book(string a,string b,string c,string d,string e,string f) isbn=a;name= b;writer=c;publisher=d;time=e; price=f; string get_name()return name;string get_isbn()return isbn; string get_writer()return writer; string get_publisher()re

23、turn publisher;void display() /图书内容的显示 cout-endl; coutISBN号:isbnendl书名:nameendl作者:writerendl出版社:publisherendl出版时间:timeendl价格:price元endl;cout-endl;class database:public book /公有继承(public)的定义class B:public A ;private:book shumu100;int sum;public: database()sum=0; void add(book a) if(sum=100) cout添加失败,

24、内存已满!endl; else shumusum=a; sum+; cout添加新书目成功,以下是本书信息endl; void rebookinfo(book a) int flag=0; if(sum=0)cout修改失败,已经没有存档了!endl; else for(int i=0;isum;i+) if(shumui.get_isbn()=a.get_isbn()cout修改书目成功,以下是修改的书信息endl;/shumui.display ();break; if(!flag) cout该书籍不存在!=100) cout添加失败,内存已满!endl; else shumusum=a;

25、 sum+; cout添加新书目成功,以下是本书信息=100) cout添加失败,内存已满!endl; else shumusum=a; sum+; cout添加新书目成功,以下是本书信息endl; void delete_by_isbn(book a) /按编号删除 int flag=0; if(sum=0) cout删除失败,已经没有存档了!endl; else for(int i=0;isum;i+) if(shumui.get_isbn()=a.get_isbn() cout删除书目成功,以下是删除的书信息endl; shumui.display (); for(int j=i;jsu

26、m-1;j+) shumuj=shumuj+1; flag=1; sum-;break; if(!flag) cout该书籍不存在!endl; void search_by_name(string names) /按书名查找 int flag=0; for(int i=0;isum;i+) if(shumui.get_name()=names) shumui.display (); flag=1; if(flag=0) cout该书籍不存在!endl; void search_by_isbn(string names) /按书号查找 int flag=0; for(int i=0;isum;i

27、+) if(shumui.get_isbn()=names) shumui.display (); flag=1; if(flag=0) cout该编号不存在!endl; void search_by_writer(string names) /按作者查找 int flag=0; for(int i=0;isum;i+) if(shumui.get_writer()=names) shumui.display (); flag=1; if(flag=0) cout该作者不存在!endl; void search_by_publisher(string names) /按出版社查找 int fl

28、ag=0; for(int i=0;isum;i+) if(shumui.get_writer()=names) shumui.display (); flag=1; if(flag=0) cout该出版社不存在!endl; void display_all() /显示全部信息 for(int i=0;isum;i+) shumui.display (); void read() FILE *fp; if(fp=fopen(book.txt,rb+)=NULL)/注意路径; rb+读写打开一个二进制文件,只允许读写数据。 cout文件打开失败n; system(PAUSE); exit(0);

29、fread(&sum,2,1,fp); /从一个文件中读数据&sum:用于接收数据的地址(指针);4:单个元素的大小,单位是字节;1:.元素个数,每次读取个元素;fp:提供数据的文件指针for(int i=0;isum;i+) fread(&shumui,sizeof(shumui),1,fp);fclose(fp); void write() FILE *fp2; if(fp2=fopen(book.txt,wb+)=NULL)/注意路径;wb+只写打开或新建一个二进制文件;只允许写数据。 cout文件打开失败n; system(PAUSE); exit(0);/exit(0)表示正常退出

30、fwrite(&sum,2,1,fp2); for(int i=0;isum;i+)fwrite(&shumui,sizeof(shumui),1,fp2);/sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。 fputc(EOF,fp2);/将字符ch写到文件指针fp所指向的文件的当前写指针的位置;EOF是End Of File 的缩写,表示“文件结束”。 fclose(fp2);/主函数void main() database Book;char function=0;Book.read ();int i;/界面while (function!= 6)cou

31、tendl;coutt-n;couttttt欢迎使用图书管理系统endl;coutttttendl;couttttt 请选择操作nendl;couttttt1 创建新书信息endl;couttttt2 修改图书信息endl;couttttt3 显示所有图书endl;couttttt4 按指定条件查询书目endl;couttttt5 按书号删除书目endl; couttttt6 退出系统并保存修改endl;coutttttendl; coutttt (查询可按书号/ 作者/ 书名查询)endl; coutfunction;/图书书号、书名、作者、出版社、出版时间、价格信息的录入换码符t,表示水平

32、制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。/换码符t,表示水平制表位,它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。if(function=1) string a,b,c,d,e,f; /定义字符串cout请输入书的isbn编号a;cout请输入书名b;cout请输入书作者名c;cout请输入书的出版社d;cout请输入书的出版时间e;cout请输入书的价格f;book newbook(a,b,c,d,e,f);Boo

33、k.add(newbook);newbook.display();system(PAUSE);system(CLS);else if(function=2)string a,b,c,d,e,f;/定义字符串cout 请输入需要修改的图书的编号:a;cout请输入书的isbn编号a;cout请输入书名b;cout请输入书作者名c;cout请输入书的出版社d;cout请输入书的出版时间e;cout请输入书的价格f;book newbook(a,b,c,d,e,f);Book.rebookinfo(newbook); / newbook.display();system(PAUSE);system(

34、CLS);/显示所有图书信息else if(function=3)cout这是所有藏书:endl;Book.display_all (); system(PAUSE);system(CLS); /按条件查询图书,输入按书号查询,输入按书名查询,输入按作者查询else if(function=4) cout请选择查询方式endl; cout1 按ISBN查询endl; cout2 按书名查询endl; cout3 按作者查询endl; cout4 按出版社查询j; if(j=1) cout请输入ISBN号search; cout以下是查询结果endl; Book.search_by_isbn (search); /按书号查询图书信息函数的调用 system(PAUSE); system(CLS); else if(j=2) cout请输入书名search; cout以下是查询结果endl; Book.search_by_name (search); /按书名查询图书信息函数的调用 system(PAUSE); system(CLS); else if(j=3) /按作者查询 cout请输入作者名endl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com