C语言实现简单购物车系统

这是一个使用C语言编写的简单购物车系统,包含以下功能:

  1. 商品结构体:定义了商品的属性,包括名称、规格、价格。
// 商品结构体
typedef struct {
    char name[50];
    char size[10];
    int price;
} Product;
  1. 购物车结构体:定义了购物车的属性,包括已选商品数组和已选商品数量。
// 购物车结构体
typedef struct {
    Product* products[10];
    int count;
} ShoppingCart;
  1. 初始化商品列表函数:将商品列表中的每个商品的属性值初始化。
// 初始化商品列表
void initProducts(Product* products) {
    strcpy(products[0].name, '雅诗兰黛粉水');
    strcpy(products[0].size, '400m');
    products[0].price = 350;

    strcpy(products[1].name, '小棕瓶精华');
    strcpy(products[1].size, '50ml');
    products[1].price = 420;

    // ... 其他商品初始化
}
  1. 显示商品列表函数:遍历商品列表,按照格式打印出每个商品的属性值。
// 显示商品列表
void displayProducts(Product* products) {
    printf('商品列表:\n');
    int i;
    for (i=0; i < 10; i++) {
        printf('%d %s %s %d元\n', i + 1, products[i].name, products[i].size, products[i].price);
    }
}
  1. 选购商品函数:提示用户输入要选购的商品编号,根据编号获取对应的商品,将其添加到购物车中。
// 选购商品
void selectProduct(Product* products, ShoppingCart* cart) {
    int choice;
    printf('请输入要选购的商品编号:');
    scanf('%d', &choice);

    // ... 获取商品并添加到购物车
}
  1. 显示已选商品函数:遍历购物车中的已选商品数组,按照格式打印出每个商品的属性值。
// 显示已选商品
void displaySelectedProducts(ShoppingCart* cart) {
    printf('已选商品:\n');
    int i;
    for (i=0; i < cart->count; i++) {
        printf('%d %s %s %d元\n', i + 1, cart->products[i]->name, cart->products[i]->size, cart->products[i]->price);
    }
}
  1. 对已选商品进行添加或删除函数:提示用户输入要操作的商品编号,根据编号获取对应的商品,再提示用户选择添加商品数量或删除商品,根据用户选择进行相应的操作。
// 对已选商品进行添加或删除
void modifySelectedProducts(ShoppingCart* cart) {
    int choice;
    printf('请输入要进行操作的商品编号:');
    scanf('%d', &choice);

    // ... 进行添加或删除操作
}
  1. 结算函数:遍历购物车中的已选商品数组,计算出所有商品的总价,按照格式打印出结算清单和总价。
// 结算
void checkout(ShoppingCart* cart) {
    int total = 0;
    printf('结算清单:\n');
    int i;
    for (i=0; i < cart->count; i++) {
        printf('%s %s %d元\n', cart->products[i]->name, cart->products[i]->size, cart->products[i]->price);
        total += cart->products[i]->price;
    }
    printf('总计:%d元\n', total);
}
  1. 主函数:循环显示菜单,根据用户选择调用相应的函数进行操作,直到用户选择退出。
int main() {
    Product products[10];
    initProducts(products);

    ShoppingCart cart;
    cart.count = 0;

    int choice;
    while (1) {
        // ... 显示菜单并处理用户选择
    }

    return 0;
}

代码示例:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 商品结构体
typedef struct {
    char name[50];
    char size[10];
    int price;
} Product;

// 购物车结构体
typedef struct {
    Product* products[10];
    int count;
} ShoppingCart;

// 初始化商品列表
void initProducts(Product* products) {
    strcpy(products[0].name, '雅诗兰黛粉水');
    strcpy(products[0].size, '400m');
    products[0].price = 350;

    strcpy(products[1].name, '小棕瓶精华');
    strcpy(products[1].size, '50ml');
    products[1].price = 420;

    strcpy(products[2].name, '雅诗智妍面霜');
    strcpy(products[2].size, '50ml');
    products[2].price = 750;

    strcpy(products[3].name, '小棕瓶眼霜');
    strcpy(products[3].size, '15ml');
    products[3].price = 500;

    strcpy(products[4].name, '红石榴洁面');
    strcpy(products[4].size, '150ml');
    products[4].price = 280;

    strcpy(products[5].name, 'DW粉底液(1w1)');
    strcpy(products[5].size, '30ml');
    products[5].price = 380;

    strcpy(products[6].name, '沁水粉底液(1c0)');
    strcpy(products[6].size, '30ml');
    products[6].price = 450;

    strcpy(products[7].name, '雅诗气垫');
    strcpy(products[7].size, '15ml');
    products[7].price = 420;

    strcpy(products[8].name, '雅诗防晒隔离');
    strcpy(products[8].size, '30ml');
    products[8].price = 280;

    strcpy(products[9].name, '雅诗樱花水');
    strcpy(products[9].size, '200ml');
    products[9].price = 580;
}

// 显示商品列表
void displayProducts(Product* products) {
    printf('商品列表:\n');
    int i;
    for (i=0; i < 10; i++) {
        printf('%d %s %s %d元\n', i + 1, products[i].name, products[i].size, products[i].price);
    }
}

