在仓库管理系统中,每一个商品具有唯一的编号。因此需要对商品编号、商品的名称、数量等信息进行管理。要求利用结构体变量记录每种商品的编号、名称、数量,并建立单向链表来存放商品的信息。 功能实现要求如下: (1) 写函数create()实现建立单链表来存放商品的信息,添加商品并输出所有商品信息。 (2) 写函数show()输出所有商品的信息。 (3) 若有商品出库或入库,需要写函数updateCount(char num[])对仓库系统进行更新,先根据商品编号查询对应商品的信息,若成功查询到该商品,重新输入商品数量对商品进行更新;若不存在则输出修改失败,库存中不存在该商品。 (4) 写函数释放链表所占内存空间 结构体类型定义如下: struct goods{ char num[10]; char name[20]; int count; struct goods *next; } ;
时间: 2024-03-10 20:49:10 浏览: 128
好的,我已经了解了你的问题。下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct goods{
char num[10];
char name[20];
int count;
struct goods *next;
};
struct goods *head = NULL; // 链表头指针
// 函数声明
void create();
void show();
void updateCount(char num[]);
void freeList();
// 建立单链表来存放商品的信息,添加商品并输出所有商品信息
void create(){
struct goods *p, *q;
char ch;
do{
p = (struct goods *)malloc(sizeof(struct goods));
printf("请输入商品编号:");
scanf("%s", p->num);
printf("请输入商品名称:");
scanf("%s", p->name);
printf("请输入商品数量:");
scanf("%d", &p->count);
p->next = NULL;
if(head == NULL){
head = p;
}else{
q->next = p;
}
q = p;
printf("是否继续添加商品(y/n):");
scanf(" %c", &ch);
}while(ch == 'y' || ch == 'Y');
show();
}
// 输出所有商品的信息
void show(){
struct goods *p;
if(head == NULL){
printf("仓库没有商品!\n");
return;
}
printf("商品编号\t商品名称\t商品数量\n");
for(p = head; p != NULL; p = p->next){
printf("%s\t\t%s\t\t%d\n", p->num, p->name, p->count);
}
}
// 对仓库系统进行更新,先根据商品编号查询对应商品的信息,若成功查询到该商品,重新输入商品数量对商品进行更新;若不存在则输出修改失败,库存中不存在该商品
void updateCount(char num[]){
struct goods *p;
for(p = head; p != NULL; p = p->next){
if(strcmp(p->num, num) == 0){
printf("请输入新的商品数量:");
scanf("%d", &p->count);
show();
return;
}
}
printf("修改失败,库存中不存在该商品!\n");
}
// 释放链表所占内存空间
void freeList(){
struct goods *p;
while(head != NULL){
p = head;
head = head->next;
free(p);
}
}
int main(){
int choice;
char num[10];
while(1){
printf("请选择操作:\n");
printf("1. 添加商品\n");
printf("2. 查看商品信息\n");
printf("3. 更新商品数量\n");
printf("4. 退出系统\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch(choice){
case 1:
create();
break;
case 2:
show();
break;
case 3:
printf("请输入要修改的商品编号:");
scanf("%s", num);
updateCount(num);
break;
case 4:
freeList();
exit(0);
default:
printf("输入错误,请重新选择!\n");
break;
}
}
return 0;
}
```
以上代码实现了仓库管理系统的基本功能,包括添加商品、查看商品信息、更新商品数量和退出系统。你可以根据自己的需要进行修改和完善。
阅读全文