C++实现的购物小程序

以下是一个详细的C++实现的购物小程序。这段代码模拟了一个基础的购物车系统,用户可以通过交互式菜单与程序进行交互,执行各种购物相关的操作,如添加商品到购物车、查看购物车中的商品列表、计算购物车中的商品总价等。

购物小程序

问题描述

实现一个简单但功能齐全的购物小程序,用户可以通过该程序管理自己的购物车。在这个程序中,用户可以执行以下操作:

  1. 添加商品: 用户可以将商品添加到购物车中,每个商品具有名称和价格两个属性。在添加商品时,用户需要输入商品的名称和价格,程序会将该商品添加到购物车的商品列表中。

  2. 查看购物车: 用户可以查看当前购物车中所有已添加的商品,程序会显示每个商品的名称和价格。如果购物车为空,程序会提示用户购物车为空。

  3. 计算总价: 用户可以计算购物车中所有商品的总价格。程序会遍历购物车中的所有商品,累加其价格,并显示总价。

  4. 退出程序: 用户可以选择退出程序。当用户选择退出时,程序会感谢用户使用,并终止运行。

这个购物小程序为用户提供了一个基本的购物体验,并可作为更复杂购物系统的基础。

代码实现

#include <iostream>
#include <vector>
#include <string>using namespace std;// 商品类
class Product {
public:string name;   // 商品名称double price;  // 商品价格// 构造函数Product(string n, double p) : name(n), price(p) {}
};// 购物车类
class ShoppingCart {
private:vector<Product> cart;  // 存储购物车中的商品public:// 添加商品到购物车void addProduct(const Product& product) {cart.push_back(product);cout << "Added " << product.name << " to the cart." << endl;}// 显示购物车中的商品void showCart() {if (cart.empty()) {cout << "Your cart is empty!" << endl;return;}cout << "Items in your cart:" << endl;for (const auto& product : cart) {cout << "- " << product.name << ": $" << product.price << endl;}}// 计算购物车中商品的总价double calculateTotal() {double total = 0.0;for (const auto& product : cart) {total += product.price;}return total;}
};int main() {ShoppingCart cart;  // 创建购物车对象int choice;         // 用户菜单选择string name;        // 商品名称double price;       // 商品价格// 简单的菜单系统,用户可以选择不同的操作while (true) {cout << "\nShopping Cart Menu:" << endl;cout << "1. Add Product" << endl;cout << "2. Show Cart" << endl;cout << "3. Calculate Total" << endl;cout << "4. Exit" << endl;cout << "Enter your choice: ";cin >> choice;switch (choice) {case 1:cout << "Enter product name: ";cin >> name;cout << "Enter product price: ";cin >> price;cart.addProduct(Product(name, price));  // 将商品添加到购物车break;case 2:cart.showCart();  // 显示购物车中的商品break;case 3:cout << "Total price: $" << cart.calculateTotal() << endl;  // 计算并显示总价break;case 4:cout << "Thank you for shopping!" << endl;  // 退出程序return 0;default:cout << "Invalid choice. Please try again." << endl;break;}}
}

代码说明

Product类表示商品,每个商品有一个名称name和价格price两个属性。
Product类的构造函数用于初始化商品的名称和价格。
ShoppingCart类用于管理购物车。它包含一个cart向量,用于存储所有添加到购物车中的商品。
addProduct()方法用于将一个Product对象添加到购物车中,并在添加后提示用户商品已成功添加。
showCart()方法用于显示购物车中的所有商品名称和价格。如果购物车为空,程序会提示用户购物车为空。
calculateTotal()方法用于计算购物车中所有商品的总价格。通过遍历购物车中的所有商品并累加其价格,程序计算出总价并返回。
在main()函数中,程序首先创建一个ShoppingCart对象cart。接下来,程序进入一个无限循环,展示一个简单的菜单系统,用户可以通过菜单进行交互。
用户可以选择添加商品、查看购物车、计算总价或退出程序。每个选项对应不同的功能,并由switch语句进行处理。
如果用户选择退出,程序会感谢用户的使用,并退出程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java Web —— 第九天(事务)

事务管理 & AOP 事务回顾 概念 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;这些操作 要么同时成功&#xff0c;要么同时失败 操作 开启事务(一组操作开始前&#xff0c;开启事务): start transaction / begin 提交事务(这组操作全部成功…

ros2--jupyter

问题 import rclpy---报错 链接 strings /usr/lib32/libstdc.so.6 | grep GLIBCXX_3.4.30

python 打包exe

python打包&#xff1a; pyinstaller --onefile wc_main3.pypyi-makespec wc_main3.py 》pyi-makespec wc_main3.py Wrote /home/a/wc_main3.spec. Now run pyinstaller.py to build the executable.pyinstaller wc_main3.specFile "/home/a/anaconda3/envs/l/lib/pyt…

Word文档被锁定无法编辑怎么办?一键快速移除Word编辑限制

有没有遇到这种情况&#xff1f;打开Word文档后&#xff0c;准备对Word软件进行文档的编辑时&#xff0c;发现文档有部分内容无法进行编辑了&#xff0c;不知道怎么回事&#xff0c;其实这是因为无法编辑区域被锁定了&#xff0c;所以无法进行编辑&#xff0c;那么应该怎么解除…

Scrapy 分布式爬虫框架 Scrapy-Redis

github官网代码示例&#xff1a;https://github.com/rmax/scrapy-redis/blob/master/example-project/example/spiders/myspider_redis.py 什么是 Scrapy-Redis Scrapy-Redis 是一个基于 Scrapy 的扩展&#xff0c;用于实现分布式爬虫。它利用 Redis 作为分布式队列来共享待爬…

