基于C++的图书管理系统
时间: 2023-06-14 11:07:28 浏览: 84
一个基于C++的图书管理系统可以包括以下模块:
1. 图书信息管理模块:用于添加、修改、删除图书信息,包括图书编号、书名、作者、出版社、出版日期、价格等信息。
2. 借阅管理模块:用于借阅和归还图书,包括借阅人信息、借阅日期、归还日期等信息。
3. 查询统计模块:用于查询图书信息、借阅信息以及统计图书借阅情况。
4. 权限管理模块:用于管理图书管理员的权限,包括添加、修改、删除管理员账户。
下面是一个简单的基于C++的图书管理系统实现,只实现了图书信息管理和查询统计模块:
```c++
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#include <cstring>
using namespace std;
// 图书信息结构体
struct Book {
string id; // 图书编号
string name; // 书名
string author; // 作者
string press; // 出版社
string date; // 出版日期
double price; // 价格
};
// 读取图书信息文件
void readBookFile(vector<Book> &books) {
ifstream fin("book.txt");
if (!fin) {
cout << "无法打开文件!" << endl;
return;
}
Book book;
while (fin >> book.id >> book.name >> book.author >> book.press >> book.date >> book.price) {
books.push_back(book);
}
fin.close();
}
// 保存图书信息到文件
void saveBookFile(const vector<Book> &books) {
ofstream fout("book.txt");
if (!fout) {
cout << "无法保存文件!" << endl;
return;
}
for (const auto &book : books) {
fout << book.id << " " << book.name << " " << book.author << " "
<< book.press << " " << book.date << " " << book.price << endl;
}
fout.close();
}
// 添加图书信息
void addBook(vector<Book> &books) {
Book book;
cout << "请输入图书编号:";
cin >> book.id;
cout << "请输入书名:";
cin >> book.name;
cout << "请输入作者:";
cin >> book.author;
cout << "请输入出版社:";
cin >> book.press;
cout << "请输入出版日期:";
cin >> book.date;
cout << "请输入价格:";
cin >> book.price;
books.push_back(book);
cout << "添加图书信息成功!" << endl;
}
// 修改图书信息
void modifyBook(vector<Book> &books) {
string id;
cout << "请输入要修改的图书编号:";
cin >> id;
for (auto &book : books) {
if (book.id == id) {
cout << "请输入新的书名:";
cin >> book.name;
cout << "请输入新的作者:";
cin >> book.author;
cout << "请输入新的出版社:";
cin >> book.press;
cout << "请输入新的出版日期:";
cin >> book.date;
cout << "请输入新的价格:";
cin >> book.price;
cout << "修改图书信息成功!" << endl;
return;
}
}
cout << "找不到图书编号为" << id << "的图书!" << endl;
}
// 删除图书信息
void deleteBook(vector<Book> &books) {
string id;
cout << "请输入要删除的图书编号:";
cin >> id;
for (auto iter = books.begin(); iter != books.end(); iter++) {
if (iter->id == id) {
books.erase(iter);
cout << "删除图书信息成功!" << endl;
return;
}
}
cout << "找不到图书编号为" << id << "的图书!" << endl;
}
// 查询图书信息
void queryBook(const vector<Book> &books) {
string keyword;
cout << "请输入要查询的关键字:";
cin >> keyword;
cout << left << setw(10) << "编号" << setw(20) << "书名" << setw(10) << "作者"
<< setw(20) << "出版社" << setw(15) << "出版日期" << setw(10) << "价格" << endl;
for (const auto &book : books) {
if (book.id.find(keyword) != string::npos || book.name.find(keyword) != string::npos ||
book.author.find(keyword) != string::npos || book.press.find(keyword) != string::npos ||
book.date.find(keyword) != string::npos || to_string(book.price).find(keyword) != string::npos) {
cout << left << setw(10) << book.id << setw(20) << book.name << setw(10) << book.author
<< setw(20) << book.press << setw(15) << book.date << setw(10) << book.price << endl;
}
}
}
// 统计图书信息
void statBook(const vector<Book> &books) {
int count = 0;
double total = 0;
for (const auto &book : books) {
count++;
total += book.price;
}
cout << "图书总数:" << count << endl;
cout << "图书总价:" << total << endl;
}
// 显示菜单
void showMenu() {
cout << "********** 图书管理系统 **********" << endl;
cout << "1. 添加图书信息" << endl;
cout << "2. 修改图书信息" << endl;
cout << "3. 删除图书信息" << endl;
cout << "4. 查询图书信息" << endl;
cout << "5. 统计图书信息" << endl;
cout << "6. 退出系统" << endl;
cout << "**********************************" << endl;
}
int main() {
vector<Book> books;
readBookFile(books);
while (true) {
showMenu();
int choice;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
addBook(books);
saveBookFile(books);
break;
case 2:
modifyBook(books);
saveBookFile(books);
break;
case 3:
deleteBook(books);
saveBookFile(books);
break;
case 4:
queryBook(books);
break;
case 5:
statBook(books);
break;
case 6:
return 0;
default:
cout << "无效操作!" << endl;
break;
}
}
return 0;
}
```
该程序采用了文件存储图书信息,将图书信息保存在book.txt文件中。可以通过添加、修改、删除图书信息来更新文件内容,通过读取文件内容来初始化图书信息。查询统计模块通过遍历图书信息向用户展示满足关键字的图书信息,并输出统计数据。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)