本文实例为大家分享了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 条评论) |