您好,登錄后才能下訂單哦!
這篇文章主要介紹“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++實現圖書管理系統的文件操作與類是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。