C++课设:智能优惠快餐点餐系统

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
专栏介绍:《编程项目实战》

目录

    • 一、项目介绍与亮点功能
      • 1. 项目背景
      • 2.完整代码
      • 3. 核心功能亮点
    • 二、面向对象设计架构解析
      • 1. 类设计思路
      • 2. 系统架构可视化
      • 3. 封装性体现
    • 三、核心功能实现详解
      • 1. 点餐流程可视化
      • 2. 智能点餐逻辑
      • 3. 订单编号生成机制
      • 3. 订单编号生成机制
      • 4. 菜单分类展示
    • 四、智能优惠系统设计
      • 1. 算法工作原理可视化
      • 2. 多重优惠策略
      • 3. 优惠计算算法
    • 五、程序运行演示与测试
      • 1. 主界面展示
      • 2. 点餐流程演示
      • 3. 优惠效果展示
    • 六、总结与学习拓展

本文将从零开始构建一个功能完整的C++快餐点餐系统,深入学习面向对象编程的精髓。通过实际项目开发,掌握类设计封装继承等核心概念,打造一个支持智能点餐、自动优惠、订单管理的实用系统。

一、项目介绍与亮点功能

1. 项目背景

在快餐行业数字化转型的大潮中,点餐系统已成为提升用户体验和运营效率的关键工具。我们将使用C++面向对象编程思想,构建一个功能丰富的快餐点餐系统,让初学者在实战中深入理解面向对象设计模式

2.完整代码

