用C语言实现下列程序:在仓库管理系统中,每一个商品具有唯一的编号。因此需要对商品编号、商品的名称、数量等信息进行管理。要求利用结构体变量记录每种商品的编号、名称、数量,并建立单向链表来存放商品的信息。 功能实现要求如下: (1) 写函数create()实现建立单链表来存放商品的信息,添加商品并输出所有商品信息。 (2) 写函数show()输出所有商品的信息。 (3) 若有商品出库或入库,需要写函数updateCount(char num[ ])对仓库系统进行更新,先根据商品编号查询对应商品的信息,若成功查询到该商品,重新输入商品数量对商品进行更新;若不存在则输出修改失败,库存中不存在该商品。 (4) 写函数释放链表所占内存空间 结构体类型定义如下: struct goods{ char num[10]; char name[20]; int count; struct goods *next; };
时间: 2024-03-03 19:49:48 浏览: 90
好的,下面是你所要求的C语言程序实现:
```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() {
int n;
printf("请输入商品数量:");
scanf("%d", &n);
getchar(); // 吃掉缓冲区的回车符
struct goods *p;
for (int i = 0; i < n; i++) {
p = (struct goods *) malloc(sizeof(struct goods)); // 分配内存空间
printf("请输入第%d个商品的编号、名称、数量:", i + 1);
scanf("%s %s %d", p->num, p->name, &p->count);
getchar(); // 吃掉缓冲区的回车符
p->next = head;
head = p;
}
show(); // 输出所有商品信息
}
// 输出所有商品的信息
void show() {
struct goods *p = head;
printf("商品编号\t商品名称\t商品数量\n");
while (p != NULL) {
printf("%s\t\t%s\t\t%d\n", p->num, p->name, p->count);
p = p->next;
}
}
// 更新商品数量
void updateCount(char num[]) {
struct goods *p = head;
while (p != NULL) {
if (strcmp(p->num, num) == 0) { // 找到该商品
int count;
printf("请输入新的商品数量:");
scanf("%d", &count);
p->count = count;
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("修改失败,库存中不存在该商品!\n");
}
// 释放链表所占内存空间
void freeList() {
struct goods *p = head;
while (p != NULL) {
struct goods *temp = p;
p = p->next;
free(temp);
}
head = NULL;
}
int main() {
int choice;
while (1) {
printf("\n1. 添加商品并输出所有商品信息\n");
printf("2. 输出所有商品信息\n");
printf("3. 更新商品数量\n");
printf("4. 退出程序\n");
printf("请选择操作:");
scanf("%d", &choice);
getchar(); // 吃掉缓冲区的回车符
switch (choice) {
case 1:
create();
break;
case 2:
show();
break;
case 3: {
char num[10];
printf("请输入要更新的商品编号:");
scanf("%s", num);
getchar(); // 吃掉缓冲区的回车符
updateCount(num);
break;
}
case 4:
freeList();
printf("已退出程序!\n");
exit(0);
default:
printf("输入错误,请重新输入!\n");
}
}
return 0;
}
```
程序中定义了一个商品信息结构体,包括商品编号、商品名称和商品数量,以及指向下一个商品信息的指针。程序使用单向链表来存放商品信息,实现了添加商品、输出所有商品信息、更新商品数量和释放链表所占内存空间等功能。
希望这个程序能够满足你的需求。
阅读全文