首页 > 作文

C++实现图书管理系统(文件操作与类)

更新时间:2023-04-06 03:14:36 阅读: 评论:0

本文实例为大家分享了c++实现图书管理系统的具体代码,供大家参考,具体内容如下

(1)定义图书类;

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

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

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

#include<iostream>using namespace std;#include<fstream>#define filename "booklist.txt"#include<list>#include<cstring>#include<iomanip>class book //创建boo笑靥如花k类,存放图书信息{public: book(string na=" ", int p=0, int n=0) {  name = na;  num = n;  price = p; } void show() {  cout << "书名:" << std::left << tw(20) << name << std::right << tw(6) << "\t价格:" << price << "\t数量:" << num << endl; } void t() {  cout << "请输入书名:";  cin >> name;  cout << "请输入价格:";  cin >> price;  cout << "请输入数量:";  cin >> num; } void addnum() {  int n;  cout << "请输入归还的数量:";  cin >> n;  num += n; } void borrownum() {  int n;  cout << "请输入借出的数量:";  cin >> n;  num -= n; }public: string name; int price; int num;};void menu(){ cout << "--------------------------------------欢迎进入图书管理系统--------------------------------------" << endl; cout << endl << "0 - 退出系统;" << "1 - 显示库存;" << "2 - 查询图书;" << "3 - 借阅图书;" << "4 - 归还图书;" << "5 - 增加图书;" << "6 - 删除图书;" << endl;}class booklist //创建booklist类,数据成员有book还有图书数量{public: void save() //新建图书的话保存数据,用app方式打开文件 {  ofstream fout(filename, ios::app);  list<book>::iterator it = blist.begin();  for (int i = 0; i < num-1; i++) //偏移迭代器,指向新加入的book并写入文件  {   it++;  }  for (; it != blist.end(); it++)  {   fout << (*it).name << ' ' << (*it).p漫画人物头像rice << ' ' << (*it).num << '\n';  }  fout.clo(); } void resave() {  ofstream fout(filename, ios::out); //重新写入数据,因为删除了某个元素  if (fout.is_open())  {   for (list<book>::iterator it = blist.begin(); it != blist.end(); it++)   {    fo日记100个字ut << (*it).name << ' ' << (*it).price << ' ' << (*it).num << '\n';   }  }  fout.clo(); } void show() {  for (list<book>::iterator it = blist.begin(); it != blist.end(); it++)  {   (*it).show();  } } void adddata() //添加数据 {  book b;  b.t();  blist.push_back(b);  num++; } void start() //程序一开始读取文件里的数据 {  string na;  int n;  int p;  ifstream fin(filename, ios::in);  if (fin.is_open())  {   while (fin >> na >> p >> n)   {    book b(na, p, n);    blist.push_back(b);    num++;   }  }  fin.clo(); } void increa() {  cout << "请输入书名:" << endl;  string n;  cin >> n;  for (list<book>::iterator it = blist.begin(); it != blist.end(); it++)  {   if ((*it).name == n)    (*it).addnum();  }  从严治警resave(); } void decrea() {  cout << "请输入书名:" << endl;  string n;  cin >> n;  for (list<book>::iterator it = blist.begin(); it != blist.end(); it++)  {   if ((*it).name == n)    (*it).borrownum();  }  resave(); } void findbook() {  string name;  cin >> name;  for (list<book>::iterator it = blist.begin(); it != blist.end(); it++) //遍历整个list,所以符合关键字的都会被找到  {   int index = (*it).name.find(name); //如果没找到返回值是一个很大的数   if (index < (*it).name.length())    (*it).show();  } } void deletebook() {  string name;  cout << "请输入书名:";  cin >> name;  int i = 0;  for (list<book>::iterator it = blist.begin(); it != blist.end();it++)  {   if ((*it).name == name)    break;   ++i;  }  list<book>::iterator it = blist.begin();  advance(it, i);  blist.era(it);  --num;  resave(); }public: list<book>blist; int num = 0;};int main(){ booklist b1; b1.start(); while (1) {  menu();  int key;  cout << "请输入要进行的操作:";  cin >> key;  中国经典童谣switch (key)  {  ca 0:   return 0;   break;  ca 1:   b1.show();   break;  ca 2:   b1.findbook();   break;  ca 3:   b1.decrea();   break;  ca 4:   b1.increa();   break;  ca 5:  {   b1.adddata();   b1.save();   break;  }  ca 6:   b1.deletebook();   break;  } }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-06 03:14:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/e0e6869ffabf616de493c2c4feaaaf42.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++实现图书管理系统(文件操作与类).doc

本文 PDF 下载地址:C++实现图书管理系统(文件操作与类).pdf

标签:请输入   图书   书名   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图