#include <iostream>
#include <vector>
#include <string>
#include <iomanip>
#include <ctime>
#include <sstream>using namespace std;// 菜品类
class MenuItem {
public:int id;string name;double price;string category;MenuItem(int _id, string _name, double _price, string _category) : id(_id), name(_name), price(_price), category(_category) {}
};// 订单项类
class OrderItem {
public:MenuItem item;int quantity;double subtotal;OrderItem(MenuItem _item, int _quantity) : item(_item), quantity(_quantity) {subtotal = item.price * quantity;}
};// 订单类
class Order {
public:string orderNumber;vector<OrderItem> items;double totalAmount;double discount;double finalAmount;string orderTime;Order() {generateOrderNumber();generateOrderTime();totalAmount = 0.0;discount = 0.0;finalAmount = 0.0;}void addItem(MenuItem item, int quantity) {// 检查是否已存在该商品,如果存在则增加数量for(int i = 0; i < items.size(); i++) {if(items[i].item.id == item.id) {items[i].quantity += quantity;items[i].subtotal = items[i].item.price * items[i].quantity;calculateTotal();return;}}// 如果不存在,添加新的订单项items.push_back(OrderItem(item, quantity));calculateTotal();}void calculateTotal() {totalAmount = 0.0;for(int i = 0; i < items.size(); i++) {totalAmount += items[i].subtotal;}// 计算优惠calculateDiscount();finalAmount = totalAmount - discount;}void calculateDiscount() {discount = 0.0;// 满额优惠:满100减10,满200减25,满300减40if(totalAmount >= 300) {discount = 40.0;} else if(totalAmount >= 200) {discount = 25.0;} else if(totalAmount >= 100) {discount = 10.0;}// 数量优惠:单品数量>=5打9折for(int i = 0; i < items.size(); i++) {if(items[i].quantity >= 5) {double itemDiscount = items[i].subtotal * 0.1;if(itemDiscount > discount) {discount = itemDiscount;}}}}private:void generateOrderNumber() {time_t now = time(0);stringstream ss;ss << "ORD" << now % 100000;orderNumber = ss.str();}void generateOrderTime() {time_t now = time(0);char* timeStr = ctime(&now);orderTime = string(timeStr);// 移除换行符if(!orderTime.empty() && orderTime[orderTime.length()-1] == '\n') {orderTime.erase(orderTime.length()-1);}}
};// 点餐系统类
class OrderSystem {
private:vector<MenuItem> menu;vector<Order> orders;public:OrderSystem() {initializeMenu();}void initializeMenu() {// 汉堡类menu.push_back(MenuItem(1, "经典汉堡", 25.0, "汉堡"));menu.push_back(MenuItem(2, "鸡肉汉堡", 28.0, "汉堡"));menu.push_back(MenuItem(3, "牛肉汉堡", 32.0, "汉堡"));menu.push_back(MenuItem(4, "培根汉堡", 35.0, "汉堡"));// 小食类menu.push_back(MenuItem(5, "薯条(小)", 12.0, "小食"));menu.push_back(MenuItem(6, "薯条(大)", 18.0, "小食"));menu.push_back(MenuItem(7, "鸡块(6块)", 20.0, "小食"));menu.push_back(MenuItem(8, "洋葱圈", 15.0, "小食"));// 饮品类menu.push_back(MenuItem(9, "可乐(中)", 8.0, "饮品"));menu.push_back(MenuItem(10, "可乐(大)", 12.0, "饮品"));menu.push_back(MenuItem(11, "橙汁", 10.0, "饮品"));menu.push_back(MenuItem(12, "咖啡", 15.0, "饮品"));}void showMenu() {cout << "\n" << string(60, '=') << endl;cout << "                    快餐店菜单" << endl;cout << string(60, '=') << endl;string currentCategory = "";for(int i = 0; i < menu.size(); i++) {if(menu[i].category != currentCategory) {currentCategory = menu[i].category;cout << "\n【" << currentCategory << "】" << endl;cout << string(30, '-') << endl;}cout << setw(2) << menu[i].id << ". " << setw(15) << left << menu[i].name << "¥" << fixed << setprecision(2) << menu[i].price << endl;}cout << string(60, '=') << endl;}MenuItem* findMenuItem(int id) {for(int i = 0; i < menu.size(); i++) {if(menu[i].id == id) {return &menu[i];}}return NULL;}void takeOrder() {Order newOrder;int choice, quantity;char continueOrder;cout << "\n开始新订单..." << endl;cout << "订单编号: " << newOrder.orderNumber << endl;do {showMenu();cout << "\n请选择商品编号 (1-" << menu.size() << "): ";cin >> choice;MenuItem* item = findMenuItem(choice);if(item == NULL) {cout << "无效的商品编号,请重新选择!" << endl;continue;}cout << "请输入数量: ";cin >> quantity;if(quantity <= 0) {cout << "数量必须大于0!" << endl;continue;}newOrder.addItem(*item, quantity);cout << "已添加: " << item->name << " x" << quantity << endl;cout << "是否继续点餐?(y/n): ";cin >> continueOrder;} while(continueOrder == 'y' || continueOrder == 'Y');if(!newOrder.items.empty()) {orders.push_back(newOrder);cout << "\n订单创建成功!" << endl;showOrderSummary(newOrder);} else {cout << "订单为空,已取消。" << endl;}}void showOrderSummary(const Order& order) {cout << "\n" << string(50, '=') << endl;cout << "                订单汇总" << endl;cout << string(50, '=') << endl;cout << "订单编号: " << order.orderNumber << endl;cout << "下单时间: " << order.orderTime << endl;cout << string(50, '-') << endl;for(int i = 0; i < order.items.size(); i++) {const OrderItem& item = order.items[i];cout << setw(15) << left << item.item.name << "x" << setw(2) << item.quantity << "  ¥" << fixed << setprecision(2) << item.subtotal << endl;}cout << string(50, '-') << endl;cout << setw(20) << right << "小计: ¥" << order.totalAmount << endl;if(order.discount > 0) {cout << setw(20) << right << "优惠: -¥" << order.discount << endl;}cout << setw(20) << right << "总计: ¥" << order.finalAmount << endl;cout << string(50, '=') << endl;}void showAllOrders() {if(orders.empty()) {cout << "\n暂无订单记录。" << endl;return;}cout << "\n" << string(80, '=') << endl;cout << "                        所有订单" << endl;cout << string(80, '=') << endl;for(int i = 0; i < orders.size(); i++) {cout << "订单 " << (i+1) << ":" << endl;showOrderSummary(orders[i]);cout << endl;}}void showDiscountRules() {cout << "\n" << string(50, '=') << endl;cout << "                优惠政策" << endl;cout << string(50, '=') << endl;cout << "1. 满额优惠:" << endl;cout << "   - 满100元减10元" << endl;cout << "   - 满200元减25元" << endl;cout << "   - 满300元减40元" << endl;cout << "\n2. 数量优惠:" << endl;cout << "   - 单品数量≥5个,享受9折优惠" << endl;cout << "\n注:优惠不可叠加,系统自动选择最优惠方案" << endl;cout << string(50, '=') << endl;}void showStatistics() {if(orders.empty()) {cout << "\n暂无统计数据。" << endl;return;}double totalSales = 0.0;double totalDiscount = 0.0;int totalItems = 0;for(int i = 0; i < orders.size(); i++) {totalSales += orders[i].finalAmount;totalDiscount += orders[i].discount;totalItems += orders[i].items.size();}cout << "\n" << string(40, '=') << endl;cout << "           营业统计" << endl;cout << string(40, '=') << endl;cout << "总订单数: " << orders.size() << "单" << endl;cout << "总销售额: ¥" << fixed << setprecision(2) << totalSales << endl;cout << "总优惠额: ¥" << totalDiscount << endl;cout << "平均客单价: ¥" << totalSales / orders.size() << endl;cout << string(40, '=') << endl;}void run() {int choice;cout << "欢迎使用快餐点餐系统!" << endl;while(true) {cout << "\n" << string(40, '=') << endl;cout << "            主菜单" << endl;cout << string(40, '=') << endl;cout << "1. 查看菜单" << endl;cout << "2. 开始点餐" << endl;cout << "3. 查看所有订单" << endl;cout << "4. 查看优惠政策" << endl;cout << "5. 营业统计" << endl;cout << "0. 退出系统" << endl;cout << string(40, '=') << endl;cout << "请选择: ";cin >> choice;switch(choice) {case 1:showMenu();break;case 2:takeOrder();break;case 3:showAllOrders();break;case 4:showDiscountRules();break;case 5:showStatistics();break;case 0:cout << "\n感谢使用快餐点餐系统,再见!" << endl;return;default:cout << "无效选择,请重新输入!" << endl;break;}}}
};int main() {// 设置控制台输出格式cout << fixed << setprecision(2);OrderSystem system;system.run();return 0;
}

3. 核心功能亮点

🎯 基础功能

