📜  在C++中实现交互式在线购物(1)

📅  最后修改于: 2023-12-03 15:37:34.867000             🧑  作者: Mango

在C++中实现交互式在线购物

这是一个使用C++语言实现的交互式在线购物程序。该程序允许用户通过控制台输入商品编号和数量,并根据用户的需求展示您数据库中的商品信息。用户可以选择将商品加入购物车并结账,程序会自动计算商品总金额。

实现思路

该程序的实现思路如下:

  1. 定义商品结构体,包括商品编号、商品名称、单价、库存等信息;
  2. 定义购物车结构体,包括商品编号、商品数量等信息;
  3. 通过读取文件,将商品信息存储到一个vector中;
  4. 通过控制台,输出商品信息列表,并接收用户输入;
  5. 添加商品到购物车中,并统计总金额;
  6. 生成结账清单和购物小票。
代码实现
定义商品结构体
struct Product {
    string name;    // 商品名称
    int id;         // 商品编号
    double price;   // 商品单价
    int stock;      // 商品库存
};
定义购物车结构体
struct Cart {
    int id;         // 商品编号
    int count;      // 商品数量
};
读取商品信息
vector<Product> products;

//读取数据文件
void initProducts(const string &path) {
    ifstream infile(path);
    if (!infile.is_open()) {
        cerr << "Product information file not found!" << endl;
    }
    string line;
    while (getline(infile, line)) {
        istringstream iss(line);
        Product product;
        iss >> product.id >> product.name >> product.price >> product.stock;
        products.push_back(product);
    }
}
输出商品信息列表
// 商品列表页面
void showProductList() {
    cout << "  商品编号    商品名称   商品单价  库存数量\n";
    for (auto &product: products) {
        cout << setw(6) << product.id << "        " << setw(10) << product.name << "    " << setw(4) << product.price << "       " << setw(4)
             << product.stock << endl;
    }
}
加入购物车
// 加入购物车
void addProductToCart(int id, int count, vector<Cart> &cart) {
    for (auto &item: cart) {
        if (item.id == id) {
            item.count += count;
            return;
        }
    }
    Cart t;
    t.id = id;
    t.count = count;
    cart.push_back(t);
}

// 购物车页面
void showCart(const vector<Cart> &cart) {
    cout << "    购物清单" << endl;
    cout << "商品编号    商品名称     数量   单价   总价" << endl;
    double total = 0;
    for (auto &item: cart) {
        Product p = getProductById(item.id);
        if (p.stock > 0) {
            double sum = item.count * p.price;
            total += sum;
            cout << setw(6) << p.id << "        " << setw(10) << p.name << "    " << setw(4) << item.count << "    " << setw(4) << p.price << "   " << setw(4) << sum << endl;
        }
    }
    cout << "总计: " << total << " 元" << endl;
}
结账
// 结账页面
void checkout(const vector<Cart> &cart) {
    time_t t = time(0);
    char tmp[64];
    strftime(tmp, sizeof(tmp), "%Y/%m/%d %X %A", localtime(&t));
    cout << tmp << endl;
    cout << "商品编号    商品名称     数量   单价   总价" << endl;
    double total = 0;
    for (auto &item: cart) {
        Product p = getProductById(item.id);
        if (p.stock > 0) {
            double sum = item.count * p.price;
            total += sum;
            cout << setw(6) << p.id << "        " << setw(10) << p.name << "    " << setw(4) << item.count << "    " << setw(4) << p.price << "   " << setw(4) << sum << endl;
        }
        updateProductStock(p.id, p.stock - item.count);
    }
    cout << "总计: " << total << " 元" << endl;
}
程序演示

image

总结

该程序通过C++语言实现了一个简单的在线购物系统。程序中使用了结构体、vector等基本数据类型,并通过文件输入、控制台输出、菜单选项等方式实现了基本的程序交互。此外,该程序仅供学习交流使用,不可用于商业用途。