C语言实现餐厅点餐系统

C语言实现餐厅点餐系统

1. 概述

餐厅点餐系统是一种常见的实用型软件系统。本文将讲解如何使用C语言实现一个基本的餐厅点餐系统,让读者全面掌握对C语言的应用和理解。

2. 系统功能划分

餐厅点餐系统需要完成以下功能:

  1. 清单功能:展示所有菜单清单的名称和价格。
  2. 下单功能:让用户输入要购买的菜单名称,并记录用户所选的菜单。
  3. 结账功能:展示用户所选的所有菜单清单,以及总价格。

为了实现以上功能,我们将采用结构体、函数和控制结构等C语言操作。

3. 代码实现

3.1 定义餐厅菜单结构体

结构体是C语言中非常重要的数据类型,它可以用来定义不同类型的数据。我们可以使用结构体定义餐厅的菜单,代码如下:

// 声明一个结构体类型 MenuItem
typedef struct MenuItem {
    char name[50];
    float price;
} MenuItem;

// 定义一个数组用于储存所有的菜单项
MenuItem menu[] = {
    {"烤肉饭", 35},
    {"鱼香肉丝", 25},
    {"回锅肉", 28},
    {"麻辣烫", 18},
    {"水煮鱼", 48},
    {"糖醋排骨", 30},
    {"宫保鸡丁", 22},
    {"炸鸡腿", 20}
};

3.2 实现菜单清单功能

我们可以通过循环结构来展示所有的菜单名称和价格。

void displayMenu() {
    printf("------菜单------\n");
    for (int i = 0; i < sizeof(menu) / sizeof(MenuItem); i++) {
        printf("%d. %s 价格: %.2f元\n", i + 1, menu[i].name, menu[i].price);
    }
}

3.3 实现下单功能

我们可以通过循环结构和 if 语句来判断用户输入的菜单名称是否有效。

void orderFood() {
    char name[50];
    printf("请输入您想要的菜品名称:");
    scanf("%s", name);

    int found = 0;
    for (int i = 0; i < sizeof(menu) / sizeof(MenuItem); i++) {
        if (strcmp(menu[i].name, name) == 0) {
            found = 1;
            printf("成功添加菜品 %s!\n", menu[i].name);
            break;
        }
    }
    if (!found) {
        printf("菜品 %s 不存在!\n", name);
    }
}

3.4 实现结账功能

我们通过定义一个结构体数组来记录用户所选的菜单,再根据用户的点单情况输出菜品清单和总价格。

typedef struct OrderItem {
    char name[50];
    float price;
} OrderItem;

OrderItem orders[10];
int orderCount = 0;

void checkBill() {
    float totalPrice = 0;
    if (orderCount == 0) {
        printf("您还没有点单!\n");
        return;
    }
    printf("您的点单清单如下:\n");
    for (int i = 0; i < orderCount; i++) {
        printf("%d. %s 价格: %.2f元\n", i + 1, orders[i].name, orders[i].price);
        totalPrice += orders[i].price;
    }
    printf("总价格: %.2f元\n", totalPrice);
}

4. 示例说明

4.1 示例一:操作菜单

int main() {
    displayMenu();
    orderFood();
    checkBill();
    return 0;
}

输出结果:

------菜单------
1. 烤肉饭 价格: 35.00元
2. 鱼香肉丝 价格: 25.00元
3. 回锅肉 价格: 28.00元
4. 麻辣烫 价格: 18.00元
5. 水煮鱼 价格: 48.00元
6. 糖醋排骨 价格: 30.00元
7. 宫保鸡丁 价格: 22.00元
8. 炸鸡腿 价格: 20.00元
请输入您想要的菜品名称:烤肉饭
成功添加菜品 烤肉饭!
您的点单清单如下:
1. 烤肉饭 价格: 35.00元
总价格: 35.00元

4.2 示例二:多次点单

int main() {
    displayMenu();
    printf("\n第一波点单:\n");
    orderFood();
    orderFood();
    checkBill();
    printf("\n第二波点单:\n");
    orderFood();
    orderFood();
    orderFood();
    checkBill();
    return 0;
}

输出结果:

------菜单------
1. 烤肉饭 价格: 35.00元
2. 鱼香肉丝 价格: 25.00元
3. 回锅肉 价格: 28.00元
4. 麻辣烫 价格: 18.00元
5. 水煮鱼 价格: 48.00元
6. 糖醋排骨 价格: 30.00元
7. 宫保鸡丁 价格: 22.00元
8. 炸鸡腿 价格: 20.00元

第一波点单:
请输入您想要的菜品名称:烤肉饭
成功添加菜品 烤肉饭!
请输入您想要的菜品名称:鱼香肉丝
成功添加菜品 鱼香肉丝!
您的点单清单如下:
1. 烤肉饭 价格: 35.00元
2. 鱼香肉丝 价格: 25.00元
总价格: 60.00元

