利用C语言写出具有下列功能的程序使用链表 设计简单的菜单,能够进行系统功能选择 2.实现商品名称,商品编号,类别,生产厂家,型号,库存数量,当日销售数量,零售价格,进货价格的录入功能。 3.在已有信息的基础上添加新的记录。 4.删除指定商品编号的记录。 5.修改指定商品编号的记录6按设备编号查询功能 7.能够计算出当日销售额8. 带注释

时间: 2024-04-12 19:32:46 浏览: 19
下面是一个使用链表实现菜单功能的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; } ``` 这个程序使用链表来存储商品信息,通过菜单选择不同的功能实现商品信息的录入、添加记录、删除记录、修改记录、查询记录和计算当日销售额等功能。每个功能都有相应的函数实现,并且带有注释说明。你可以根据自己的需求进行修改和扩展。

相关推荐

最新推荐

recommend-type

C语言实现食堂就餐管理系统(带链表)

主要为大家详细介绍了C语言实现食堂就餐管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言链表题目(附答案).docx

大一初学C语言时的期末作业,涉及到链表的建立和功能的实现,涉及指针、函数、动态结构建立等方面的知识,初学者可以参考参考尝试尝试哟!!!
recommend-type

课设报告-“贪吃蛇_C语言_链表实现”-CSDN~.docx

课设报告-“贪吃蛇_C语言_链表实现~_课设”中 兑现将课设报告另发一篇博客~
recommend-type

C语言数据结构实现链表逆序并输出

主要介绍了C语言数据结构实现链表逆序并输出的相关资料,需要的朋友可以参考下
recommend-type

C语言程序设计实现 雪花飘落

编程思路:首先在程序开始处,开通语句#include&lt;stdlib.h&gt;引入头函数,建立函数,然后定义结构体变量Snow,并且编写雪花的一系列操作的函数;最后在main函数的内部实现对各子函数的调用,实现雪花飘落的过程。 三....
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

从键盘输入一段英文字符串,其中包含多个字母‘h',请编写程序利用正则表达式,将英文字符串中的’h'全部改为‘H’

好的,我可以帮您解决这个问题。 您可以使用 Python 编写一个程序来实现这个功能。具体步骤如下: 1. 首先导入 re 模块,这个模块是 Python 中用于处理正则表达式的模块。 2. 然后定义一个包含英文字符串的变量,例如: text = "This is a string containing multiple h's." 3. 接下来,使用 re.sub() 方法来进行替换操作。re.sub() 方法的第一个参数是正则表达式,第二个参数是替换的字符或字符串,第三个参数是被替换的字符串。在这个例子里,我们需要将所有的小写字母 h 替换成大写字母 H,所以正则表达式可以写成
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。