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日

相关文章

  • C/C++中extern “C” 的作用分析

    当C++代码需要与C代码进行链接时,由于C++编译器经过了重载和命名改编等操作,因此函数名、变量名等有时需要进行改变,此时如果C++代码直接链接C代码,则可能会发生链接错误。为了解决这个问题,C++提供了extern “C”语法来解决此类问题。 一、extern “C”语法介绍 extern “C”是C++中用于链接C代码的一种机制。当代码被extern “…

    C 2023年5月23日
    00
  • 详解Java的Exception异常机制

    详解Java的Exception异常机制 异常类型 在Java中,异常通常分为三种类型:- 检查性异常(Checked Exception):必需在代码中显式地进行捕获处理,否则编译器会报错,例如IOException、SQLException等。- 运行时异常(Unchecked Exception):在代码的运行过程中可能产生的异常情况,通常指的是程序逻…

    C 2023年5月23日
    00
  • 一篇文章带你实现C语言中常用库函数的模拟

    一篇文章带你实现C语言中常用库函数的模拟 在学习C语言的过程中,我们经常会用到一些常用的库函数,比如字符串处理函数strlen()、内存处理函数memcpy()等等。这些库函数能够方便地完成一些操作,但我们有时候需要自己手动实现这些函数,以便更好地理解它们的原理和实现方法。本文将带你实现C语言中常用库函数的模拟。 1. strlen() 功能描述 strle…

    C 2023年5月23日
    00
  • C语言打印各种图案实例代码

    下面是详细的“C语言打印各种图案实例代码”的攻略。 1. 程序基本框架 首先我们需要定义一个函数,用于打印图案。函数的返回值为void,函数名为printPattern,传入两个参数,分别是打印的行数和列数。函数内部使用循环语句打印出需求的图案。在主函数中调用printPattern函数,传入相应的行数和列数。 示例代码如下: #include <st…

    C 2023年5月24日
    00
  • C语言 指针综合解析

    C语言指针综合解析攻略 什么是指针 指针是C语言中一个重要的概念,它可以让我们间接地访问和修改内存中的数据。 指针实际上是一个地址,这个地址是指向内存中一个特定的位置,它可以让我们对该位置的数据进行各种操作。 如何定义指针 在C语言中定义指针需要使用星号符号 *,这个符号在定义指针时放在变量名前面,例如: int *p; 上面的代码定义了一个指向 int 类…

    C 2023年5月23日
    00
  • C++使用easyx画实时走动的钟表

    C++是一种强大的编程语言,而easyx是一款很棒的图形库,可用于制作各种有趣的图形化应用程序。本文将为大家介绍如何使用C++和easyx画实时走动的钟表。 步骤一:准备工作 在开始之前,需要下载easyx图形库并安装。easyx官方网站提供了最新的安装程序,实际上安装很简单,只需双击运行安装程序即可完成安装。安装后,在Visual Studio中创建一个空…

    C 2023年5月23日
    00
  • 解析C++中的字符串处理函数和指针

    解析C++中的字符串处理函数和指针 在C++中,字符串(String)是一种常见的数据类型。在使用字符串时,我们常常需要进行一些处理,例如拼接字符串、查找字符、截取子串等。此时,就需要用到字符串处理函数和指针。以下是详细的解析攻略。 字符串处理函数 在C++中,有一些常用的字符串处理函数,下面来一一介绍。 strlen strlen 函数用于计算字符串的长度…

    C 2023年5月23日
    00
  • 解析C++ 浮点数的格式化输出

    解析C++浮点数的格式化输出主要有三个方面的内容: 格式化字符串的控制符 浮点数输出的精度控制 浮点数的取值范围 下面我就分别给出详细的讲解。 1. 格式化字符串的控制符 C++中常用的输出控制符有以下几种: 控制符 功能 %d 以十进制整数形式输出 %c 以字符形式输出 %s 以字符串形式输出 %f 以浮点数形式输出 %o 以八进制整数形式输出 %x 以十…

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