第二波点单:
请输入您想要的菜品名称:回锅肉
成功添加菜品 回锅肉!
请输入您想要的菜品名称:水煮鱼
成功添加菜品 水煮鱼!
请输入您想要的菜品名称:麻辣烫
菜品 麻辣烫 不存在!
您的点单清单如下:
1. 烤肉饭 价格: 35.00元
2. 鱼香肉丝 价格: 25.00元
3. 回锅肉 价格: 28.00元
4. 水煮鱼 价格: 48.00元
总价格: 136.00元

以上就是C语言实现餐厅点餐系统的全部过程,希望可以帮助到读者对 C 语言的基本应用和理解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现餐厅点餐系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Linux多线程环境下 关于进程线程终止函数总结

    让我来为您分享一下“Linux多线程环境下 关于进程线程终止函数总结”的完整攻略。 标题 一、背景 对于在Linux系统下进行多线程编程的开发人员来说,进程线程的创建、终止函数是必须要掌握的知识点。本文主要总结了Linux中进程线程终止的相关函数,如何使用它们,并提供了两个示例说明,帮助读者更好的理解这些函数的使用方法。 二、进程线程终止函数总结 下面是Li…

    C 2023年5月22日
    00
  • QT5 Thread线程的具体实现

    下面是关于QT5 Thread线程的具体实现的完整攻略。 1. 基本概念 Qt 中的线程是通过 QThread 类实现的,它提供了多个函数来操作线程,其中比较常用的包括: start() :启动线程并执行 run() 函数; quit() :通知线程退出; wait() :等待线程退出; terminate() :强制终止线程。 为了自定义线程类,我们需要继…

    C 2023年5月22日
    00
  • 详解C++11中的lambda匿名函数

    关于“详解C++11中的lambda匿名函数”的完整攻略,我将分以下几个方面展开: 一、什么是lambda表达式? lambda表达式是C++11标准中引入的新特性,它是一个匿名函数,可以在需要函数的地方直接定义函数并执行。 通常情况下,函数都需要在定义后才能被调用,而lambda表达式可以直接定义后立即执行。它非常方便,在一些场景下(如STL算法、函数式编…

    C 2023年5月23日
    00
  • 详解Matlab如何绘制小提琴图

    让我给大家详细讲解一下“详解Matlab如何绘制小提琴图”的完整攻略。在此之前,请确保你已经安装了Matlab软件。 首先,我们需要了解什么是小提琴图。小提琴图(Violin Plot)是一种可视化方式,它能够同时显示数据的分布情况和概率密度。小提琴图可以展示出不同数据之间的差异,同时还能显示出数据的整体分布情况和密度。接下来,我将详细介绍如何使用Matla…

    C 2023年5月23日
    00
  • C语言接口与实现方法实例详解

    C语言接口与实现方法实例详解 什么是C语言接口? C语言接口是指从一个函数/模块/库/程序到另一个函数/模块/库/程序的连接方法。C语言接口可以简化代码的复杂程度,提高代码的可重用性和可维护性。 C语言接口的实现方法 C语言接口一般分为两个部分:接口定义及接口实现。接口定义一般包含函数签名(函数名及其参数类型),而接口实现包含实现该接口函数的代码。 接口定义…

    C 2023年5月23日
    00
  • C++11中跳转initializer_list实现分析

    C++11中跳转initializer_list实现分析 简介 在 C++11 标准之前,C++ 中只有 C 风格的可变参数传递,而在 C++11 中加入了新的 initializer_list 类型,从而实现了更加方便和安全的可变参数列表传递。initializer_list 可以看作是一个轻量级的容器,只能存放相同类型的变量,支持动态数组大小的初始化,并…

    C 2023年5月23日
    00
  • 在C语言中向链接列表添加节点

    下面是在C语言中向链接列表添加节点的完整使用攻略。 什么是链接列表 链接列表(Linked List)是由多个节点组成的数据结构,每个节点包含一个数据元素和指向下一个节点的指针。 链接列表的优点是可以高效地插入和删除节点,而且不需要预先知道列表的大小。但缺点是访问任意一个节点的时间复杂度为O(n),不如数组高效。 如何向链接列表添加节点 首先,我们需要定义节…

    C 2023年5月9日
    00
  • Arduino控制舵机详解 附代码

    针对这个话题,完整的攻略包含以下几个方面的内容: 标题 需要为文章选择一些明确简洁的标题。该标题应清楚地说明文章主题以及文章具体内容。 概述 在攻略的开头部分,需要对文章做一些简要介绍。这应包括有关文章主题的背景信息以及可能对读者有用的任何上下文信息。 在介绍该话题时可以先讲解一下:Arduino介绍,舵机介绍,这样更容易为读者提供更细致的指导。 前置知识 …

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部