帮我写一个c语言的程序
时间: 2023-08-28 11:13:45 浏览: 148
好的,以下是一个简单的仓库管理系统的C语言程序,仅供参考:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_TYPE 50 // 最大货物类型数量
#define MAX_NAME 20 // 货物名称最大长度
#define FILE_NAME "warehouse.txt" // 保存仓库信息的文件名
// 货物类型结构体
struct GoodsType {
int id; // 货物种类编号
char name[MAX_NAME]; // 货物名称
int stock; // 库存数量
};
struct GoodsType goodsTypes[MAX_TYPE]; // 货物类型数组
int typeCount = 0; // 货物类型数量
// 显示主菜单
void showMenu() {
printf("======= 仓库管理系统 =======\n");
printf("1. 显示货物类型列表\n");
printf("2. 新增货物类型\n");
printf("3. 删除货物类型\n");
printf("4. 货物入库\n");
printf("5. 货物出库\n");
printf("6. 库存显示\n");
printf("7. 仓库信息存盘\n");
printf("8. 仓库信息文件调入\n");
printf("9. 退出\n");
printf("===========================\n");
}
// 显示货物类型列表
void showTypes() {
if (typeCount == 0) {
printf("暂无货物类型信息\n");
} else {
printf("货物种类编号\t货物名称\n");
for (int i = 0; i < typeCount; i++) {
printf("%d\t\t%s\n", goodsTypes[i].id, goodsTypes[i].name);
}
}
}
// 新增货物类型
void addType() {
if (typeCount == MAX_TYPE) {
printf("货物种类数量已达到最大限制\n");
return;
}
struct GoodsType newType;
printf("请输入货物种类编号:");
scanf("%d", &newType.id);
printf("请输入货物名称:");
scanf("%s", newType.name);
newType.stock = 0;
goodsTypes[typeCount++] = newType;
printf("添加货物类型成功\n");
}
// 删除货物类型
void removeType() {
int typeId;
printf("请输入要删除的货物种类编号:");
scanf("%d", &typeId);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
for (int j = i; j < typeCount - 1; j++) {
goodsTypes[j] = goodsTypes[j + 1];
}
typeCount--;
printf("删除货物类型成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 货物入库
void stockIn() {
int typeId, amount;
printf("请输入货物种类编号:");
scanf("%d", &typeId);
printf("请输入入库数量:");
scanf("%d", &amount);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
goodsTypes[i].stock += amount;
printf("货物入库成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 货物出库
void stockOut() {
int typeId, amount;
printf("请输入货物种类编号:");
scanf("%d", &typeId);
printf("请输入出库数量:");
scanf("%d", &amount);
for (int i = 0; i < typeCount; i++) {
if (goodsTypes[i].id == typeId) {
if (goodsTypes[i].stock < amount) {
printf("库存不足\n");
return;
}
goodsTypes[i].stock -= amount;
printf("货物出库成功\n");
return;
}
}
printf("未找到对应货物类型\n");
}
// 库存显示
void showStock() {
if (typeCount == 0) {
printf("暂无货物类型信息\n");
} else {
printf("货物种类编号\t货物名称\t库存数量\n");
for (int i = 0; i < typeCount; i++) {
printf("%d\t\t%s\t\t%d\n", goodsTypes[i].id, goodsTypes[i].name, goodsTypes[i].stock);
}
}
}
// 保存仓库信息到文件
void saveToFile() {
FILE *fp = fopen(FILE_NAME, "w");
if (fp == NULL) {
printf("打开文件失败\n");
return;
}
for (int i = 0; i < typeCount; i++) {
fprintf(fp, "%d,%s,%d\n", goodsTypes[i].id, goodsTypes[i].name, goodsTypes[i].stock);
}
fclose(fp);
printf("仓库信息保存成功\n");
}
// 从文件中读取仓库信息
void loadFromFile() {
FILE *fp = fopen(FILE_NAME, "r");
if (fp == NULL) {
printf("打开文件失败\n");
return;
}
typeCount = 0;
while (!feof(fp) && typeCount < MAX_TYPE) {
struct GoodsType type;
fscanf(fp, "%d,%[^,],%d\n", &type.id, type.name, &type.stock);
goodsTypes[typeCount++] = type;
}
fclose(fp);
printf("仓库信息读取成功\n");
}
int main() {
int choice;
while (1) {
showMenu();
printf("请选择操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
showTypes();
break;
case 2:
addType();
break;
case 3:
removeType();
break;
case 4:
stockIn();
break;
case 5:
stockOut();
break;
case 6:
showStock();
break;
case 7:
saveToFile();
break;
case 8:
loadFromFile();
break;
case 9:
printf("谢谢使用,再见!\n");
exit(0);
default:
printf("无效操作\n");
break;
}
}
return 0;
}
```
需要注意的是,此程序仅为一个简单的示例程序,可能存在一些问题和不足,具体实现方式可能因人而异,需要根据实际需求进行修改和完善。
阅读全文