请你用c语言帮我写一个超市收银后台系统谢谢

时间: 2023-11-25 14:06:33 浏览: 29
好的,以下是一个简单的超市收银后台系统的C代码实现,仅供参考: ```c #include <stdio.h> #include <stdlib.h> #define MAX_ITEMS 1000 #define DISCOUNT_PRICE 1000 #define DISCOUNT_RATE 0.1 typedef struct { int id; // 商品ID char name[20]; // 商品名称 double price; // 商品价格 int quantity; // 商品数量 } Item; Item items[MAX_ITEMS]; int num_items = 0; // 添加商品 void add_item(int id, char name[], double price, int quantity) { if (num_items >= MAX_ITEMS) { printf("超市已满,无法添加更多商品!\n"); return; } items[num_items].id = id; sprintf(items[num_items].name, "%s", name); items[num_items].price = price; items[num_items].quantity = quantity; num_items++; printf("商品添加成功!\n"); } // 删除商品 void delete_item(int id) { int i, j; for (i = 0; i < num_items; i++) { if (items[i].id == id) { for (j = i; j < num_items - 1; j++) { items[j] = items[j + 1]; } num_items--; printf("商品删除成功!\n"); return; } } printf("商品不存在!\n"); } // 展示商品列表 void show_items() { int i; printf("商品列表:\n"); for (i = 0; i < num_items; i++) { printf("%d\t%s\t%.2f元/个\t%d个\n", items[i].id, items[i].name, items[i].price, items[i].quantity); } } // 结算 void settle() { int i; double total_price = 0; double discounted_price; int total_quantity = 0; printf("请依次输入所购买商品的ID和数量(输入-1表示结算):\n"); while (1) { int id, quantity, j; double price; scanf("%d", &id); if (id == -1) { break; } for (j = 0; j < num_items; j++) { if (items[j].id == id) { printf("请输入%d号商品的数量:", id); scanf("%d", &quantity); if (items[j].quantity < quantity) { printf("库存不足!\n"); break; } items[j].quantity -= quantity; price = items[j].price * quantity; total_price += price; total_quantity += quantity; printf("添加成功!\n"); break; } } if (j == num_items) { printf("商品不存在!\n"); } } if (total_price >= DISCOUNT_PRICE) { discounted_price = total_price * (1 - DISCOUNT_RATE); } else { discounted_price = total_price; } printf("总计%d个商品,原价%.2f元,折后价%.2f元\n", total_quantity, total_price, discounted_price); } int main() { int choice; while (1) { printf("超市收银系统\n"); printf("1.添加商品\n"); printf("2.删除商品\n"); printf("3.展示商品列表\n"); printf("4.结算\n"); printf("5.退出\n"); printf("请输入您的选择:"); scanf("%d", &choice); switch (choice) { case 1: printf("请输入商品ID、名称、价格和数量,以空格分隔:"); int id, quantity; double price; char name[20]; scanf("%d %s %lf %d", &id, name, &price, &quantity); add_item(id, name, price, quantity); break; case 2: printf("请输入要删除的商品ID:"); scanf("%d", &id); delete_item(id); break; case 3: show_items(); break; case 4: settle(); break; case 5: printf("谢谢使用!\n"); exit(0); default: printf("无效的选择,请重新输入!\n"); break; } } return 0; } ``` 在这份代码中,我们使用了结构体来存储商品信息,包括ID、名称、价格和数量。我们提供了添加商品、删除商品、展示商品列表和结算等功能。在结算时,如果总价超过了1000元,则可以享受10%的折扣。希望这份代码能够对您有所帮助。

相关推荐

最新推荐

recommend-type

C语言实现简单航班管理系统

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

C语言实现车辆出租管理系统

主要为大家详细介绍了C语言实现车辆出租管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现餐饮结账管理系统

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

餐馆点菜系统C语言源代码

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

node-v0.10.13-sunos-x86.tar.gz

Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

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