当前位置: 首页 > news >正文

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语句进行处理。
如果用户选择退出,程序会感谢用户的使用,并退出程序。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • UGUI空白可点击组件,减少重绘
  • OpenLayers3, 设置地图背景
  • Word中设置奇数页的页眉为一级标题内容;偶数页的页眉为文章题目
  • HTML 总结
  • 质量技术AI提效专题分享-得物技术沙龙
  • 基于Leaflet Legend的图例数据筛选实践-以某市教培时空分布为例
  • Git相关指令
  • 37次8.27(docker03)
  • Linux下编译安装PETSc
  • 【生命之树】
  • GLM大模型 - CogVideoX:5B 开源,2B 转为 Apache 协议
  • nginx实验
  • C++ 多线程(互斥锁、条件变量)
  • SQL server 2008 获取当前年,季度 和月的最后一天
  • 游戏开发设计模式之装饰模式
  • [PHP内核探索]PHP中的哈希表
  • 【译】JS基础算法脚本:字符串结尾
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • Java知识点总结(JavaIO-打印流)
  • LintCode 31. partitionArray 数组划分
  • oschina
  • Protobuf3语言指南
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • 前端攻城师
  • 人脸识别最新开发经验demo
  • 如何编写一个可升级的智能合约
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (TOJ2804)Even? Odd?
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (四)Linux Shell编程——输入输出重定向
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)插入排序
  • (转)VC++中ondraw在什么时候调用的
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .bashrc在哪里,alias妙用
  • .gitignore文件—git忽略文件
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 某和OA办公系统全局绕过漏洞分析
  • .NET和.COM和.CN域名区别
  • .NET框架
  • ??javascript里的变量问题
  • @FeignClient注解,fallback和fallbackFactory