  • 分类菜单展示:汉堡、小食、饮品三大类,界面美观清晰
  • 智能点餐流程:支持选择商品、设定数量,自动合并相同商品
  • 实时价格计算:动态计算小计、优惠、总价
  • 精美账单打印:详细订单汇总,包含时间戳和唯一编号

🚀 进阶功能

  • 多订单管理系统:支持并发处理多份订单,历史记录完整保存
  • 智能优惠算法:满额立减 + 数量折扣,系统自动择优
  • 数据统计分析:营业统计、客单价分析、优惠效果评估

二、面向对象设计架构解析

1. 类设计思路

根据面向对象的三大特征:封装、继承、多态,我们将系统设计为四个核心类:

// 核心类设计架构
class MenuItem {     // 菜品类 - 封装商品属性int id;string name;double price;string category;
};class OrderItem {    // 订单项类 - 封装单个商品订购信息MenuItem item;int quantity;double subtotal;
};class Order {        // 订单类 - 封装整个订单逻辑vector<OrderItem> items;double totalAmount;string orderNumber;
};class OrderSystem {  // 点餐系统类 - 封装业务逻辑vector<MenuItem> menu;vector<Order> orders;
};

2. 系统架构可视化

下图展示了四个核心类之间的关系和协作模式:

在这里插入图片描述

3. 封装性体现

每个类都严格遵循数据封装原则:

