中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++實現圖書管理系統的文件操作與類是什么

發布時間:2022-03-14 09:24:18 來源:億速云 閱讀:111 作者:iii 欄目:開發技術

這篇文章主要介紹“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++實現圖書管理系統的文件操作與類是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

磴口县| 依安县| 祁连县| 南漳县| 华安县| 永清县| 阿拉善盟| 喀什市| 儋州市| 古田县| 长葛市| 阿城市| 新源县| 景德镇市| 盐山县| 渝北区| 凤山市| 肥西县| 炎陵县| 寻甸| 鹰潭市| 宜阳县| 万盛区| 井陉县| 扶余县| 和顺县| 金门县| 罗源县| 亳州市| 鸡东县| 皋兰县| 嘉义县| 六盘水市| 德阳市| 永康市| 三门县| 江孜县| 鹿邑县| 运城市| 延川县| 鞍山市|