1、面向对象程序设计专题试验汇报题 目: 图书管理系统设计 班 级: 姓 名: 学 号: 摘要二十一世纪是信息社会,信息作为社会最关键资源,将成为战略资源引发大家广泛关注。怎样获取信息?图书是我们最好获取信息方法,但因为图书馆图书收藏量大大增加,使传统图书管理员工作日益繁重起来。迫使大家起用新管理方法来管理图书,怎样把图书管理员从繁重工作中解脱出来呢?科学技术日新月异进步,让人类生活发生了巨大改变,计算机技术飞速发展,使各行各业在计算机技术应用方面得到了广泛普及和使用。信息化时代到来成为不可抗拒时尚,人类文明正在进入一个崭新时代。所以,图书管理系统也以方便、快捷、费用低优点正慢慢地进入大家生活,将
2、传统图书管理方法根本解脱出来,提升效率,减轻工人人员以往繁忙工作,减小犯错概率,使读者能够花更多时间在选择书和看书上。从而使大家有更多时间来获取信息、了解信息、掌握信息。关键词: C+;图书管理系统 Visual C+ 6.0 Abstract 21centuriesisresourcesthatinformationthatsociety,socialmostinconductandactionsininformation,willbecomethestrategyresourcescausetheextensiveconcerninpeople.Howtoobtaintheinformat
3、ion?Booksisworkthatthewaythatweobtaintheinformationbest,butcollectandkeeptohavegreatcapacitythe bigincrementbecauseofthelibrarybooks,maketraditionalbooksmanagingpersonincreasinglyheavytogetup.Forcingpeoplerisestomanagethebookswiththenewmanagementmethod,showingtosetfreeoutthebooksthemanagingpersonfro
4、mtheheavywork?Theadvanceofthesciencetechniquecontinuouschangesandimprovements,letmankindthelifetookplacetheenormousvariety,thecalculatorfliestechnicallytodevelopsoon,makingtheeverytradegettheextensiveuniversalitywithuseintheaspectsofcalculatortechniqueapplying.Theinformationturnstheagescomesthecurre
5、ntthatbecomecantresist,humancivilizationenterabrand-newages.Therefore,booksmanagementsystemtoowiththeconvenience,fast,lowadvantageinexpensesisenteringpeoplelifeslowly,managethetraditionalbookstowaytosetfreeoutthoroughly,lifthigh-efficiency,alleviateworkerspersonnelformerbusywork,letuptocomeamissallr
6、ate,canmakethereaderspendmoretimeatchoosethebookwithreadtheinthebook.Frombutmakethatpeoplehavemoretimetoobtaintheinformation,understandtheinformationandcontroltheinformation.Keywords:C+;Booksmanagementsystem;Visual C+6.0目录第1章 概述11.1 题目及要求11.2背景和意义11.3问题处理方案2第2章 系统分析22.1系统整体需求22.2 系统功效需求22.3系统功效总体设计3
7、3.1 系统整体设计33.2 系统关键模块设计4第4章 系统实现6第5章 结束语11参考文件12附录13第1章 概述1.1 题目及要求1)问题描述定义图书类,属性有:书名、出版社、ISBN号、作者、库存量、价格等信息和相关对属性做操作行为。关键完成对图书销售、统计和图书简单管理。2)功效要求(1)销售功效。购置书籍时,输入对应ISBN号,并在书库中查找该书相关信息。假如有库存量,输入购置册数,进行对应计算。假如库存量不够,给出提醒信息,结束购置。(2)图书简单管理功效。添加功效:关键完成图书信息添加,要求ISBN号唯一。当添加了反复编号时,则提醒数据添加反复并取消添加。查询功效:可按书名、IS
8、BN号、作者、出版社进行查询。若存在对应信息,输出所查询信息,若不存在该统计,则提醒“该标题不存在!”。修改功效:可依据查询结果对对应统计进行修改,修改时注意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 b=4Y按
14、作者查询输入错误按出版社查询显示图书信息 图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请选择操作nendl;couttt
15、tt1 创建新书信息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 newbook(a,b,c,d
16、,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,输出对应选择提醒,实施以下代码: cout请选择查询
17、方法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)按书号查询查询书号为0001图书步骤一:在主界面
18、选择4。步骤二:回车后点击“1”,然后输入0001,回车。 图11(2)按书名查询查询书名为“高等数学”这本书步骤一:在主界面选择4。步骤二:回车后点击“2”,然后输入“高等数学”,回车 图12(3)按作者名查询步骤一:在主界面选择4。步骤二:回车后点击“3”,然后输入“天路公考”,回车 图135、 按书号删除图书信息 当选择按钮5,实施function=5条件语句。首先定义字符串a,然后main函数调用#include,输入对应书号,接下来建立对象del(a, , , , , ),调用删除函数delete_by_isbn(),实现删除功效。比如删除0003号图书步骤一:在登陆界面输入“5”,
19、回车;步骤二:按提醒输入要删除书号“0003”,回车。 图146、 退出图书管理系统 当选择按钮6,实施function=6条件语句。此时实施空操作,跳出while循环,实施main函数后续语句,利用system(CLS);清屏后由写函数Book.write ();把操作后数据读入到文件中,最终调用头文件#include输出对应提醒信息后退出系统。 在登录界面输入“5”,回车。 图15第5章 结束语这次课程设计历时三个星期,经过课程设计,我发觉了自己很多不足,知识上还存在很多漏洞,我看到了自己实践经验还比较缺乏,理论联络实际能力还急需提升。当自己做时候才知道好多地方不懂,然后又找来C+书仔细看
20、相关知识。再做再改,即使现在还有好多缺点,但好歹也算是完成了。 为完成这次课程设计我确实付出很多,有苦有乐,这十几天工作日子,怎么形容呢,每次做不出来就会心情不好,感觉自己什么全部没有做成,慢慢探索着,开始入门,而且有了一点成就感,就这么每一次全部比前一次收获多,心情也慢慢好了,而且我系统也一天比一天完善。毕竟没有白费心血,以艰辛付出最终还是取得不少回报! 总而言之,计算机是一门实践性很强学科,要想学好,就必需多练习,多总结,只有这么,才能够愈加深入地了解,才能够学会怎样去利用它。参考文件1郑莉,董渊,何江舟.C+程序设计M.清华大学出版社,.2谭浩强.C程序设计M.清华大学出版社.3李强,贾
21、云霞.Visual C+项目开发实践.北京:中国铁道出版社,.4李书贤.C+Primer汉字版M.人民邮电出版社附录源代码:#include#include /cstdio是将stdio.h内容用C+头文件形式表示出来。 #include /stdlib 头文件即standard library标准库头文件using namespace std;#include class book private:string isbn; /书号 string name; /书名string writer; /作者string publisher; /出版社string time; /出版时间string
22、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()return publisher;void display() /图书内容显示 cout-e
23、ndl; 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添加失败,内存已满!endl; else shumusum=a; sum+; cout添加新书目成功
24、,以下是本书信息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; sum+; cout添加新书目成功,以下是本书信息=100) cout添加失败,内存已满
25、!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;jsum-1;j+) shumuj=shumuj+1; flag=1; sum-; break;
26、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+) if(shumui.get_isbn()=names) shumui.display
27、 (); 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 flag=0; for(int i=0;isum;i+) if(shumui.get_writ
28、er()=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); fread(&sum,2,1,fp); /从一个文件中读数据&sum:用于接收数据地址(
29、指针);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)表示正常退出 fwrite(&sum,2,1,fp2); for(int i=0;isum;i+)fwrit
30、e(&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)coutendl;coutt-n;couttttt欢迎使用图书管理系统endl;couttttten
31、dl;couttttt 请选择操作nendl;couttttt1 创建新书信息endl;couttttt2 修改图书信息endl;couttttt3 显示全部图书endl;couttttt4 按指定条件查询书目endl;couttttt5 按书号删除书目endl; couttttt6 退出系统并保留修改endl;coutttttendl; coutttt (查询可按书号/ 作者/ 书名查询)endl; coutfunction;/图书书号、书名、作者、出版社、出版时间、价格信息录入换码符t,表示水平制表位(horizeontal tab),它作用是将光标移到最靠近8倍数位置,使得后面输入以后开
32、始。换句话说,让全部数据全部紧跟在制表符后面输出。/换码符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);Book.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(CLS);/显示全部图书信息else if(function=3)cout这是全部藏书:endl;Book.disp