【C++面向对象】C++餐厅点餐管理系统【独一无二】_基于c++的网上订餐系统-程序员宅基地

技术标签: c++  java  数据库  

请添加图片描述


博__主:米码收割机
技__能:C++/Python语言
公众号:测试开发自动化
荣__誉:阿里云博客专家博主、51CTO技术博主
专__注:专注主流机器人、人工智能等相关领域的开发、测试技术。


C++实现餐厅点餐管理系统(控制台程序)



1. 设计要求

使用c++编写一个餐厅点餐管理系统,主要功能如下:


1.1 主菜单

  1. 客户点餐功能
  2. 管理后台功能
  3. 退出系统功能

2.2 管理后台功能

  1. 添加菜品信息(名称、价格、数量)
  2. 删除菜品信息
  3. 查看菜品信息
  4. 修改菜品信息
  5. 客户订单信息
  6. 返回主菜单

2.3 客户点餐功能

  1. 显示菜品信息
  2. 提交菜品订单

2、运行结果


2.1 主菜单

源码关注【测试开发自动化】公众号,回复“餐厅点餐管理系统”获取。

在这里插入图片描述


2.2 添加菜品

在这里插入图片描述


2.3 查看菜品

源码关注【测试开发自动化】公众号,回复“餐厅点餐管理系统”获取。

在这里插入图片描述


2.4 删除菜品

在这里插入图片描述


2.5 修改菜品

在这里插入图片描述


2.6 返回主菜单

在这里插入图片描述


2.7 客户点餐

在这里插入图片描述


2.8 订单显示

源码关注【测试开发自动化】公众号,回复“餐厅点餐管理系统”获取。

在这里插入图片描述


3、代码设计

代码实现了一个简单的餐厅管理系统,包括客户点餐和管理后台两个模式。


3.1 添加菜品

addDish(): 用于向菜单中添加菜品。函数会提示用户输入菜品名称、价格和数量,并将菜品信息添加到menu(一个std::map对象)中。

void addDish() {
    
    std::string name;
    double price;
    int quantity;

    std::cout << "输入菜品名称: ";
    std::cin >> name;
    std::cout << "输入菜品价格: ";
    std::cin >> price;
    std::cout << "输入菜品数量: ";
    std::cin >> quantity;

    menu[name] = {
     name, price, quantity };
    std::cout << "菜品添加成功!" << std::endl;
}

3.2 删除菜品

deleteDish(): 用于从菜单中删除指定菜品。函数会提示用户输入要删除的菜品名称,然后在menu中查找并删除该菜品。

void deleteDish() {
    
    std::string name;
    std::cout << "输入要删除的菜品名称: ";
    std::cin >> name;

    menu.erase(name);
    std::cout << "菜品删除成功!" << std::endl;

}

3.3 显示菜品

viewDishes(): 显示当前菜单中的所有菜品及其价格和数量。遍历menu,输出每个菜品的信息。

void viewDishes() {
    
    for (auto& dish : menu) {
    
        std::cout << dish.second.name << " - ¥" << dish.second.price << " - 数量: " << dish.second.quantity << std::endl;
    }
}

3.4 主函数

main(): 程序的入口函数。根据用户选择的模式执行相应的操作。如果选择模式2(管理后台),则进入一个循环,允许用户选择添加菜品、删除菜品、查看菜品、修改菜品或查看订单等操作。如果选择模式1(客户点餐),则调用placeOrder()函数来进行点餐。如果选择模式3(退出),则程序结束。

int main() {
    
    int mode;

    while (true) {
    
        std::cout << "***********************************************" << std::endl;
        std::cout << "              欢迎使用餐厅管理系统" << std::endl;
        std::cout << "***********************************************" << std::endl;
        std::cout << "选择模式: \n1. 客户点餐 \n2. 管理后台 \n3. 退出" << std::endl;
        std::cout << "***********************************************" << std::endl;
        std::cout << "请输入模式:";

        std::cin >> mode;
        if (mode == 2) {
    
            int choice;
            while (true) {
    
                std::cout << "-----------------------------------------------" << std::endl;
                std::cout << "1. 添加菜品\n2. 删除菜品\n3. 查看菜品\n4. 修改菜品\n5. 查看订单\n6. 返回主菜单" << std::endl;
                std::cout << "-----------------------------------------------" << std::endl;

                std::cin >> choice;

                switch (choice) {
    
                case 1:
                    addDish();
                    break;
                case 2:
                    deleteDish();
                    break;
                case 3:
                    viewDishes();
                    break;
                case 4:
                    modifyDish();
                    break;
                case 5:
                    viewOrders();
                    break;
                case 6:
                    goto mainMenu;
                default:
                    std::cout << "无效选择." << std::endl;
                    break;
                }
            }
        }
        else if (mode == 1) {
    
            static int orderNumber = 1;
            placeOrder(orderNumber);
            orderNumber++;
        }
        else if (mode == 3) {
    
            return 0;
        }
        else {
    
            std::cout << "无效模式." << std::endl;
        }

    mainMenu:;
    }

    return 0;
}


四、总结

这段代码实现了一个餐厅管理系统,具有客户点餐和管理后台两种模式。通过使用std::map容器存储菜单和订单信息,代码实现了添加菜品、删除菜品、查看菜品、修改菜品、查看订单和客户点餐等功能。
代码的设计思路主要采用了面向过程的编程范式,将不同的功能封装为独立的函数,实现了模块化的设计。通过主循环和条件判断,代码能够根据用户的选择执行相应的操作,并通过输入和输出处理用户的数据和系统的信息。
尽管代码实现了基本的功能,但它仍然可以进一步改进。例如,可以采用面向对象的设计思路,引入类来表示菜品和订单,并使用更复杂的数据结构和算法来提高系统的性能和灵活性。此外,代码还可以考虑引入持久化数据存储的机制,将菜单和订单信息保存到文件或数据库中。