  • 私有数据成员:隐藏内部实现细节
  • 公有接口方法:提供标准化的数据访问方式
  • 职责单一原则:每个类只负责自己领域的业务逻辑
class Order {
private:void generateOrderNumber();    // 私有方法:生成订单号void generateOrderTime();      // 私有方法:生成时间戳public:void addItem(MenuItem item, int quantity);  // 公有接口:添加商品void calculateTotal();                      // 公有接口:计算总价
};

三、核心功能实现详解

1. 点餐流程可视化

下图详细展示了用户从查看菜单到完成订单的完整流程:

在这里插入图片描述

2. 智能点餐逻辑

商品合并算法:当用户重复点同一商品时,系统会自动合并数量而非创建重复记录

void Order::addItem(MenuItem item, int quantity) {// 遍历已有商品,检查是否存在for(int i = 0; i < items.size(); i++) {if(items[i].item.id == item.id) {items[i].quantity += quantity;        // 增加数量items[i].subtotal = items[i].item.price * items[i].quantity;calculateTotal();                     // 重新计算总价return;}}// 如果是新商品,直接添加items.push_back(OrderItem(item, quantity));calculateTotal();
}

3. 订单编号生成机制

3. 订单编号生成机制

void Order::generateOrderNumber() {time_t now = time(0);stringstream ss;ss << "ORD" << now % 100000;    // 基于时间戳生成唯一编号orderNumber = ss.str();
}

4. 菜单分类展示

系统采用动态分类显示方式,根据商品类别自动分组:

void OrderSystem::showMenu() {string currentCategory = "";for(int i = 0; i < menu.size(); i++) {if(menu[i].category != currentCategory) {currentCategory = menu[i].category;cout << "\n【" << currentCategory << "】" << endl;}cout << menu[i].id << ". " << menu[i].name << " ¥" << menu[i].price << endl;}
}

四、智能优惠系统设计

1. 算法工作原理可视化

下图详细展示了智能优惠算法的完整工作流程:

在这里插入图片描述

2. 多重优惠策略

系统实现了双重优惠机制,自动为用户选择最优方案:

满额立减优惠

  • 满100元减10元
  • 满200元减25元
  • 满300元减40元

数量折扣优惠

  • 单品数量≥5个,享受9折优惠

3. 优惠计算算法

void Order::calculateDiscount() {discount = 0.0;// 策略1:满额优惠if(totalAmount >= 300) {discount = 40.0;} else if(totalAmount >= 200) {discount = 25.0;} else if(totalAmount >= 100) {discount = 10.0;}// 策略2:数量优惠(择优选择)for(int i = 0; i < items.size(); i++) {if(items[i].quantity >= 5) {double itemDiscount = items[i].subtotal * 0.1;if(itemDiscount > discount) {discount = itemDiscount;    // 选择更优惠的方案}}}
}

五、程序运行演示与测试

1. 主界面展示

========================================主菜单
========================================
1. 查看菜单
2. 开始点餐
3. 查看所有订单
4. 查看优惠政策
5. 营业统计
0. 退出系统
========================================

在这里插入图片描述

2. 点餐流程演示

步骤1:选择商品

============================================================快餐店菜单
============================================================【汉堡】
------------------------------
1 . 经典汉堡       ¥25.00
2 . 鸡肉汉堡       ¥28.00
3 . 牛肉汉堡       ¥32.00
4 . 培根汉堡       ¥35.00【小食】
------------------------------
5 . 薯条(小)       ¥12.00
6 . 薯条(大)       ¥18.00
7 . 鸡块(6块)      ¥20.00
8 . 洋葱圈         ¥15.00【饮品】
------------------------------
9 . 可乐(中)       ¥8.00
10. 可乐(大)       ¥12.00
11. 橙汁           ¥10.00
12. 咖啡           ¥15.00
============================================================请选择商品编号: 1
请输入数量: 2

在这里插入图片描述

步骤2:订单汇总

==================================================订单汇总
==================================================
订单编号: ORD87432
下单时间: Thu Jun 05 14:30:25 2025
--------------------------------------------------
经典汉堡        x2   ¥50.00
--------------------------------------------------小计: ¥50.00总计: ¥50.00
==================================================

在这里插入图片描述

3. 优惠效果展示

当订单满足优惠条件时:

--------------------------------------------------小计: ¥120.00优惠: -¥10.00总计: ¥110.00
--------------------------------------------------

在这里插入图片描述

六、总结与学习拓展

通过本项目的开发,我们深入实践了:

面向对象核心概念

  • 封装:将数据和方法包装在类中,隐藏实现细节
  • 抽象:通过类的设计,将现实世界的概念映射到代码中
  • 模块化设计:每个类承担明确的职责,便于维护和扩展

C++编程技巧

