文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++实现图书管理系统的文件操作与类是什么

2023-06-29 11:26

关注

这篇文章主要介绍“C++实现图书管理系统的文件操作与类是什么”,在日常操作中,相信很多人在C++实现图书管理系统的文件操作与类是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”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    //创建Book类,存放图书信息{public:    Book(string na=" ", int p=0, int n=0)    {        name = na;        num = n;        price = p;    }    void Show()    {        cout <<  "书名:" << std::left << setw(20) << name << std::right << setw(6) << "\t价格:" << price << "\t数量:" << num << endl;    }    void Set()    {        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).price << ' ' << (*it).num << '\n';        }        fout.close();    }    void resave()    {        ofstream fout(filename, ios::out);    //重新写入数据,因为删除了某个元素        if (fout.is_open())        {            for (list<Book>::iterator it = BList.begin(); it != BList.end(); it++)            {                fout << (*it).name << ' ' << (*it).price << ' ' << (*it).num << '\n';            }        }        fout.close();    }    void Show()    {        for (list<Book>::iterator it = BList.begin(); it != BList.end(); it++)        {            (*it).Show();        }    }    void adddata()    //添加数据    {        Book B;        B.Set();        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.close();    }    void increase()    {        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 decrease()    {        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.erase(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)        {        case 0:            return 0;            break;        case 1:            B1.Show();            break;        case 2:            B1.FindBook();            break;        case 3:            B1.decrease();            break;        case 4:            B1.increase();            break;        case 5:        {            B1.adddata();            B1.save();            break;        }        case 6:            B1.DeleteBook();            break;        }     }}

到此,关于“C++实现图书管理系统的文件操作与类是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