【Qt窗口】—— 浮动窗口

目录 1.1 浮动窗口的创建 1.2 设置停靠的位置 1.3 示例小结 在Qt中&#xff0c;浮动窗口也称之为铆接部件&#xff0c;俗称为子窗口&#xff0c;浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核⼼部件的周围&#xff0c;可以有多个。 1.1 浮动窗口的…

CAD如何批量输出PDF?介绍了三种方式

CAD如何批量输出PDF&#xff1f;在工程设计、建筑制图以及产品设计等领域&#xff0c;CAD软件是不可或缺的工具。随着项目规模的扩大&#xff0c;如何将CAD图纸批量转换成PDF格式以便分享、打印或存档&#xff0c;成为了许多设计师面临的常见问题。下文将介绍三种高效的方法&am…

Nuxt3之pinia持久化配置

Nuxt3 配置pinia首选要在 Nuxt3 项目中安装pinia Nuxt3官方pinia模块安装链接 直接在项目终端下输入 npm 命令 npm i pinia pinia/nuxt // pinia&#xff1a; npm i -D pinia-plugin-persistedstate/nuxt // pinia-plugin-persistedstate 如果你是使用pnpm 或者 yarm 等其他n…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…

SLAM学习笔记

从《slam十四讲开始》 slam十四讲推荐的其他书籍 《概率机器人》&#xff08;Probabilistic robotics &#xff09; 《计算机视觉中的多视图几何》&#xff08;Multiple View Geometry in Computer Vision &#xff09; 《机器人学中的状态估计》&#xff08;State Estimation…

操作系统

操作系统是控制和管理计算机硬件和软件资源。 管理和控制电脑系统软硬件资源的软件叫作操作系统&#xff0c;操作系统是最基本、最重要的系统软件&#xff0c;由一组控制计算机系统并对计算机系统进行管理的程序组成&#xff0c;是用户与计算机硬件系统的接口&#xff0c;并为用…

VMware网络模式

一.VMware虚拟网络 VMware支持共创建20个虚拟网络&#xff0c;相当于现实生活的交换机&#xff0c;名称vmnet0---vmnet19 物理机用虚拟网卡和对应的虚拟网络中的虚拟机通信。 VMnet1和VMnet8这两个虚拟网卡的作用是保证windows和虚拟机可以正常通信。VMware Workstation Pro这…

python-读写Excel:xlwings库操作

几种操作Excel的python库对比 安装:pip install xlwings 目录 APP实例化对象 工作薄对象 创建工作薄 打开工作薄 工作薄属性 工作表对象 新增工作表 复制表 获取工作表对象 工作表属性 删除和清除表数据及表格式 工作表行高列宽(自动调整) 单元格对象 获取单元…

GPS北斗授时服务器(网络时钟系统)助力金融领域

GPS北斗授时服务器&#xff08;网络时钟系统&#xff09;助力金融领域 GPS北斗授时服务器&#xff08;网络时钟系统&#xff09;助力金融领域 摘 要:首先对计算机网络时间同步相关技术进行了介绍,然后阐述了时间同步技术在现代计算机网络中的应用与发展,最后指出时间同步网络在…

Effective Java 学习笔记--36-38条 枚举类型

目录 枚举之前--int常量 枚举类型 枚举类型的特性 自定义方法和域的设置 实例的统一行为 实例的不同行为 switch语句 抽象方法 公共接口 策略枚举 用实例域代替默认序数 枚举集合 EnumSet EnumMap 枚举类型用于定义一组固定的命名常量&#xff0c;在枚举类型中定…

秋冬春夏,纪念在CSDN的第365天

目录 时光 收获 工作 生活 憧憬 时光 再次收到创作纪念日的消息时&#xff0c;已在CSDN创作和度过了一年的时光。创作&#xff0c;成了自己的第二工作空间&#xff0c;成为了日常的一种习惯。 每当看到第1篇文章的提醒消息&#xff0c;都会想起当时创作的初衷和情景。是一…

在手机在线预览3D模型,是如何实现的?

在手机在线预览3D模型&#xff0c;主要依赖于几个关键技术和步骤来实现。以下是一个概括性的流程&#xff1a; 一、模型上传 选择平台&#xff1a;首先&#xff0c;用户需要选择一个支持3D模型在线预览的平台&#xff0c;如51建模网、Sketchfab等。这些平台通常提供用户友好的…

五分钟本地部署Uptime Kuma运维监控结合内网穿透实现远程访问

文章目录 前言**主要功能**一、前期准备本教程环境为&#xff1a;Centos7&#xff0c;可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务&#xff0c;如何安装Docker详见&#xff1a; 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址…

Kafka的生产者和消费者机制

目录 1.基础的客户端 1.1消息发送者的主流程 1.2消息消费者主流程 2.客户端工作机制 2.1消费者分组消费机制 2.2生产者拦截器机制 2.3消息序列化机制 2.4消息分区路由机制 2.5生产者消息缓存机制 2.6发送应答机制 2.7生产者消息幂等性 (1)生产者消息幂等性介绍 (2…

XDMA原理

目录 1. BAR Space Map2. PCIe to AXI Lite Master2.1. BAR Address to AXI Address 3. PCIe to DMA Bypass4. AXI4 Memory Mapped4.1. Register Space 5. AXI Lite Slave Configuration Interface6. MSI/MSI-X Interrupt6.1. Interrupts Configuration6.2. IRQ Module 7. IP E…