用c++easyx做图书馆管理系统
时间: 2023-06-17 19:05:27 浏览: 173
C++实现基于EasyX的图书管理系统(可视化界面)
好的,以下是一个简单的图书馆管理系统的 C++ 代码,使用了 EasyX 图形库:
```cpp
#include <graphics.h>
#include <conio.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 书籍信息结构体
struct Book {
string name; // 书名
string author; // 作者
string press; // 出版社
int num; // 数量
};
// 图书馆类
class Library {
private:
vector<Book> books; // 存储图书馆内的书籍信息
public:
// 添加书籍
void addBook(Book book) {
books.push_back(book);
}
// 根据书名查找书籍
vector<Book> searchByName(string name) {
vector<Book> result;
for (int i = 0; i < books.size(); i++) {
if (books[i].name == name) {
result.push_back(books[i]);
}
}
return result;
}
// 根据作者查找书籍
vector<Book> searchByAuthor(string author) {
vector<Book> result;
for (int i = 0; i < books.size(); i++) {
if (books[i].author == author) {
result.push_back(books[i]);
}
}
return result;
}
// 根据出版社查找书籍
vector<Book> searchByPress(string press) {
vector<Book> result;
for (int i = 0; i < books.size(); i++) {
if (books[i].press == press) {
result.push_back(books[i]);
}
}
return result;
}
// 显示所有书籍信息
void showAll() {
cleardevice();
settextstyle(20, 0, _T("宋体"));
outtextxy(20, 20, _T("书名\t\t作者\t\t出版社\t\t数量"));
for (int i = 0; i < books.size(); i++) {
string info = books[i].name + "\t\t" + books[i].author + "\t\t" + books[i].press + "\t\t" + to_string(books[i].num);
outtextxy(20, 50 + i * 30, _T(info.c_str()));
}
}
};
// 主函数
int main() {
// 初始化 EasyX 图形库
initgraph(640, 480);
setbkcolor(WHITE);
cleardevice();
Library library; // 创建图书馆对象
// 添加一些书籍信息
library.addBook({"C++ Primer", "Lippman", "PUP", 10});
library.addBook({"Effective C++", "Scott Meyers", "Addison-Wesley", 8});
library.addBook({"The C++ Programming Language", "Bjarne Stroustrup", "Addison-Wesley", 12});
library.addBook({"Head First Design Patterns", "Elisabeth Freeman", "O'Reilly Media", 5});
// 显示所有书籍信息
library.showAll();
// 等待用户输入并根据输入进行相应操作
while (true) {
char ch = _getch();
if (ch == '1') {
// 根据书名查找书籍
cleardevice();
settextstyle(20, 0, _T("宋体"));
outtextxy(20, 20, _T("请输入书名:"));
string name;
cin >> name;
vector<Book> result = library.searchByName(name);
outtextxy(20, 50, _T("书名\t\t作者\t\t出版社\t\t数量"));
for (int i = 0; i < result.size(); i++) {
string info = result[i].name + "\t\t" + result[i].author + "\t\t" + result[i].press + "\t\t" + to_string(result[i].num);
outtextxy(20, 80 + i * 30, _T(info.c_str()));
}
} else if (ch == '2') {
// 根据作者查找书籍
cleardevice();
settextstyle(20, 0, _T("宋体"));
outtextxy(20, 20, _T("请输入作者:"));
string author;
cin >> author;
vector<Book> result = library.searchByAuthor(author);
outtextxy(20, 50, _T("书名\t\t作者\t\t出版社\t\t数量"));
for (int i = 0; i < result.size(); i++) {
string info = result[i].name + "\t\t" + result[i].author + "\t\t" + result[i].press + "\t\t" + to_string(result[i].num);
outtextxy(20, 80 + i * 30, _T(info.c_str()));
}
} else if (ch == '3') {
// 根据出版社查找书籍
cleardevice();
settextstyle(20, 0, _T("宋体"));
outtextxy(20, 20, _T("请输入出版社:"));
string press;
cin >> press;
vector<Book> result = library.searchByPress(press);
outtextxy(20, 50, _T("书名\t\t作者\t\t出版社\t\t数量"));
for (int i = 0; i < result.size(); i++) {
string info = result[i].name + "\t\t" + result[i].author + "\t\t" + result[i].press + "\t\t" + to_string(result[i].num);
outtextxy(20, 80 + i * 30, _T(info.c_str()));
}
} else if (ch == '4') {
// 显示所有书籍信息
library.showAll();
} else if (ch == '5') {
// 退出程序
break;
}
}
// 关闭 EasyX 图形库
closegraph();
return 0;
}
```
这只是一个简单的例子,可以根据实际需要进行修改和扩展。需要注意的是,该代码使用了 EasyX 图形库进行图像界面的实现,如果您没有安装该库,可以在官网进行下载和安装。
阅读全文