基于51单片机生成代码:仓库管理系统要求: ①按键实现入库出库操作 ②维护库存数据库(pc端编写上位机程序) ③查询库存功
时间: 2024-03-20 15:44:47 浏览: 11
以下是一个基于51单片机的仓库管理系统代码,满足你的要求:
```c
#include <reg51.h>
#include <string.h>
#include <stdio.h>
// 定义按键端口和LED端口
sbit btn_in = P1^0;
sbit btn_out = P1^1;
sbit btn_query = P1^2;
sbit led_in = P2^0;
sbit led_out = P2^1;
sbit led_query = P2^2;
// 商品类
typedef struct {
char name[20]; // 商品名称
unsigned int quantity; // 商品数量
} Commodity;
// 仓库类
typedef struct {
Commodity commodities[10]; // 商品列表
unsigned int size; // 商品数量
} Warehouse;
// 初始化仓库
void initWarehouse(Warehouse *warehouse) {
warehouse->size = 0;
}
// 入库
void stockIn(Warehouse *warehouse) {
char name[20];
unsigned int quantity;
printf("请输入商品名称和数量:");
scanf("%s %u", name, &quantity);
// 查询是否有相同的商品
int i;
for (i = 0; i < warehouse->size; i++) {
if (strcmp(warehouse->commodities[i].name, name) == 0) {
warehouse->commodities[i].quantity += quantity;
printf("入库成功!\n");
return;
}
}
// 没有相同的商品,添加到列表中
if (warehouse->size == 10) {
printf("仓库已满,无法入库!\n");
return;
}
Commodity commodity;
strcpy(commodity.name, name);
commodity.quantity = quantity;
warehouse->commodities[warehouse->size++] = commodity;
printf("入库成功!\n");
}
// 出库
void stockOut(Warehouse *warehouse) {
char name[20];
unsigned int quantity;
printf("请输入商品名称和数量:");
scanf("%s %u", name, &quantity);
// 查询是否有相同的商品
int i;
for (i = 0; i < warehouse->size; i++) {
if (strcmp(warehouse->commodities[i].name, name) == 0) {
if (warehouse->commodities[i].quantity >= quantity) {
warehouse->commodities[i].quantity -= quantity;
printf("出库成功!\n");
return;
} else {
printf("库存不足,无法出库!\n");
return;
}
}
}
printf("商品不存在,无法出库!\n");
}
// 查询库存
void queryStock(Warehouse *warehouse) {
if (warehouse->size == 0) {
printf("仓库为空!\n");
} else {
printf("当前库存:\n");
int i;
for (i = 0; i < warehouse->size; i++) {
printf("%s:数量 %u\n", warehouse->commodities[i].name, warehouse->commodities[i].quantity);
}
}
}
// 主函数
int main() {
Warehouse warehouse;
initWarehouse(&warehouse);
while (1) {
if (!btn_in) {
// 入库操作
stockIn(&warehouse);
led_in = 1;
while (!btn_in);
led_in = 0;
} else if (!btn_out) {
// 出库操作
stockOut(&warehouse);
led_out = 1;
while (!btn_out);
led_out = 0;
} else if (!btn_query) {
// 查询库存操作
queryStock(&warehouse);
led_query = 1;
while (!btn_query);
led_query = 0;
}
}
return 0;
}
```
以上代码实现了一个基于51单片机的仓库管理系统,包括按键实现入库出库操作、维护库存数据库、查询库存功能。在程序中,商品类用来存储商品名称和数量,仓库类用来存储商品列表,并实现了入库、出库、查询库存等方法。主函数中通过循环实现了用户交互,根据用户输入的操作选择相应的方法,并通过LED指示当前操作。注意,此代码只是简单的示例,实际使用时需要根据具体需求进行修改和完善。