请设计一个书店管理系统 能完成书店的日程管理工作,并生成代码 包括:书店,图书,时间三个类。 要求完成的基本功能: 1.进货入库功能,先判断书店里有无该图书,没有则输入该图书的相信信息,有则只需要增添数量即可。 2.销售出货记录。 3、图书信息查询:可通过书名、作者等途径查询某本图书的详细信息(含书名、作者、出版社、页数、最新入库时间、库存量、价格等)。 4、自动预警提示(当某图书的库存量为1时自动预警提示) 5、数据存储:以文件方式存储出入库记录 对象集合的管理必须使用STL的相关容器类。
时间: 2023-12-30 17:06:16 浏览: 93
好的,以下是一个基于C++的书店管理系统的设计,包括三个类:书店类(Store)、图书类(Book)以及时间类(Time)。主要功能包括进货入库、销售出货、图书信息查询、自动预警和数据存储。使用STL的相关容器类进行对象集合的管理。
```
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <ctime>
using namespace std;
// 时间类
class Time {
public:
Time() {
time_t now = time(0); // 获取当前时间
tm *ltm = localtime(&now);
year = ltm->tm_year + 1900;
month = ltm->tm_mon + 1;
day = ltm->tm_mday;
hour = ltm->tm_hour;
minute = ltm->tm_min;
second = ltm->tm_sec;
}
int year, month, day, hour, minute, second;
};
// 图书类
class Book {
public:
Book(string title, string author, string publisher, int pages, double price) :
title(title), author(author), publisher(publisher), pages(pages), price(price), stock(0) {}
string title, author, publisher;
int pages, stock;
double price;
Time lastInTime;
};
// 书店类
class Store {
public:
void addBook(string title, string author, string publisher, int pages, double price);
void sellBook(string title, int quantity);
vector<Book> getBooks();
void checkStock();
void saveRecords();
private:
map<string, Book> books; // 用map存储库存图书
vector<pair<Time, pair<string, int>>> records; // 用vector存储出入库记录
};
void Store::addBook(string title, string author, string publisher, int pages, double price) {
if (books.find(title) == books.end()) { // 如果书店中没有该图书,则添加
Book newBook(title, author, publisher, pages, price);
newBook.lastInTime = Time();
books[title] = newBook;
}
books[title].stock++; // 增加库存
books[title].lastInTime = Time(); // 更新最后入库时间
cout << "成功添加库存:" << title << endl;
}
void Store::sellBook(string title, int quantity) {
if (books.find(title) == books.end() || books[title].stock < quantity) { // 如果库存不足,则无法出售
cout << "库存不足,无法出售" << endl;
return;
}
books[title].stock -= quantity; // 减少库存
Time now = Time();
records.push_back({ now, {title, quantity} }); // 记录出库记录
cout << "成功售出:" << title << endl;
}
vector<Book> Store::getBooks() {
vector<Book> result;
for (auto iter = books.begin(); iter != books.end(); iter++) {
result.push_back(iter->second);
}
return result;
}
void Store::checkStock() {
for (auto iter = books.begin(); iter != books.end(); iter++) {
if (iter->second.stock == 1) {
cout << "警告:库存不足1本,图书名:" << iter->second.title << endl;
}
}
}
void Store::saveRecords() {
ofstream fout("records.txt");
for (auto record : records) {
fout << record.first.year << "-" << record.first.month << "-" << record.first.day << " "
<< record.first.hour << ":" << record.first.minute << ":" << record.first.second << " "
<< record.second.first << " " << record.second.second << endl;
}
fout.close();
}
int main() {
Store store;
store.addBook("C++ Primer", "Stanley B. Lippman", "Addison Wesley", 1377, 99.99);
store.addBook("Thinking in Java", "Bruce Eckel", "Prentice Hall", 1150, 79.99);
store.addBook("The C Programming Language", "Brian W. Kernighan and Dennis M. Ritchie", "Prentice Hall", 272, 39.99);
store.sellBook("C++ Primer", 1);
store.sellBook("Thinking in Java", 2);
store.checkStock();
store.saveRecords();
return 0;
}
```
以上是一个简单的书店管理系统的设计,实现了基本的进货入库、销售出货、图书信息查询、自动预警和数据存储等功能。您可以根据需要进行修改和扩展。
阅读全文