C语言简单购物系统设计报告

一、设计内容

设计一个简单的购物系统,实现以下功能:

  1. 选购商品:用户可以选择商品列表中的商品,并将其添加到购物车。
  2. 显示已选商品:显示用户已选的所有商品信息,包括名称、规格、价格。
  3. 对已选商品进行添加或删除:用户可以对已选商品进行添加数量或删除操作。
  4. 结算:计算用户购物车中所有商品的总价,并显示结算清单。

二、设计要求

  1. 使用结构体存储商品和购物车信息。
  2. 商品列表和购物车中的商品数量均不能超过10个。
  3. 菜单中的选项要能够对应相应的功能。
  4. 结算时要显示所有已选商品的清单和总价。
  5. 程序要能够循环运行,直到用户选择退出。

三、设计分析

  1. 初始化商品列表: 使用initProducts函数初始化商品列表,将商品的名称、规格和价格存储到结构体数组中。
  2. 显示商品列表: 使用displayProducts函数显示商品列表,循环遍历商品结构体数组并打印出来。
  3. 选购商品: 使用selectProduct函数实现选购商品功能。用户输入商品编号后,将对应的商品结构体指针存储到购物车结构体数组中,并更新购物车中商品数量。
  4. 显示已选商品: 使用displaySelectedProducts函数显示已选商品列表,循环遍历购物车结构体数组并打印出来。
  5. 对已选商品进行添加或删除: 使用modifySelectedProducts函数实现对已选商品进行添加或删除的功能。用户输入商品编号后,选择添加数量或删除商品,并对购物车结构体数组进行相应的操作。
  6. 结算: 使用checkout函数实现结算功能,循环遍历购物车结构体数组并打印出已选商品的清单和总价。
  7. 菜单循环: 使用while循环实现菜单循环,根据用户选择执行相应的功能,直到用户选择退出。

四、源代码

#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;
}

五、课程设计小结

通过本次课程设计,我掌握了使用结构体、循环和分支语句实现简单的购物系统的方法。在设计过程中,我学会了如何初始化结构体数组、使用指针操作结构体数组、编写函数实现各种功能等。同时,我也意识到了在程序设计过程中需要严格遵守规范,尤其是对边界情况的考虑,以避免程序出现异常情况。

六、参考文献

无。

C语言实现简单购物系统

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

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