C++实现图书管理系统(文件操作与类)_第1页
C++实现图书管理系统(文件操作与类)_第2页
C++实现图书管理系统(文件操作与类)_第3页
C++实现图书管理系统(文件操作与类)_第4页
C++实现图书管理系统(文件操作与类)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C++实现图书管理系统(文件操作与类)本文实例为大家分享了C++实现图书管理系统的具体代码,供大家参考,具体内容如下

(1)定义图书类;

(2)图书信息包括:书名name,价格price,库存num;

(3)可以查询、增加、删除、修改功能;

(4)使用文件保存及读取图书数据;

#includeiostream

usingnamespacestd;

#includefstream

#definefilename"booklist.txt"

#includelist

#includecstring

#includeiomanip

classBook

//创建Book类,存放图书信息

public:

Book(stringna="",intp=0,intn=0)

{

name=na;

num=n;

price=p;

}

voidShow()

{

cout

"书名:"std::leftsetw(20)namestd::rightsetw(6)"\t价格:"price"\t数量:"numendl;

}

voidSet()

{

cout"请输入书名:";

cinname;

cout"请输入价格:";

cinprice;

cout"请输入数量:";

cinnum;

}

voidAddnum()

{

intn;

cout"请输入归还的数量:";

cinn;

num+=n;

}

voidBorrownum()

{

intn;

cout"请输入借出的数量:";

cinn;

num-=n;

}

public:

stringname;

intprice;

intnum;

voidmenu()

cout"--------------------------------------欢迎进入图书管理系统--------------------------------------"endl;

coutendl"0-退出系统;""1-显示库存;""2-查询图书;""3-借阅图书;""4-归还图书;""5-增加图书;""6-删除图书;"endl;

classBooklist

//创建BookList类,数据成员有Book还有图书数量

public:

voidsave()

//新建图书的话保存数据,用app方式打开文件

{

ofstreamfout(filename,ios::app);

listBook::iteratorit=BList.begin();

for(inti=0;inum-1;i++)

//偏移迭代器,指向新加入的Book并写入文件

{

it++;

}

for(;it!=BList.end();it++)

{

fout(*it).name''(*it).price''(*it).num'\n';

}

fout.close();

}

voidresave()

{

ofstreamfout(filename,ios::out);

//重新写入数据,因为删除了某个元素

if(fout.is_open())

{

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

{

fout(*it).name''(*it).price''(*it).num'\n';

}

}

fout.close();

}

voidShow()

{

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

{

(*it).Show();

}

}

voidadddata()

//添加数据

{

BookB;

B.Set();

BList.push_back(B);

num++;

}

voidstart()

//程序一开始读取文件里的数据

{

stringna;

intn;

intp;

ifstreamfin(filename,ios::in);

if(fin.is_open())

{

while(finnapn)

{

BookB(na,p,n);

BList.push_back(B);

num++;

}

}

fin.close();

}

voidincrease()

{

cout"请输入书名:"endl;

stringn;

cinn;

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

{

if((*it).name==n)

(*it).Addnum();

}

resave();

}

voiddecrease()

{

cout"请输入书名:"endl;

stringn;

cinn;

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

{

if((*it).name==n)

(*it).Borrownum();

}

resave();

}

voidFindBook()

{

stringname;

cinname;

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

//遍历整个list,所以符合关键字的都会被找到

{

intindex=(*it).name.find(name);

//如果没找到返回值是一个很大的数

if(index(*it).name.length())

(*it).Show();

}

}

voidDeleteBook()

{

stringname;

cout"请输入书名:";

cinname;

inti=0;

for(listBook::iteratorit=BList.begin();it!=BList.end();it++)

{

if((*it).name==name)

break;

++i;

}

listBook::iteratorit=BList.begin();

advance(it,i);

BList.erase(it);

--num;

resave();

}

public:

listBookBList;

intnum=0;

intmain()

BooklistB1;

B1.start();

while(1)

{

menu();

intkey;

cout"请输入要进行的操作:";

cinkey;

switch(key)

{

case0:

return0;

break;

case1:

B1.Show();

break;

case2:

B1.FindBook();

break;

case3:

B1.decrease();

break;

case4:

B1.increase();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论