帮我用C++写一份较为完整的图书管理系统,能在控制台进行操作,需要设计基类,派生类,要能进行数据的保存和读取。
时间: 2024-03-04 17:48:08 浏览: 18
好的,我可以帮你设计一个简单的图书管理系统,以下是一些基本的类和功能:
1. 基类:Book(包含书名、作者、出版社、价格、ISBN 等信息)
2. 派生类:Reader(包含读者姓名、借阅书籍、归还日期等信息)
3. 功能:
- 添加图书
- 删除图书
- 修改图书信息
- 查询图书信息
- 借阅图书
- 归还图书
- 显示所有图书信息
- 保存数据到文件
- 从文件中读取数据
下面是代码实现:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
class Book {
public:
string name;
string author;
string publisher;
double price;
string ISBN;
Book(string n, string a, string p, double pr, string i) :
name(n), author(a), publisher(p), price(pr), ISBN(i) {}
void display() {
cout << "书名:" << name << endl;
cout << "作者:" << author << endl;
cout << "出版社:" << publisher << endl;
cout << "价格:" << price << endl;
cout << "ISBN:" << ISBN << endl;
}
};
class Reader {
public:
string name;
string book;
string date;
Reader(string n, string b, string d) :
name(n), book(b), date(d) {}
};
class Library {
public:
vector<Book> books;
vector<Reader> readers;
void add_book() {
string name, author, publisher, ISBN;
double price;
cout << "请输入书名:";
cin >> name;
cout << "请输入作者:";
cin >> author;
cout << "请输入出版社:";
cin >> publisher;
cout << "请输入价格:";
cin >> price;
cout << "请输入ISBN:";
cin >> ISBN;
Book b(name, author, publisher, price, ISBN);
books.push_back(b);
cout << "添加成功!" << endl;
}
void delete_book() {
string name;
cout << "请输入要删除的书名:";
cin >> name;
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
if (it->name == name) {
books.erase(it);
cout << "删除成功!" << endl;
return;
}
}
cout << "没有找到该书!" << endl;
}
void modify_book() {
string name;
cout << "请输入要修改的书名:";
cin >> name;
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
if (it->name == name) {
cout << "请输入新的书名:";
cin >> it->name;
cout << "请输入新的作者:";
cin >> it->author;
cout << "请输入新的出版社:";
cin >> it->publisher;
cout << "请输入新的价格:";
cin >> it->price;
cout << "请输入新的ISBN:";
cin >> it->ISBN;
cout << "修改成功!" << endl;
return;
}
}
cout << "没有找到该书!" << endl;
}
void search_book() {
string name;
cout << "请输入要查询的书名:";
cin >> name;
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
if (it->name == name) {
it->display();
return;
}
}
cout << "没有找到该书!" << endl;
}
void borrow_book() {
string name, book, date;
cout << "请输入借阅者姓名:";
cin >> name;
cout << "请输入借阅书名:";
cin >> book;
cout << "请输入归还日期:";
cin >> date;
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
if (it->name == book) {
Reader r(name, book, date);
readers.push_back(r);
books.erase(it);
cout << "借阅成功!" << endl;
return;
}
}
cout << "没有找到该书!" << endl;
}
void return_book() {
string name, book;
cout << "请输入归还者姓名:";
cin >> name;
cout << "请输入归还书名:";
cin >> book;
for (vector<Reader>::iterator it = readers.begin(); it != readers.end(); it++) {
if (it->name == name && it->book == book) {
for (vector<Book>::iterator it2 = books.begin(); it2 != books.end(); it2++) {
if (it2->name == book) {
books.push_back(*it2);
readers.erase(it);
cout << "归还成功!" << endl;
return;
}
}
}
}
cout << "没有找到该借阅记录!" << endl;
}
void display_books() {
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
it->display();
cout << endl;
}
}
void save_data() {
ofstream fout("library.txt");
for (vector<Book>::iterator it = books.begin(); it != books.end(); it++) {
fout << it->name << " " << it->author << " " << it->publisher << " "
<< it->price << " " << it->ISBN << endl;
}
for (vector<Reader>::iterator it = readers.begin(); it != readers.end(); it++) {
fout << it->name << " " << it->book << " " << it->date << endl;
}
fout.close();
cout << "保存成功!" << endl;
}
void load_data() {
ifstream fin("library.txt");
string line;
while (getline(fin, line)) {
string name, author, publisher, ISBN;
double price;
istringstream iss(line);
iss >> name >> author >> publisher >> price >> ISBN;
Book b(name, author, publisher, price, ISBN);
books.push_back(b);
}
while (getline(fin, line)) {
string name, book, date;
istringstream iss(line);
iss >> name >> book >> date;
Reader r(name, book, date);
readers.push_back(r);
}
fin.close();
cout << "加载成功!" << endl;
}
};
int main() {
Library lib;
lib.load_data();
while (true) {
cout << "请选择操作:" << endl;
cout << "1. 添加图书" << endl;
cout << "2. 删除图书" << endl;
cout << "3. 修改图书信息" << endl;
cout << "4. 查询图书信息" << endl;
cout << "5. 借阅图书" << endl;
cout << "6. 归还图书" << endl;
cout << "7. 显示所有图书信息" << endl;
cout << "8. 保存数据" << endl;
cout << "9. 退出" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
lib.add_book();
break;
case 2:
lib.delete_book();
break;
case 3:
lib.modify_book();
break;
case 4:
lib.search_book();
break;
case 5:
lib.borrow_book();
break;
case 6:
lib.return_book();
break;
case 7:
lib.display_books();
break;
case 8:
lib.save_data();
break;
case 9:
return 0;
default:
cout << "输入错误,请重新选择!" << endl;
}
}
return 0;
}
```
以上就是一个简单的图书管理系统的实现,你可以根据自己的需求进行修改和扩展。