c语言实现商品入库出库查询的功能代码

以下是一个简单的商品入库出库查询的功能代码,其中使用了结构体来表示商品信息,使用了数组来保存多个商品的信息:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_PRODUCTS 100  // 最大商品数量
// 商品结构体
typedef struct Product {
    char name[20];  // 商品名称
    int stock;      // 库存数量
} Product;
// 商品数组
Product products[MAX_PRODUCTS];
int num_products = 0;
// 显示菜单
void show_menu() {
    printf("1. 显示所有商品\n");
    printf("2. 入库\n");
    printf("3. 出库\n");
    printf("4. 查询商品\n");
    printf("5. 退出\n");
}
// 显示所有商品
void show_all_products() {
    if (num_products == 0) {
        printf("没有商品!\n");
        return;
    }
    printf("名称\t库存\n");
    for (int i = 0; i < num_products; i++) {
        printf("%s\t%d\n", products[i].name, products[i].stock);
    }
}
// 查找商品的索引
int find_product_index(char* name) {
    for (int i = 0; i < num_products; i++) {
        if (strcmp(products[i].name, name) == 0) {
            return i;
        }
    }
    return -1;
}
// 入库
void add_stock() {
    char name[20];
    int stock;
    printf("请输入商品名称:");
    scanf("%s", name);
    printf("请输入入库数量:");
    scanf("%d", &stock);
    int index = find_product_index(name);
    if (index == -1) {
        printf("没有找到商品 %s!\n", name);
        return;
    }
    products[index].stock += stock;
    printf("商品 %s 入库 %d 个,当前库存 %d 个\n", name, stock, products[index].stock);
}
// 出库
void reduce_stock() {
    char name[20];
    int stock;
    printf("请输入商品名称:");
    scanf("%s", name);
    printf("请输入出库数量:");
    scanf("%d", &stock);
    int index = find_product_index(name);
    if (index == -1) {
        printf("没有找到商品 %s!\n", name);
        return;
    }
    if (products[index].stock < stock) {
        printf("商品 %s 库存不足!\n", name);
        return;
    }
    products[index].stock -= stock;
    printf("商品 %s 出库 %d 个,当前库存 %d 个\n", name, stock, products[index].stock);
}
// 查询商品
void search_product() {
    char name[20];
    printf("请输入商品名称:");
    scanf("%s", name);
    int index = find_product_index(name);
    if (index == -1) {
        printf("没有找到商品 %s!\n", name);
        return;
    }
    printf("名称\t库存\n");
    printf("%s\t%d\n", products[index].name, products[index].stock);
}
// 主函数
int main() {
    int choice;
    while (1) {
        show_menu();
        printf("请选择操作:");
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                show_all_products();
                break;
            case 2:
                add_stock();
                break;
            case 3:
                reduce_stock();
                break;
            case 4:
                search_product();
                break;
            case 5:
                printf("再见!\n");
                return 0;
            default:
                printf("无效的选择!\n");
                break;
        }
    }
}

以上代码实现了商品入库出库查询的功能,包括以下操作:

  1. 显示所有商品
  2. 入库
  3. 出库
  4. 查询商品 用户可以根据菜单选择需要的操作,方便地管理商品的库存信息。

以上代码实现的商品入库出库查询功能比较简单,还有许多可以完善的地方。以下是一些可以继续完善的方向:

输入检查

目前的代码没有对用户输入进行检查,可能会导致程序崩溃或出现意外结果。可以在输入时加入一些检查,比如检查输入的商品名称是否存在、入库出库数量是否为正数等等。

文件存储

目前的代码在程序退出时会丢失所有商品信息,可以将商品信息保存到文件中,下次运行程序时自动加载之前的商品信息。

商品分类

如果有多种类型的商品,可以考虑对商品进行分类管理,比如按照商品类别、品牌、规格等分类。

界面优化

目前的代码界面比较简陋,可以考虑使用图形界面或者命令行界面库来优化界面,方便用户更直观地查看和管理商品信息。

数据库支持

如果需要进行更加复杂的商品管理,可以考虑使用数据库来存储和管理商品信息,比如使用MySQL、SQLite等数据库。 综上,以上代码可以作为商品入库出库查询功能的基础代码,还有许多可以完善的地方,可以根据实际需求进行扩展和修改。