以下是一个简单的仓库信息管理系统的C语言程序示例,包括库存管理和订单管理功能。它使用了结构体来存储物品信息和订单信息,并使用文件保存数据。
```c
#include <stdio.h>
#include <string.h>
#define MAX_ITEMS 100
#define MAX_ORDERS 100
struct Item {
char name[20];
int quantity;
float price;
};
struct Order {
char name[20];
int quantity;
float price;
char type[10];
};
struct Item items[MAX_ITEMS];
struct Order orders[MAX_ORDERS];
int num_items = 0;
int num_orders = 0;
void add_item() {
printf("请输入物品名:");
scanf("%s", items[num_items].name);
printf("请输入物品数量:");
scanf("%d", &items[num_items].quantity);
printf("请输入物品价格:");
scanf("%f", &items[num_items].price);
num_items++;
printf("物品已添加。\n");
}
void list_items() {
printf("物品列表:\n");
for (int i = 0; i < num_items; i++) {
printf("%d. %s\t%d\t%.2f\n", i + 1, items[i].name, items[i].quantity, items[i].price);
}
}
void add_order() {
printf("请输入订单物品名:");
scanf("%s", orders[num_orders].name);
printf("请输入订单物品数量:");
scanf("%d", &orders[num_orders].quantity);
printf("请输入订单物品价格:");
scanf("%f", &orders[num_orders].price);
printf("请输入订单类型(入库或出库):");
scanf("%s", orders[num_orders].type);
num_orders++;
printf("订单已添加。\n");
}
void list_orders() {
printf("订单列表:\n");
for (int i = 0; i < num_orders; i++) {
printf("%d. %s\t%d\t%.2f\t%s\n", i + 1, orders[i].name, orders[i].quantity, orders[i].price, orders[i].type);
}
}
void save_data() {
FILE *fp;
fp = fopen("data.txt", "w");
if (fp == NULL) {
printf("文件打开失败。\n");
return;
}
fprintf(fp, "%d\n", num_items);
for (int i = 0; i < num_items; i++) {
fprintf(fp, "%s %d %.2f\n", items[i].name, items[i].quantity, items[i].price);
}
fprintf(fp, "%d\n", num_orders);
for (int i = 0; i < num_orders; i++) {
fprintf(fp, "%s %d %.2f %s\n", orders[i].name, orders[i].quantity, orders[i].price, orders[i].type);
}
fclose(fp);
printf("数据已保存。\n");
}
void load_data() {
FILE *fp;
fp = fopen("data.txt", "r");
if (fp == NULL) {
printf("文件打开失败。\n");
return;
}
fscanf(fp, "%d", &num_items);
for (int i = 0; i < num_items; i++) {
fscanf(fp, "%s %d %f", items[i].name, &items[i].quantity, &items[i].price);
}
fscanf(fp, "%d", &num_orders);
for (int i = 0; i < num_orders; i++) {
fscanf(fp, "%s %d %f %s", orders[i].name, &orders[i].quantity, &orders[i].price, orders[i].type);
}
fclose(fp);
printf("数据已加载。\n");
}
int main() {
int choice;
load_data();
while (1) {
printf("\n请选择操作:\n");
printf("1. 添加物品\n2. 查看物品\n3. 添加订单\n4. 查看订单\n5. 保存数据\n6. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
add_item();
break;
case 2:
list_items();
break;
case 3:
add_order();
break;
case 4:
list_orders();
break;
case 5:
save_data();
break;
case 6:
save_data();
return 0;
default:
printf("无效的选择。\n");
}
}
}
```
该程序使用了一个无限循环,让用户选择不同的操作。它使用了文件来保存数据,以便在程序重新启动时保留数据。用户可以添加物品和订单,并查看它们的列表。