  • vector容器的灵活使用
  • 字符串流stringstream的格式化输出
  • 时间处理函数time()的实际应用
  • 输出格式控制setw()setprecision()的美化效果

这个快餐点餐系统不仅是一个实用的小项目,更是面向对象编程的绝佳实践案例。通过亲自动手实现,你将对C++的类设计对象交互数据封装等核心概念有更深刻的理解。

优秀的程序员不是天生的,而是通过一个个项目历练出来的。从这个点餐系统开始,踏上你的C++进阶之路吧! 🚀

📝 关注我:更多C++实战项目和编程技巧,请关注我的CSDN博客,一起在代码的海洋中探索前行!

创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)

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

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

相关文章

PHP的namespace

文章目录 环境Java的packagepackage关键字包结构和目录结构访问权限import关键字总结 PHP的namespacenamespace关键字在同一个文件里使用资源限定&#xff0c;完全限定&#xff0c;非限定限定完全限定非限定 use关键字use VS 直接指定资源在不同的文件里使用总结 环境 Windows…

矩阵分解相关知识点总结(二)

文章目录 三、矩阵的QR分解3.1、Givens矩阵与Givens变换3.2、Householder矩阵与Householder变换3.3、QR分解 书接上文矩阵分解相关知识点总结&#xff08;一&#xff09; 三、矩阵的QR分解 3.1、Givens矩阵与Givens变换 设非零列向量 x ∈ R n \bm{x}\in {\bf{R}}^n x∈Rn及单…

Chorme如何对于youtube视频进行画中画背景播放?

画中画可以让你小窗播放&#xff0c;然后浏览器放后台还可以做点别的事情。 B站直接可以选择小窗播放&#xff0c;游览器最小化就可以&#xff0c;但是youtube的小窗播放游览器一切换就不显示了。 其实是因为youtube的小窗播放不是真的小窗播放。要想真的实现需要在youtube视…

14.AI搭建preparationのBERT预训练模型进行文本分类

一、回顾&#xff1a; 对深度学习框架Python2.0进行自然语言处理有了一个基础性的认识注意力模型编码器(encoder_layer,用于分类的全连接层dense_layer)&#xff0c;抛弃了传统的循环神经网络和卷积神经网络&#xff0c;通过注意力模型将任意位置的两个单词的距离转换成1编码器…

OD 算法题 B卷【最长公共前缀】

文章目录 最长公共前缀 最长公共前缀 编写一个函数来查找字符串数组 中的最长公共前缀&#xff0c;如果不存在公共前缀&#xff0c;返回字符串’Zero’字符串长度范围【2,1000】&#xff0c;字符串中字符长度范围为【1,126】 示例1 输入&#xff1a; [“flower”, “flow”, …

pycharm F2 修改文件名 修改快捷键

菜单&#xff1a;File-> Setting&#xff0c; Keymap中搜索 Rename&#xff0c; 其中&#xff0c;有 Refactor-> Rename&#xff0c;右键添加快捷键&#xff0c;F2&#xff0c;删除原有快捷键就可以了。

WEB安全--SQL注入--bypass技巧2

继之前文章的补充&#xff1a; WEB安全--SQL注入--bypass技巧_sql注入过滤空格-CSDN博客 Q1&#xff1a;发现sql注入的时间盲注时&#xff0c;如果时间盲注的函数都被过滤了&#xff0c;怎么办&#xff1f; 除了找其他函数替换、编码等方式&#xff0c;还有以下方式绕过&…

自定义事件wpf

// 自定义控件 public class MyCustomControl : Control { public static readonly RoutedEvent MyCustomEvent EventManager.RegisterRoutedEvent( "MyCustom", RoutingStrategy.Bubbling, typeof(RoutedEventHandler), typeof(MyCustomControl) ); public event R…

【汇编逆向系列】一、无参数的函数调用- RSP,EAX寄存器,全局变量,INT类型和MOV,INC,SHL指令

给出一段简单的汇编 no_params_function:0000000000000000: 40 57 push rdi0000000000000002: 8B 05 00 00 00 00 mov eax,dword ptr [global_counter]0000000000000008: FF C0 inc eax000000000000000A: 89 05 00 00 00 0…

知识蒸馏:从模型输出到深层理解

1. 概念阐释: 还记得上次说的“老师教你画画,不只教‘猫’,还教‘像狗像树叶’的细微感觉”吗?那是最初的蒸馏。 后来大家发现,老师不仅仅通过“最后画出来像什么”来教你。 有时候,老师是教你“他画画时,哪里用了力气,哪里画得特别认真”(这叫基于特征的蒸馏,学习…

vue-18(使用 Vuex 插件实现高级功能)

使用 Vuex 插件实现高级功能 Vuex 插件提供了一种强大的方式来扩展 Vuex 存储的功能。它们为存储的变更过程提供了钩子&#xff0c;允许你拦截变更、执行副作用以及添加自定义逻辑。本章将探讨如何利用 Vuex 插件实现持久化、日志记录和时间旅行调试等高级功能。我们将深入研究…

【Java】CopyOnWriteArrayList

一&#xff0c;概述 CopyOnWriteArrayList作为List接口的实现之一&#xff0c;它区分于ArrayList在于它是线程安全的。如它名字一样&#xff0c;所有的写操作均复制了原数组的值&#xff0c;虽说代价较大&#xff0c;但读多写少的环境下&#xff0c;是可接受的。笔者在此简单看…

【高等数学】函数项级数

目录 函数项级数收敛域的定义收敛域的判定方法常见幂级数展开&#xff08;麦克劳林级数&#xff09;幂级数的应用 傅里叶级数傅里叶级数的基本概念傅里叶级数的主要性质奇偶函数的简化周期延拓奇延拓偶延拓 函数项级数 函数项级数是指由一系列函数构成的无穷级数&#xff0c;形…

基于cornerstone3D的dicom影像浏览器 第二十八章 LabelTool文字标记,L标记,R标记及标记样式设置

文章目录 前言一、L标记、R标记二、修改工具样式1. 样式的四种级别2. 导入annotation3. 示例1 - 修改toolGroup中的样式4. 示例2 - 修改viewport中的样式 三、可配置样式 前言 cornerstone3D 中的文字标记工具LabelTool&#xff0c;在添加文字标记时会弹出对话框让用户输入文字…

PPT转图片拼贴工具 v4.3

软件介绍 这个软件就是将PPT文件转换为图片并且拼接起来。 效果展示 支持导入文件和支持导入文件夹&#xff0c;也支持手动输入文件/文件夹路径 软件界面 这一次提供了源码和开箱即用版本&#xff0c;exe就是直接用就可以了。 软件源码 import os import re import sys …

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…

神经网络-Day45

目录 一、tensorboard的基本操作1.1 发展历史1.2 tensorboard的原理 二、tensorboard实战2.1 cifar-10 MLP实战2.2 cifar-10 CNN实战 在神经网络训练中&#xff0c;为了帮助理解&#xff0c;借用了很多的组件&#xff0c;比如训练进度条、可视化的loss下降曲线、权重分布图&…

设计模式之单例模式(二): 心得体会

设计模式之单例模式(一)-CSDN博客 目录 1.背景 2.分析 2.1.违背面向对象设计原则&#xff0c;导致职责混乱 2.2.全局状态泛滥&#xff0c;引发依赖与耦合灾难 2.3.多线程场景下风险放大&#xff0c;性能与稳定性受损 2.4.测试与维护难度指数级上升 2.5.违背 “最小知识原…

windows10 php报错

参考这个&#xff0c; 实际解决了问题&#xff0c; 主要是repair c 然后重启 【BUG】PHP Warning: ‘C:\\WINDOWS\\SYSTEM32\\VCRUNTIME140.dll‘ 14.0 is not compatible with this PHP bu_php warning: vcruntime140.dll 14.0 is not compat-CSDN博客

GPU显存的作用和如何选择

核心定义与作用 首先&#xff0c;显存的全称是显示内存&#xff0c;英文是Video RAM或VRAM&#xff0c;是显卡上的专用内存。 显存的主要作用是用来存储图形处理单元&#xff08;GPU&#xff09;需要处理的数据&#xff0c;比如纹理、顶点数据、帧缓冲区等。 数据中转站 GPU…