利用C语言写出具有下列功能的程序使用链表 设计简单的菜单,能够进行系统功能选择 2.实现商品名称,商品编号,类别,生产厂家,型号,库存数量,当日销售数量,零售价格,进货价格的录入功能。 3.在已有信息的基础上添加新的记录。 4.删除指定商品编号的记录。 5.修改指定商品编号的记录6按设备编号查询功能 7.能够计算出当日销售额8. 带注释
时间: 2024-04-12 15:32:46 浏览: 150
用C语言实现链表的各种操作
5星 · 资源好评率100%
下面是一个使用链表实现菜单功能的C语言程序,包括商品信息的录入、添加记录、删除记录、修改记录、查询记录和计算当日销售额等功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义商品结构体
typedef struct {
char name[20];
int id;
char category[20];
char manufacturer[20];
char model[20];
int quantity;
int salesQuantity;
float retailPrice;
float purchasePrice;
} Product;
// 定义链表节点结构体
typedef struct Node {
Product data;
struct Node* next;
} Node;
// 初始化链表
Node* initList() {
Node* head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
// 添加商品记录
void addRecord(Node* head) {
Node* p = head;
while (p->next != NULL) {
p = p->next;
}
Node* newNode = (Node*)malloc(sizeof(Node));
printf("请输入商品名称:");
scanf("%s", newNode->data.name);
printf("请输入商品编号:");
scanf("%d", &newNode->data.id);
printf("请输入商品类别:");
scanf("%s", newNode->data.category);
printf("请输入商品生产厂家:");
scanf("%s", newNode->data.manufacturer);
printf("请输入商品型号:");
scanf("%s", newNode->data.model);
printf("请输入库存数量:");
scanf("%d", &newNode->data.quantity);
printf("请输入当日销售数量:");
scanf("%d", &newNode->data.salesQuantity);
printf("请输入零售价格:");
scanf("%f", &newNode->data.retailPrice);
printf("请输入进货价格:");
scanf("%f", &newNode->data.purchasePrice);
newNode->next = NULL;
p->next = newNode;
}
// 删除指定商品编号的记录
void deleteRecord(Node* head, int id) {
Node* p = head->next;
Node* prev = head;
while (p != NULL) {
if (p->data.id == id) {
prev->next = p->next;
free(p);
printf("删除成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("未找到指定商品编号的记录!\n");
}
// 修改指定商品编号的记录
void modifyRecord(Node* head, int id) {
Node* p = head->next;
while (p != NULL) {
if (p->data.id == id) {
printf("请输入新的商品名称:");
scanf("%s", p->data.name);
printf("请输入新的商品类别:");
scanf("%s", p->data.category);
printf("请输入新的商品生产厂家:");
scanf("%s", p->data.manufacturer);
printf("请输入新的商品型号:");
scanf("%s", p->data.model);
printf("请输入新的库存数量:");
scanf("%d", &p->data.quantity);
printf("请输入新的当日销售数量:");
scanf("%d", &p->data.salesQuantity);
printf("请输入新的零售价格:");
scanf("%f", &p->data.retailPrice);
printf("请输入新的进货价格:");
scanf("%f", &p->data.purchasePrice);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到指定商品编号的记录!\n");
}
// 按设备编号查询功能
void searchRecord(Node* head, int id) {
Node* p = head->next;
while (p != NULL) {
if (p->data.id == id) {
printf("商品名称:%s\n", p->data.name);
printf("商品类别:%s\n", p->data.category);
printf("商品生产厂家:%s\n", p->data.manufacturer);
printf("商品型号:%s\n", p->data.model);
printf("库存数量:%d\n", p->data.quantity);
printf("当日销售数量:%d\n", p->data.salesQuantity);
printf("零售价格:%.2f\n", p->data.retailPrice);
printf("进货价格:%.2f\n", p->data.purchasePrice);
return;
}
p = p->next;
}
printf("未找到指定商品编号的记录!\n");
}
// 计算当日销售额
float calculateSales(Node* head) {
Node* p = head->next;
float totalSales = 0;
while (p != NULL) {
totalSales += p->data.salesQuantity * p->data.retailPrice;
p = p->next;
}
return totalSales;
}
int main() {
Node* head = initList();
int choice;
int id;
while (1) {
printf("\n1.退出\n");
printf("2.信息录入\n");
printf("3.添加新记录\n");
printf("4.删除指定商品编号的记录\n");
printf("5.修改指定商品编号的记录\n");
printf("6.按设备编号查询\n");
printf("7.计算当日销售额\n");
printf("请选择功能:");
scanf("%d", &choice);
switch (choice) {
case 1:
return 0;
case 2:
addRecord(head);
break;
case 3:
addRecord(head);
break;
case 4:
printf("请输入要删除的商品编号:");
scanf("%d", &id);
deleteRecord(head, id);
break;
case 5:
printf("请输入要修改的商品编号:");
scanf("%d", &id);
modifyRecord(head, id);
break;
case 6:
printf("请输入要查询的商品编号:");
scanf("%d", &id);
searchRecord(head, id);
break;
case 7:
printf("当日销售额为:%.2f\n", calculateSales(head));
break;
default:
printf("无效的选择!\n");
}
}
return 0;
}
```
这个程序使用链表来存储商品信息,通过菜单选择不同的功能实现商品信息的录入、添加记录、删除记录、修改记录、查询记录和计算当日销售额等功能。每个功能都有相应的函数实现,并且带有注释说明。你可以根据自己的需求进行修改和扩展。
阅读全文