65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#ifndef MALL_PRODUCT_HPP
|
||
#define MALL_PRODUCT_HPP
|
||
|
||
#include <string>
|
||
#include <cstdint>
|
||
|
||
/**
|
||
* @brief 商品类,表示商城中的一件商品。
|
||
*/
|
||
class Product {
|
||
public:
|
||
/**
|
||
* @brief 默认构造函数,构造一个空商品。
|
||
*/
|
||
Product() = default;
|
||
|
||
/**
|
||
* @brief 构造商品。
|
||
* @param id 商品唯一编号
|
||
* @param name 商品名称
|
||
* @param price 商品单价(元)
|
||
* @param stock 库存数量
|
||
*/
|
||
Product(uint64_t id, std::string name, double price, int stock);
|
||
|
||
/** @brief 获取商品编号 */
|
||
uint64_t getId() const noexcept { return id_; }
|
||
|
||
/** @brief 获取商品名称 */
|
||
const std::string& getName() const noexcept { return name_; }
|
||
|
||
/** @brief 获取商品单价 */
|
||
double getPrice() const noexcept { return price_; }
|
||
|
||
/** @brief 获取库存数量 */
|
||
int getStock() const noexcept { return stock_; }
|
||
|
||
/**
|
||
* @brief 减少库存。
|
||
* @param quantity 减少数量
|
||
* @return true 扣减成功,false 库存不足
|
||
*/
|
||
bool reduceStock(int quantity);
|
||
|
||
/**
|
||
* @brief 增加库存。
|
||
* @param quantity 增加数量
|
||
*/
|
||
void addStock(int quantity);
|
||
|
||
/**
|
||
* @brief 返回商品简要信息字符串。
|
||
* @return 例如 "[#1001] 苹果 ¥5.50 (库存:20)"
|
||
*/
|
||
std::string toString() const;
|
||
|
||
private:
|
||
uint64_t id_ = 0; ///< 商品编号
|
||
std::string name_; ///< 商品名称
|
||
double price_ = 0.0; ///< 单价
|
||
int stock_ = 0; ///< 库存数量
|
||
};
|
||
|
||
#endif // MALL_PRODUCT_HPP
|