用C写一个仓库管理系统,加入删除功能,并注释
时间: 2024-03-10 12:48:19 浏览: 24
好的,以下是一个简单的用 C 语言编写的仓库管理系统,包括删除功能,并加入了注释以便您更好地理解代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ITEMS 100
// 商品结构体
struct item {
int id;
char name[50];
int quantity;
float price;
};
// 仓库结构体
struct warehouse {
struct item items[MAX_ITEMS];
int count;
};
// 初始化仓库
void init_warehouse(struct warehouse *w) {
w->count = 0;
}
// 添加商品
void add_item(struct warehouse *w, struct item i) {
// 检查仓库是否已满
if (w->count >= MAX_ITEMS) {
printf("仓库已满,无法添加新商品!\n");
return;
}
// 检查商品是否已存在
for (int j = 0; j < w->count; j++) {
if (w->items[j].id == i.id) {
printf("商品已存在,无需添加!\n");
return;
}
}
// 添加商品
w->items[w->count] = i;
w->count++;
printf("商品添加成功!\n");
}
// 删除商品
void delete_item(struct warehouse *w, int id) {
int found = 0;
// 遍历仓库中的商品
for (int i = 0; i < w->count; i++) {
if (w->items[i].id == id) {
// 找到了要删除的商品,将其从数组中删除
for (int j = i; j < w->count - 1; j++) {
w->items[j] = w->items[j+1];
}
// 将最后一个元素清空
memset(&w->items[w->count - 1], 0, sizeof(struct item));
// 仓库中的商品数量减1
w->count--;
printf("商品删除成功!\n");
found = 1;
break;
}
}
if (!found) {
printf("找不到要删除的商品!\n");
}
}
// 显示仓库中的所有商品
void show_items(struct warehouse *w) {
printf("仓库中的商品:\n");
printf("ID\t名称\t数量\t单价\n");
for (int i = 0; i < w->count; i++) {
printf("%d\t%s\t%d\t%.2f\n", w->items[i].id, w->items[i].name, w->items[i].quantity, w->items[i].price);
}
}
int main() {
// 初始化仓库
struct warehouse w;
init_warehouse(&w);
// 添加一些商品
add_item(&w, (struct item){1, "电视机", 10, 1999.99});
add_item(&w, (struct item){2, "冰箱", 5, 2999.99});
add_item(&w, (struct item){3, "洗衣机", 3, 1999.99});
// 显示商品列表
show_items(&w);
// 删除商品
delete_item(&w, 2);
// 再次显示商品列表
show_items(&w);
return 0;
}
```
在上面的代码中,我们定义了两个结构体,一个用于表示商品,另一个用于表示整个仓库。然后我们定义了一些函数,包括初始化仓库、添加商品、删除商品和显示商品列表。在主函数中,我们首先初始化了仓库,然后添加了一些商品,显示了商品列表,接着删除了一个商品,再次显示了商品列表。
注意,在删除商品时,我们需要遍历整个仓库,找到要删除的商品,并将其从数组中删除。为了实现这一点,我们使用了两个嵌套的循环,第一个循环用于遍历仓库中的所有商品,第二个循环用于将要删除的商品之后的所有商品向前移动一位。
希望这个例子对您有所帮助!