源码关注【测试开发自动化】公众号,回复“餐厅点餐管理系统”获取。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44244190/article/details/131574159

智能推荐

算法题:平均数为k的最长连续子数组-程序员宅基地

文章浏览阅读1k次。平均数为k的最长连续子数组_平均数为k的最长连续子数组

HMC使用手册_台达hmc07-n511h52使用手册-程序员宅基地

文章浏览阅读1k次。今天偶然间想起了之前发生的一次运行事件,在这次故障中,物理服务器宕机,远程终端无法救急。于是就需要用到HMC(硬件管理控制台)进行底层的操作,之前对于这个工具的使用确实不多,所以今天就特意在网上找了一篇关于HMC使用的手册,这里给大家分享一下,如果大家想要看网页原版,下面是网址:HMC使用手册..._台达hmc07-n511h52使用手册

设置定时任务的几种方式_制定定时任务的方法-程序员宅基地

文章浏览阅读471次。◦ 前言 ◦ 解决方案 普通线程sleep的方式实现定时任务 Timer实现定时任务 ScheduledExecutorService实现定时任务 Handler实现定时任务 AlarmManager实现精确定时操作前言项目中总是会因为各种需求添加各种定时任务,所以就打..._制定定时任务的方法

mysql支持的平台和操作系统_MySQL支持的操作系统列表_MySQL-程序员宅基地

文章浏览阅读461次。我们使用GNU Autoconf,因此将MySQL移植到所有使用Posix线程和C++编译器的现代系统是可能的。(要求服务器支持线程。如果只是编译客户端代码,则只需要C++编译器)。我们主要在Linux(SuSE和Red Hat)、FreeBSD和Sun Solaris(版本8和9)上使用并开发本软件。已经报告MySQL可以在下列操作系统/线程包的组合上成功地进行编译。注意,对于很多操作系统,原生..._mysql可以运行在哪些平台

MyEclipse下安装FatJar打包工具-程序员宅基地

文章浏览阅读112次。方法一:help > software updates > Find and install > add > add remote sitename:FatJarurl:http://kurucz-grafika.de/fatjar (这个是FatJarUpdateSite)填写name和url,之后要把fatjar那项打钩,接下来就一路Next吧。方法二:..._myeclipse2020 安装不了 fatjar 插件

STM32入门-GPIO端口的八种工作模式_gpio的8种工作模式-程序员宅基地

文章浏览阅读5.7w次,点赞428次,收藏2.2k次。新手必看,超讲解详细GPIO端口的八种工作模式_gpio的8种工作模式

随便推点

(深度学习)基于残差卷积——resnet的水稻病害识别_resnet152-程序员宅基地

文章浏览阅读1.6k次,点赞20次,收藏34次。利用残差卷积神经网络Resnet152实现水稻病害识别,附带数据集和预训练模型下载链接,代码框架可套用于其它分类任务。_resnet152

Esp8266 进阶之路34 【外设篇③】乐鑫esp8266 NONOS SDK 3.0编程使用 SPI 驱动基于Max7219芯片的八位数码管,显示日期信息。(附带Demo)_8266时钟代码 数码管-程序员宅基地

文章浏览阅读7k次,点赞5次,收藏28次。本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。 1、 Esp8266之 搭建开发环境,开始一个“hellow world”串口打印。 2、 Esp8266之 利用GPIO开始使用按钮点亮你的“第一盏灯”。 3、 Esp8266之 利用 "软件定时器 " 定时0.5秒闪烁点亮一盏LED。4 、Es..._8266时钟代码 数码管

2024年阿里云服务器地域选择方法_地域城市分布表-程序员宅基地

文章浏览阅读639次,点赞22次,收藏20次。阿里云服务器地域选择方法,如何选择速度更快、网络延迟更低的地域节点,地域指云服务器所在的地理位置区域,地域以城市划分,如北京、杭州、深圳及上海等,如何选择地域?建议根据用户所在地区就近选择地域,用户距离地域所在城市越近,网络延迟越低,速度越快。阿里云服务器网aliyunfuwuqi.com从速度延迟、备案限制、多产品内网互通、不同地域价格等四点因素来考虑地域的选择因素,可以在阿里云CLUB中心查看当前最新的云服务器优惠券和配置报价表。

【云驻共创】云原生应用架构之企业核心业务未来架构演进路线及华为云方案_基于云原生架构构建核心业务支撑系统应用试点研究-程序员宅基地

文章浏览阅读2.6w次,点赞4次,收藏9次。文章目录前言前言本文整理自华为云社区【内容共创】活动第14期。查看活动详情:https://bbs.huaweicloud.com/blogs/336904相关任务详情:任务16.企业核心业务未来架构演进路线及华为云方案_基于云原生架构构建核心业务支撑系统应用试点研究

实验十九、利用运算电路解方程_利用运算电路求解方程的方法研究-程序员宅基地

文章浏览阅读882次。运算电路求解一元二次方程_利用运算电路求解方程的方法研究

Vue3+ElementPlus 根据路由 自动创建二级菜单_vue 项目 element新增菜单下级页面-程序员宅基地

文章浏览阅读334次,点赞5次,收藏4次。本人分享一下这次字节跳动、美团、头条等大厂的面试真题涉及到的知识点,以及我个人的学习方法、学习路线等,当然也整理了一些学习文档资料出来是附赠给大家的。知识点涉及比较全面,包括但不限于前端基础,HTML,CSS,JavaScript,Vue,ES6,HTTP,浏览器,算法等等详细大厂面试题答案、学习笔记、学习视频等资料领取,点击资料领取直通车》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**_vue 项目 element新增菜单下级页面