1.概述
该课设为商品库存管理系统,系统分为四大模块:商品出入库模块,商品查询系统模块,商品修改和删除系统模块以及主菜单模块。
要实现以上功能,首先要使程序能够实现出入库功能,然后需要定义结构体,用来记录商品的入库的信息等,接着对于信息的初始化程序,运用指针和文件的读入,更新和修改商品的出入库信息。
为了便于系统的调试测试,系统中的商品信息,等采用文件的形式保存,当运行程序时系统只需要从文件读取数据,就能运行程序。
2.针对商品库存管理系统
通过运用结构体定义商品的名称,商品数量,商品单价等,如果要求有需要,可以适当的增加商品编码,商品的生产商,以便于商品的信息查询。
3.分析程序
设计商品库存管理系统,首先我们要明确程序中可能遇到什么问题,怎样解决,而不是求助与人工智能。商品库存管理系统将要用到循环条件下的Switch()函数,结构体,数组,文件指针等,我们需要融汇贯通,才能在未来编写更加复杂的程序。
4.源代码
仅供产考
#include <stdio.h>
#define MAX_PRODUCTS 100 // 最大商品数
// 商品结构体
typedef struct product {
char name[20]; // 商品名称
int quantity; // 商品数量
float price; // 商品单价
} Product;
Product products[MAX_PRODUCTS]; // 商品数组
int num_products = 0; // 商品数
// 添加商品
void add_product(Product p) {
if(num_products >= MAX_PRODUCTS) {
printf("Error: 商品种类已达上限\n");
return;
}
products[num_products++] = p;
printf("添加成功!\n");
}
// 列出所有商品
void list_products() {
printf("商品名称\t\t数量\t单价\n");
for(int i = 0; i < num_products; i++) {
printf("%-20s\t%d\t%.2f\n", products[i].name, products[i].quantity, products[i].price);
}
}
// 查询商品
void search_product(char name[]) {
for(int i = 0; i < num_products; i++) {
if(strcmp(products[i].name, name) == 0) {
printf("商品名称\t\t数量\t单价\n");
printf("%-20s\t%d\t%.2f\n", products[i].name, products[i].quantity, products[i].price);
return;
}
}
printf("Error: 商品不存在\n");
}
// 更新商品
void update_product(char name[], int quantity) {
for(int i = 0; i < num_products; i++) {
if(strcmp(products[i].name, name) == 0) {
products[i].quantity += quantity;
printf("更新成功!\n");
return;
}
}
printf("Error: 商品不存在\n");
}
// 删除商品
void delete_product(char name[]) {
for(int i = 0; i < num_products; i++) {
if(strcmp(products[i].name, name) == 0) {
for(int j = i; j < num_products - 1; j++) {
products[j] = products[j + 1];
}
num_products--;
printf("删除成功!\n");
return;
}
}
printf("Error: 商品不存在\n");
}
int main() {
int choice;
Product p;
char name[20];
int quantity;
while(1) {
printf("\n商品库存管理系统\n");
printf("1. 添加商品\n");
printf("2. 列出所有商品\n");
printf("3. 查询商品\n");
printf("4. 更新商品数量\n");
printf("5. 删除商品\n");
printf("6. 退出\n");
printf("请输入选项(1-6):");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("请输入商品名称:");
scanf("%s", p.name);
printf("请输入商品数量:");
scanf("%d", &p.quantity);
printf("请输入商品单价:");
scanf("%f", &p.price);
add_product(p);
break;
case 2:
list_products();
break;
case 3:
printf("请输入要查询的商品名称:");
scanf("%s", name);
search_product(name);
break;
case 4:
printf("请输入要更新的商品名称:");
scanf("%s", name);
printf("请输入要更新的商品数量(正数表示入库,负数表示出库):");
scanf("%d", &quantity);
update_product(name, quantity);
break;
case 5:
printf("请输入要删除的商品名称:");
scanf("%s", name);
delete_product(name);
break;
case 6:
printf("谢谢使用!\n");
return 0;
default:
printf("Error: 无效选项\n");
break;
}
}
return 0;
}