// 选购商品
void selectProduct(Product* products, ShoppingCart* cart) {
    int choice;
    printf('请输入要选购的商品编号:');
    scanf('%d', &choice);

    if (choice < 1 || choice > 10) {
        printf('无效的选择!\n');
        return;
    }

    Product* selectedProduct = &products[choice - 1];
    cart->products[cart->count] = selectedProduct;
    cart->count++;

    printf('已将商品 %s 添加到购物车。\n', selectedProduct->name);
}

// 显示已选商品
void displaySelectedProducts(ShoppingCart* cart) {
    printf('已选商品:\n');
    int i;
    for (i=0; i < cart->count; i++) {
        printf('%d %s %s %d元\n', i + 1, cart->products[i]->name, cart->products[i]->size, cart->products[i]->price);
    }
}

// 对已选商品进行添加或删除
void modifySelectedProducts(ShoppingCart* cart) {
    int choice;
    printf('请输入要进行操作的商品编号:');
    scanf('%d', &choice);

    if (choice < 1 || choice > cart->count) {
        printf('无效的选择!\n');
        return;
    }

    printf('请选择操作:\n');
    printf('1. 添加数量\n');
    printf('2. 删除商品\n');
    int operation;
    scanf('%d', &operation);

    if (operation == 1) {
        printf('请输入要添加的数量:');
        int quantity;
        scanf('%d', &quantity);
        cart->products[choice - 1]->price *= quantity;
    } else if (operation == 2) {
        int i;
        for (i=choice - 1; i < cart->count - 1; i++) {
            cart->products[i] = cart->products[i + 1];
        }
        cart->count--;
        printf('已删除商品。\n');
    } else {
        printf('无效的选择!\n');
    }
}

// 结算
void checkout(ShoppingCart* cart) {
    int total = 0;
    printf('结算清单:\n');
    int i;
    for (i=0; i < cart->count; i++) {
        printf('%s %s %d元\n', cart->products[i]->name, cart->products[i]->size, cart->products[i]->price);
        total += cart->products[i]->price;
    }
    printf('总计:%d元\n', total);
}

int main() {
    Product products[10];
    initProducts(products);

    ShoppingCart cart;
    cart.count = 0;

    int choice;
    while (1) {
        printf('\n菜单:\n');
        printf('1. 选购商品\n');
        printf('2. 显示已选商品\n');
        printf('3. 对已选商品进行添加或删除\n');
        printf('4. 结算\n');
        printf('0. 退出\n');
        printf('请输入菜单选项:');
        scanf('%d', &choice);

        switch (choice) {
            case 1:
                displayProducts(products);
                selectProduct(products, &cart);
                break;
            case 2:
                displaySelectedProducts(&cart);
                break;
            case 3:
                modifySelectedProducts(&cart);
                break;
            case 4:
                checkout(&cart);
                break;
            case 0:
                exit(0);
            default:
                printf('无效的选择!\n');
        }
    }

    return 0;
}

运行结果:

菜单:
1. 选购商品
2. 显示已选商品
3. 对已选商品进行添加或删除
4. 结算
0. 退出
请输入菜单选项:1

商品列表:
1 雅诗兰黛粉水 400m 350元
2 小棕瓶精华 50ml 420元
3 雅诗智妍面霜 50ml 750元
4 小棕瓶眼霜 15ml 500元
5 红石榴洁面 150ml 280元
6 DW粉底液(1w1) 30ml 380元
7 沁水粉底液(1c0) 30ml 450元
8 雅诗气垫 15ml 420元
9 雅诗防晒隔离 30ml 280元
10 雅诗樱花水 200ml 580元

请输入要选购的商品编号:1
已将商品 雅诗兰黛粉水 添加到购物车。

菜单:
1. 选购商品
2. 显示已选商品
3. 对已选商品进行添加或删除
4. 结算
0. 退出
请输入菜单选项:2

已选商品:
1 雅诗兰黛粉水 400m 350元

菜单:
1. 选购商品
2. 显示已选商品
3. 对已选商品进行添加或删除
4. 结算
0. 退出
请输入菜单选项:4

结算清单:
雅诗兰黛粉水 400m 350元
总计:350元

菜单:
1. 选购商品
2. 显示已选商品
3. 对已选商品进行添加或删除
4. 结算
0. 退出
请输入菜单选项:0

注意事项:

  • 商品数量没有进行限制,可以重复添加同一商品。
  • 购物车容量为10个商品,如果超过10个商品,会无法添加新的商品。
  • 代码中使用了strcpy函数来复制字符串,需要注意strcpy函数可能导致缓冲区溢出,应该使用strncpy函数进行安全复制。
  • 代码中没有对输入进行错误处理,应该添加对用户输入的错误处理,避免程序崩溃。

改进建议:

  • 添加商品数量限制,并修改购物车容量。
  • 使用strncpy函数进行安全复制。
  • 添加输入错误处理。
  • 可以添加商品分类、用户登录等功能,使购物车系统更加完善
C语言实现简单购物车系统

原文地址: https://www.cveoy.top/t/topic/oOWA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录