c++图书管理系统实验报告(共32页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《c++图书管理系统实验报告(共32页).doc》由会员分享,可在线阅读,更多相关《c++图书管理系统实验报告(共32页).doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上面向对象程序设计项目报告图书管理系统的设计与实现姓 名:黄为涛课 程 名 称: C/C+程序设计指 导 教 师:郭栋梁2016年5月 目录项目名称 图书管理系统设计黄为涛(燕山大学 信息科学与工程学院)摘 要: 本系统主要为了实现图书的管理如:增删改查及图书的销售和统计功能。主要运用了类的设计编程思想进行设计,并且运用动态数组vector和引用类型参数进行成程序的设计,函数的重载。程序的进行利用交互式利用到if.else,switch,while,for等结构的搭配使用。利用C+中的IO流进行文件的读写操作,从而实现书数据的读入等功能.在程序设计初期通过UML类图进行
2、类的功能设计,从而通过类之间的一系列关系进行整个程序的搭建1 程序流程图开始图书销售图书管理图书统计根据ISBN号查询书籍增删改查按图书价格按出版社按作者按库存量 结束2 类的设计一共设计了5个类Book类:设计图书的属性及行为Interface类:进行界面的设计及操作交互的重要设计,是本程序的主干框架ReadDate类:主要负责程序启动时读取本地数据,程序结束时保存数据的功能ManageBook类:负责对图书的增,删,改,查.使用时要利用对象Sort类:根据各种数据为图书排序显示接下来将详细介绍这几个类的构成.2.1 Book类 1.1.1 字段设计了author(string),ISBN(
3、string),name(string) ,price(double),pulisher(string),stock(int)共六个成员数据表示图书的作者,ISBN,名称,价格,出版社,库存1.1.2 方法进行了构造函数的重载并且设计了三大类方法,主要包括set类,get类Show类分别进行对图书的数据的设置,获取,显示2.2 Interface类 利用字符进行界面的设计和在该界面下的交互并将其方法都设计成static方法,这样可以在没有对象的时候都可以调用,达到使用方便的效果。其中main()为主界面,manage()为图书管理界面,sell()为图书销售界面,statistics()为图书
4、的统计界面,形参是Book类vector的引用,以 达到对图书数据的直接操作其效果和主要源代码如下:1.2.1Mian(vector&theBookList)printf(_n);printf(|1|2|3|4|n);printf(|n);printf(|图书销售|图书管理|图书统计|退出|n);printf(|程序|n);printf(|n);printf(-n);printf(请按相应的数字进行下一步操作:n);inta;cina;switch(a)case1:Interface:sell(theBookList);break;case2:Interface:manage(theBookL
5、ist);break;case3:Interface:statistics(theBookList);break;case4:ReadDate:saveDate(theBookList);exit(0);break;default:cout请输入正确数字;break;1.2.2 sell(vector&theBookList)printf(_n);printf(|1|2|0|n);printf(|请输入图书ISBN号码|退出|返回|n);printf(|n);printf(|按回车查询|程序|主菜单|n);printf(-|n);printf(请按相应的数字进行下一步操作:n);inta;ci
6、na;switch(a)case1:/这是一套交互代码如果看不懂了就加断点调试一下就很容易知道了couttheISBN;inti;for(i=0;i=theBookList.size()-1;i+)/查询对比ISBNif(theISBN=theBookList.at(i).ISBN)theBookList.at(i).show();/书籍购买loop:coutbooknum;/标记用于goto语句if(booknumtheBookList.at(i).stock)cout您输入的购买数量大于库存数量,请重新输入或放弃:;coutchoice;if(choice=1)gotoloop;elsei
7、f(choice=2)gotoloop1;elsecout请输入正确的待选项;gotoloop3; elsenoBuy=false;theBookList.at(i).stock-=booknum;cout购买成功,是否继续购买;coutchoice;if(choice=Y)printf(n);gotoloop;elseif(choice=N)printf(n);gotoloop1;elsecout请输入正确的待选字符;gotoloop2;/theBookList.at(i).while(noBuy);break;/注意该部分代码应该写在for循环之外if(i=theBookList.size
8、()coutyn;if(yn=N)Interface:main(theBookList);if(yn=Y)continue; break;case2:ReadDate:saveDate(theBookList);/退出之前保存数据exit(0);case0:Interface:main(theBookList);break; 1.2.3 manage(vector&theBookList)其中包含了对书籍操作的manage类,具体请参照manage 类ManageBookmanageBook;printf(_n);printf(|1|2|3|4|5|0|n);printf(|添加|查询|修改|
9、删除|退出程序|返回主菜单|n);printf(-n);printf(请按相应的数字进行下一步操作:n);inta;cina;if(a=0)Interface:main(theBookList);elseif(a=1)manageBook.addBook(theBookList);elseif(a=2)manageBook.searchBook(theBookList);elseif(a=3)manageBook.updateBook(theBookList);elseif(a=4)manageBook.deleteBook(theBookList);elseif(a=5)ReadDate:s
10、aveDate(theBookList);exit(0);else 1.2.4 statistics(vector&theBookList)其中包括了即将介绍的Sort类,具体请参照sort类printf(_n);printf(|请选择您所需的输出效果:|n);printf(-|-|-|n);printf(|5|0|n);printf(|1按图书价格|退出|返回|n);printf(|2按库存数量|主|n);printf(|3按作者|程序|菜单|n);printf(|4按出版社|n);printf(-|-|-|n);printf(请按相应的数字进行下一步操作:n);inta;cina;swit
11、ch(a)case0:Interface:main(theBookList);break;case5:ReadDate:saveDate(theBookList);exit(0);case1:Sort:sortPrice(theBookList);break;case2:Sort:sortStock(theBookList);break;case3:Sort:sortAuthor(theBookList);break;case4:Sort:sortPublisher(theBookList);break; 2.3 ReadDate类 本类涉及到文件的读写内容需要用到#include头文件,主要
12、目的是读入和保存数据,读取目标是本地的“.txt”文档,并且自定义数据写入规则为“|ISBN|name|author|publisher|price|stock|”从而实现数据的读取保存同时用到动态数组vector进行数据的动态保存(需要用到头文件#include),接下来将介绍getRowNum(),readISBN(),saveDate()三个函数 备注:因为数据的读取方式大同小异,故只用readDate为例进行介绍。2.3.1 getRowNum()主要用于进行统计图书的数目,用来建立vector数组,调出类的私有成员变量rowNum,而rowNum的值是有该类的构造函数进行设置修改的,
13、故要详细介绍该类的构造函数ReadDate(),其源代码如下:ReadDate:ReadDate()ofstreamfout;ifstreamfin;fstreamf;f.open(path,ios_base:in);/判断是否有该文件if(!f)/cout打开文件失败;fout.open(path);fout|ISBN|name|author|publisher|price|stock|n;fin.open(path,ios_base:in);/仅以读的方式打开文件/统计文本行数,建立动态Book对象数组(用vector建立动态数组)charstr100;rowNum=0;/不要再写为int
14、rowNum=0;否则编译器会认为你又新建了一个数据,因为static变量是隐藏的while(fin.getline(str,sizeof(str)rowNum+;f.close();fout.close();fin.close();代码分析:建立文件读写对象并用getline方法进行文件的行数统计2.3.2 readISBN()voidReadDate:readISBN(vector&theBookList)ifstreamfin;ifstreamfin1;ofstreamfout;fin.open(path,ios_base:in);charstr100;fout.open(importe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 图书 管理 系统 实验 报告 32
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内