欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:35348980       资源大小:184.50KB        全文页数:20页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    如有侵权,请联系网站删除,仅供学习与交流面向对象程序设计图书管理系统设计【精品文档】第 15 页面向对象程序设计专题实验报告题 目: 图书管理系统设计 班 级: 姓 名: 学 号: 摘要二十一世纪是信息的社会,信息作为社会最主要的资源,将成为战略资源引起人们广泛的关注。如何获取信息?图书是我们最好的获取信息的方式,但由于图书馆图书收藏量大大增加,使传统的图书管理员的工作日益繁重起来。迫使人们起用新的管理方法来管理图书,如何把图书管理员从繁重的工作中解脱出来呢? 科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可抗拒的潮流,人类文明正在进入一个崭新的时代。因此,图书管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。从而使人们有更多时间来获取信息、了解信息、掌握信息。关键词: C+;图书管理系统 Visual C+ 6.0 Abstract 21 centuries is resources that information that society, social most in conduct and actions in information, will become the strategy resources cause the extensive concern in people.How to obtain the information?Books is work that the way that we obtain the information best, but collect and keep tohave great capacity the big increment because of the library books, make traditional booksmanaging person increasingly heavy to get up.Forcing people rises to manage the books with the new management method, showing tosetfree out the books the managing person from the heavy work?The advance of the science technique continuous changes and improvements, let mankind the life took place the enormous variety, thecalculator flies technically to develop soon, making the every trade get the extensive universality with use in the aspects of calculator technique applying.The information turns the ages comes thecurrent that become can't resist, human civilization enter a brand-new ages.Therefore, books management system too with the convenience, fast, low advantage in expenses is entering people life slowly, manage the traditional books to way to set free out thoroughly, lift high-efficiency, alleviate worker's personnel former busy work, let up to come amiss all rate, can make the reader spend more time at choose the book with read the in the book.From butmake that people have more time to obtain the information, understand the information and control the information.Keywords: C+;Books management system;Visual C+6.0目录第1章 概述1.1 题目及要求1)问题描述定义图书类,属性有:书名、出版社、ISBN号、作者、库存量、价格等信息和相关的对属性做操作的行为。主要完成对图书的销售、统计和图书的简单管理。2)功能要求(1)销售功能。购买书籍时,输入相应的ISBN号,并在书库中查找该书的相关信息。如果有库存量,输入购买的册数,进行相应计算。如果库存量不够,给出提示信息,结束购买。(2)图书简单管理功能。添加功能:主要完成图书信息的添加,要求ISBN号唯一。当添加了重复的编号时,则提示数据添加重复并取消添加。查询功能:可按书名、ISBN号、作者、出版社进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该标题不存在!”。修改功能:可根据查询结果对相应的记录进行修改,修改时注意ISBN号的唯一性。删除功能:主要完成图书信息的删除。输入要删除的ISBN号,根据编号删除该物品的记录,如果该编号不在物品库中,则提示“该编号不存在”。(3)统计功能。输出当前书库中所有图书的总数及详细信息;可按书的价格、库存量、作者、出版社进行统计,输出统计信息时,要按从大到小进行排序。图书存盘:将当前程序中的图书信息存入文件中。读出信息:从文件中将图书信息读入程序。1.2背景和意义背景:图书馆是我们日常生活中必不可少的学习、阅读的场所,借阅图书则是我们进入图书馆进行阅读的首要行为。为了能够借阅到我们想要借阅的图书,我们需要借助电脑查询需要借阅的图书的具体信息,然后找出图书后再去借阅处刷卡登记。如今我们处于一个知识大爆炸的时代,图书种类数量剧增,工作人员每天不仅要登记借阅者借阅的图书,还要登记新购进的图书,工作量繁重。而随着科学技术的进步,计算机日益进入我们的生活工作之中,我们能否利用计算机技术,取代原来的手工登记,提高图书管理的效率呢?答案是肯定的。意义:借助计算机C+中的知识,编写相应的图书管理程序就可以实现这一功能。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。,不仅能节省我们大量的工作时间,减轻巨大的工作量,提高工作效率,还能够减少工作失误。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。1.3问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;(8)完成系统总结报告。第2章 系统分析2.1系统的整体需求该系统需要完成的内容:用类和对象实现新书上架、 图书浏览、 图书查询、图书下架。该系统需要完成的整体目标:系统能够正常运行,基本上实现添加、删除图书信息,显示所有信息,能够由相应条件查阅图书信息这四种功能。2.2 系统的功能需求必须完成的模块:(1)界面模块:当进入该管理系统时候,提示相应的说明,引导如何操作(2) 新书上架模块:能够添加书号、书名、作者名、出版社、出版时间、价格这些图书信息。(3) 图书浏览模块:能够输出所有图书信息。(4) 图书查询模块:可按条件查询图书信息,当输入书号或书名或作者名时候,相对应的图书信息便可自动搜索出来。(5) 图书下架模块:可按书号删除指定图书信息。2.3系统功能总体设计 图书管理系统主界面系统退出图书删除图书查询图书浏览图书修改信息录入按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 信息录入模块流程图 (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按作者查询输入错误按出版社查询显示图书信息 图6 图书查询模块流程图(6)图书下架模块 开始进入主界面,选择5,就可以按ISBN好删除图书。开始输入a a=5 选择要删除图书的ISBN删除完成 图7 图书下架模块流程图第4章 系统实现1登入界面实现方式:调用主函数,利用Book.read ()读入数据,同时定义功能选项按钮char function='0',对function的真假进行判断,若function为真,即与初值相同,实现while循环内语句。界面主要程序语句:cout<<endl;cout<<"t*n"cout<<"tttt欢迎使用图书管理系统"<<endl;cout<<"ttttt请选择操作n"<<endl;cout<<"tttt1 创建新书信息"<<endl; cout<<"tttt2 修改图书信息"<<endl;cout<<"tttt3 显示所有图书"<<endl;cout<<"tttt4 按指定条件查询书目"<<endl;cout<<"tttt5 按书号删除书目"<<endl; cout<<"tttt6 退出系统并保存修改"<<endl; cout<<"ttt(查询可按书号/ 作者/ 书名查询)"<<endl; cout<<"t*n"调试运行代码后结果如下: 图82、创建图书信息当选择按钮1,执行main函数中function='1'的条件语句,首先定义字符串string a,b,c,d,e,f; 然后调用#include<iostream>,根据提示输入相应的书本信心,建立对象book newbook(a,b,c,d,e,f);,利用添加函数Book.add(newbook)把数据添加到新建对象里,然后调用display()函数显示此次输入的信息。 输入数字1后按提示输入相应信息,结果如下: 图93、 显示所有图书信息当选择按钮3,执行function='3'的条件语句。Main函数调用#include<iostream>,利用如下语句: cout<<"这是所有藏书:"<<endl; cout<<"*"<<endl;输出相应的提示信息和图案,然后调用函数display_all (),显示出所有信息。 图10 4、 按条件查询 当选择按钮4,执行function='4'的条件语句。main函数调用#include<iostream>,输出相应选择的提示,执行如下代码: cout<<"请选择查询方式"<<endl; cout<<"1 按ISBN查询"<<endl; cout<<"2 按书名查询"<<endl; cout<<"3 按作者查询"<<endl; cout<<"3 按出版社查询"<<endl;然后定义字符j和字符串search,此时j是作为按钮使用,search是为了输入你要查询的内容。子按钮功能的实现再次调用#include<iostream>文件,当输入好相应的信息,执行如下语句: cout<<"以下是查询结果"<<endl; cout<<"-"<<endl;给出提示后执行搜索函数search_by_isbn(),同理利用search_by_name()、search_by_writer()实现书名查找,按作者查找的功能。(1)按书号查询查询书号为0001的图书步骤一:在主界面选择4。步骤二:回车后点击“1”,然后输入0001,回车。 图11(2)按书名查询查询书名为“高等数学”这本书步骤一:在主界面选择4。步骤二:回车后点击“2”,然后输入“高等数学”,回车 图12(3)按作者名查询步骤一:在主界面选择4。步骤二:回车后点击“3”,然后输入“天路公考”,回车 图135、 按书号删除图书信息 当选择按钮5,执行function='5'的条件语句。首先定义字符串a,然后main函数调用#include<iostream>,输入相应的书号,接下来建立对象del(a," "," "," "," "," "),调用删除函数delete_by_isbn(),实现删除功能。例如删除0003号图书步骤一:在登陆界面输入“5”,回车;步骤二:按提示输入要删除的书号“0003”,回车。 图146、 退出图书管理系统 当选择按钮6,执行function='6'的条件语句。此时执行空操作,跳出while循环,执行main函数后续语句,利用system("CLS");清屏后由写函数Book.write ();把操作后的数据读入到文件中,最后调用头文件#include<iostream>输出相应的提示信息后退出系统。 在登录界面输入“5”,回车。 图15第5章 结束语这次课程设计历时三个星期,通过课程设计,我发现了自己的很多不足,知识上还存在很多漏洞,我看到了自己的实践经验还比较缺乏,理论联系实际的能力还急需提高。当自己做的时候才知道好多地方不懂,然后又找来C+的书仔细看相关知识。再做再改,虽然现在还有好多缺陷,但好歹也算是完成了。 为完成这次课程设计我确实付出很多,有苦有乐,这十几天的工作日子,怎么形容呢,每次做不出来就会心情不好,感觉自己什么都没有做成,慢慢的摸索着,开始入门,而且有了一点成就感,就这样每一次都比前一次收获多,心情也慢慢好了,而且我的系统也一天比一天的完善。毕竟没有白费心血,以艰辛的付出最终还是获得不少回报! 总之,计算机是一门实践性很强的学科,要想学好,就必须多练习,多总结,只有这样,才能够更加深入地了解,才能够学会如何去运用它。参考文献1郑莉,董渊,何江舟.C+程序设计M.清华大学出版社,2010.2谭浩强.C程序设计M.清华大学出版社.20073李强,贾云霞.Visual C+项目开发实践.北京:中国铁道出版社,2004.4李书贤.C+Primer中文版M.人民邮电出版社附录源代码:#include<iostream>#include<cstdio> /cstdio是将stdio.h的内容用C+头文件的形式表示出来。 #include<stdlib.h> /stdlib 头文件即standard library标准库头文件using namespace std;#include<string>class bookprivate:string isbn; /书号 string name; /书名string writer; /作者string 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()return publisher;void display() /图书内容的显示 cout<<"-"<<endl; cout<<"ISBN号:"<<isbn<<endl<<"书名:"<<name<<endl<<"作者:"<<writer<<endl<<"出版社:"<<publisher<<endl<<"出版时间:"<<time<<endl<<"价格:"<<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<<"添加新书目成功,以下是本书信息"<<endl; void rebookinfo(book a) int flag=0; if(sum=0)cout<<"修改失败,已经没有存档了!"<<endl; else for(int i=0;i<sum;i+) if(shumui.get_isbn()=a.get_isbn()cout<<"修改书目成功,以下是修改的书信息"<<endl;/shumui.display ();break; if(!flag) cout<<"该书籍不存在!"<<endl; if(sum>=100) cout<<"添加失败,内存已满!"<<endl; else shumusum=a; sum+; cout<<"添加新书目成功,以下是本书信息"<<endl; if(sum>=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;i<sum;i+) if(shumui.get_isbn()=a.get_isbn() cout<<"删除书目成功,以下是删除的书信息"<<endl; shumui.display (); for(int j=i;j<sum-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;i<sum;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;i<sum;i+) 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;i<sum;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;i<sum;i+) if(shumui.get_writer()=names) shumui.display (); flag=1; if(flag=0) cout<<"该出版社不存在!"<<endl; void display_all() /显示全部信息 for(int i=0;i<sum;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:用于接收数据的地址(指针);4:单个元素的大小,单位是字节;1:.元素个数,每次读取个元素;fp:提供数据的文件指针for(int i=0;i<sum;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;i<sum;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')cout<<endl;cout<<"t-n"cout<<"tttt欢迎使用图书管理系统"<<endl;cout<<"tttt"<<endl;cout<<"tttt 请选择操作n"<<endl;cout<<"tttt1 创建新书信息"<<endl;cout<<"tttt2 修改图书信息"<<endl;cout<<"tttt3 显示所有图书"<<endl;cout<<"tttt4 按指定条件查询书目"<<endl;cout<<"tttt5 按书号删除书目"<<endl; cout<<"tttt6 退出系统并保存修改"<<endl;cout<<"tttt"<<endl; cout<<"ttt (查询可按书号/ 作者/ 书名查询)"<<endl; cout<<"t-n"cin>>function;/图书书号、书名、作者、出版社、出版时间、价格信息的录入换码符't',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。/换码符't',表示水平制表位,它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。换句话说,让所有的数据都紧跟在制表符后面输出。if(function='1') string a,b,c,d,e,f; /定义字符串cout<<"请输入书的isbn编号"<<endl;cin>>a;cout<<"请输入书名"<<endl;cin>>b;cout<<"请输入书作者名"<<endl;cin>>c;cout<<"请输入书的出版社"<<endl;cin>>d;cout<<"请输入书的出版时间"<<endl;cin>>e;cout<<"请输入书的价格"<<endl;cin>>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 << "请输入需要修改的图书的编号:"<<endl; cin>>a;cout<<"请输入书的isbn编号"<<endl;cin>>a;cout<<"请输入书名"<<endl;cin>>b;cout<<"请输入书作者名"<<endl;cin>>c;cout<<"请输入书的出版社"<<endl;cin>>d;cout<<"请输入书的出版时间"<<endl;cin>>e;cout<<"请输入书的价格"<<endl;cin>>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.display_all (); system("PAUSE");system("CLS"); /按条件查询图书,输入按书号查询,输入按书名查询,输入按作者查询else if(function='4') cout<<"请选择查询方式"<<endl; cout<<"1 按ISBN查询"<<endl; cout<<"2 按书名查询"<<endl; cout<<"3 按作者查询"<<endl; cout<<"4 按出版社查询"<<endl; char j; string search; cin>>j; if(j='1') cout<<"请输入ISBN号"<<endl; /按书号查询 cin>>search; cout<<"以下是查询结果"<<endl; Book.search_by_isbn (search); /按书号查询图书信息函数的调用 system("PAUSE"); system("CLS"); else if(j='2') cout<<"请输入书名"<<endl; /按书名查询 cin>>search; cout<<"以下是查询结果"<<endl; Book.search_by_name (search); /按书名查询图书信息函数的调用 system("PAUSE"); system("CLS"); else if(j='3') /按作者查询 cout<<"请输入作者名"<<endl;

    注意事项

    本文(面向对象程序设计—图书管理系统设计.doc)为本站会员(豆****)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档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  

    收起
    展开