c++图书信息管理系统
时间: 2023-10-18 14:09:47 浏览: 88
好的,图书信息管理系统可以分成以下几个模块:
1. 图书信息输入模块:通过该模块可以输入图书的基本信息,包括编号、书名、作者、出版社、价格等等。
2. 图书信息查询模块:通过该模块可以按照关键字查询图书信息,如书名、作者、出版社等等。
3. 图书信息修改模块:通过该模块可以修改图书的基本信息,如书名、作者、出版社、价格等等。
4. 图书信息删除模块:通过该模块可以删除图书的基本信息。
5. 图书信息显示模块:通过该模块可以展示所有图书的基本信息,包括编号、书名、作者、出版社、价格等等。
下面是一个简单的 C++ 图书信息管理系统的实现,仅供参考:
```c++
#include<iostream>
#include<fstream>
#include<vector>
#include<string>
using namespace std;
// 定义图书类
class Book {
private:
string book_id;
string book_name;
string book_author;
string book_publisher;
double book_price;
public:
Book(string _id, string _name, string _author, string _publisher, double _price) {
book_id = _id;
book_name = _name;
book_author = _author;
book_publisher = _publisher;
book_price = _price;
}
string get_id() {
return book_id;
}
string get_name() {
return book_name;
}
string get_author() {
return book_author;
}
string get_publisher() {
return book_publisher;
}
double get_price() {
return book_price;
}
};
// 定义图书管理类
class BookManager {
private:
vector<Book> book_list;
public:
// 从文件中读取图书信息
void read_book_info() {
ifstream fin("book_info.txt");
if(!fin.is_open()) {
cout << "打开文件失败!" << endl;
return;
}
string id, name, author, publisher;
double price;
while(!fin.eof()) {
fin >> id >> name >> author >> publisher >> price;
Book book(id, name, author, publisher, price);
book_list.push_back(book);
}
fin.close();
}
// 将图书信息写入文件
void write_book_info() {
ofstream fout("book_info.txt");
for(int i=0; i<book_list.size(); i++) {
fout << book_list[i].get_id() << " ";
fout << book_list[i].get_name() << " ";
fout << book_list[i].get_author() << " ";
fout << book_list[i].get_publisher() << " ";
fout << book_list[i].get_price() << endl;
}
fout.close();
}
// 添加图书信息
void add_book_info() {
string id, name, author, publisher;
double price;
cout << "请输入图书编号:";
cin >> id;
cout << "请输入图书名称:";
cin >> name;
cout << "请输入图书作者:";
cin >> author;
cout << "请输入图书出版社:";
cin >> publisher;
cout << "请输入图书价格:";
cin >> price;
Book book(id, name, author, publisher, price);
book_list.push_back(book);
cout << "添加成功!" << endl;
}
// 删除图书信息
void delete_book_info() {
string id;
cout << "请输入要删除的图书编号:";
cin >> id;
for(int i=0; i<book_list.size(); i++) {
if(book_list[i].get_id() == id) {
book_list.erase(book_list.begin() + i);
cout << "删除成功!" << endl;
return;
}
}
cout << "没有找到该图书!" << endl;
}
// 修改图书信息
void modify_book_info() {
string id, name, author, publisher;
double price;
cout << "请输入要修改的图书编号:";
cin >> id;
for(int i=0; i<book_list.size(); i++) {
if(book_list[i].get_id() == id) {
cout << "请输入修改后的图书名称:";
cin >> name;
cout << "请输入修改后的图书作者:";
cin >> author;
cout << "请输入修改后的图书出版社:";
cin >> publisher;
cout << "请输入修改后的图书价格:";
cin >> price;
book_list[i] = Book(id, name, author, publisher, price);
cout << "修改成功!" << endl;
return;
}
}
cout << "没有找到该图书!" << endl;
}
// 按照图书名称查询图书信息
void query_book_info_by_name() {
string name;
cout << "请输入要查询的图书名称:";
cin >> name;
int count = 0;
for(int i=0; i<book_list.size(); i++) {
if(book_list[i].get_name() == name) {
cout << "编号:" << book_list[i].get_id() << endl;
cout << "书名:" << book_list[i].get_name() << endl;
cout << "作者:" << book_list[i].get_author() << endl;
cout << "出版社:" << book_list[i].get_publisher() << endl;
cout << "价格:" << book_list[i].get_price() << endl;
count++;
}
}
if(count == 0) {
cout << "没有找到该图书!" << endl;
}
}
// 按照图书作者查询图书信息
void query_book_info_by_author() {
string author;
cout << "请输入要查询的图书作者:";
cin >> author;
int count = 0;
for(int i=0; i<book_list.size(); i++) {
if(book_list[i].get_author() == author) {
cout << "编号:" << book_list[i].get_id() << endl;
cout << "书名:" << book_list[i].get_name() << endl;
cout << "作者:" << book_list[i].get_author() << endl;
cout << "出版社:" << book_list[i].get_publisher() << endl;
cout << "价格:" << book_list[i].get_price() << endl;
count++;
}
}
if(count == 0) {
cout << "没有找到该图书!" << endl;
}
}
// 按照图书出版社查询图书信息
void query_book_info_by_publisher() {
string publisher;
cout << "请输入要查询的图书出版社:";
cin >> publisher;
int count = 0;
for(int i=0; i<book_list.size(); i++) {
if(book_list[i].get_publisher() == publisher) {
cout << "编号:" << book_list[i].get_id() << endl;
cout << "书名:" << book_list[i].get_name() << endl;
cout << "作者:" << book_list[i].get_author() << endl;
cout << "出版社:" << book_list[i].get_publisher() << endl;
cout << "价格:" << book_list[i].get_price() << endl;
count++;
}
}
if(count == 0) {
cout << "没有找到该图书!" << endl;
}
}
// 展示所有图书信息
void show_all_book_info() {
for(int i=0; i<book_list.size(); i++) {
cout << "编号:" << book_list[i].get_id() << endl;
cout << "书名:" << book_list[i].get_name() << endl;
cout << "作者:" << book_list[i].get_author() << endl;
cout << "出版社:" << book_list[i].get_publisher() << endl;
cout << "价格:" << book_list[i].get_price() << endl;
}
}
};
int main() {
BookManager bm;
bm.read_book_info();
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 << "**********************************" << endl;
int choice;
cout << "请输入您的选择:";
cin >> choice;
switch(choice) {
case 1:
bm.add_book_info();
bm.write_book_info();
break;
case 2:
bm.delete_book_info();
bm.write_book_info();
break;
case 3:
bm.modify_book_info();
bm.write_book_info();
break;
case 4:
bm.query_book_info_by_name();
break;
case 5:
bm.query_book_info_by_author();
break;
case 6:
bm.query_book_info_by_publisher();
break;
case 7:
bm.show_all_book_info();
break;
case 8:
return 0;
default:
cout << "输入不合法,请重新输入!" << endl;
break;
}
}
return 0;
}
```
在该程序中,我们定义了一个 `Book` 类来表示图书,然后定义了 `BookManager` 类来管理图书信息。在 `BookManager` 类中,我们实现了读取、写入、添加、删除、修改、查询和展示图书信息的功能。
程序运行时,会显示一个菜单供用户选择操作,用户输入对应的数字后,程序会执行相应的操作。例如,用户选择添加图书信息时,程序会要求用户输入图书的基本信息,然后将该图书信息添加到 `book_list` 中,并将 `book_list` 中的所有图书信息写入到文件中。用户选择展示所有图书信息时,程序会遍历 `book_list` 并输出每本图书的基本信息。
需要注意的是,该程序还有很多不足之处,例如没有对用户输入做异常处理,也没有对文件读写做异常处理,需要根据实际情况进行改进。
阅读全文