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++ 奇技淫巧(一些c语言的技巧)

    c/c++ 奇技淫巧(一些c语言的技巧) 1. 变量交换 有时我们需要交换两个变量的值,一般的做法是使用中间变量,但是有一个巧妙的方法可以不使用中间变量交换两个变量的值。 int a = 10, b = 5; a -= b; // a = 5 b += a; // b = 10 a = b – a; // a = 5 2. 求绝对值 结合位运算,可以使用以下…

    C 2023年5月23日
    00
  • C语言利用链表实现学生成绩管理系统

    C语言利用链表实现学生成绩管理系统的完整攻略分为以下几个步骤: 1. 设计数据结构 在设计链表之前,需要先设计数据结构来存储学生信息。通常会设计一个结构体,用来存储学生的姓名、学号、成绩等信息。例如: typedef struct Student { int num; // 学号 char name[MAXLEN]; // 姓名 int score; // …

    C 2023年5月23日
    00
  • C++实现教工考勤信息管理系统

    C++实现教工考勤信息管理系统完整攻略 系统说明 教工考勤信息管理系统是一个基于C++的控制台应用程序,用于管理教工的考勤信息。其主要功能包括:添加教工信息、查找教工信息、浏览教工信息、删除教工信息、按照考勤情况进行筛选等。 系统设计 系统结构 教工考勤信息管理系统采用面向对象的设计思想,其系统结构包含以下几个类: 教工类:用于存储教工的基本信息,包括姓名、…

    C 2023年5月23日
    00
  • C++实现学生信息管理系统(完整版)

    C++实现学生信息管理系统(完整版)攻略 准备工作 首先,在开始编写C++代码前,需要先配置好C++编译环境,比如Visual Studio或者Code::Blocks等等。 第二,我们需要了解一些基本的C++语法,比如变量、数据类型、函数等等。 实现步骤 步骤一:设计数据结构 在开始编写实现学生信息管理系统的程序之前,需要首先设计好数据结构。这里我们考虑使…

    C 2023年5月24日
    00
  • 详解iOS中多线程app开发的GCD队列的使用

    详解iOS中多线程app开发的GCD队列的使用攻略 什么是GCD队列? GCD(Grand Central Dispatch)是苹果公司提供的一套多线程解决方案,它可以用来实现iOS app中的并发操作。其中的“Dispatch”意味着将一个任务(也就是代码块)分配到某个线程上执行。一般情况下,GCD队列包含两种类型:串行队列和并发队列。 串行队列(Seri…

    C 2023年5月22日
    00
  • C语言链表实现简单图书管理系统

    C语言链表是一种常用的数据结构,通过链表可以实现一些比较复杂的数据管理系统。本篇攻略将讲解如何使用C语言链表实现一个简单的图书管理系统。整个系统的实现分为以下几步: 定义图书数据结构。在本例中,我们需要使用结构体来存储每一本图书的信息,如图书编号、图书名称、图书作者等。 struct Book { int id; char title[50]; char a…

    C 2023年5月23日
    00
  • 在c和c++中实现函数回调

    在C和C++中实现函数回调,需要用到函数指针;函数指针是将函数的入口地址存放在指针变量中,可以通过指针来间接调用函数。 以下是实现函数回调的步骤: 声明一个函数指针类型,以便后续能实现复用: c++typedef void(*CallbackFunction)(int); 上面的代码定义了一个函数指针类型CallbackFunction,该函数指针可以指向一…

    C 2023年5月23日
    00
  • 在Go语言程序中使用gojson来解析JSON格式文件

    要在Go语言程序中使用gojson解析JSON格式文件,你需要按照以下步骤操作: 步骤1 安装gojson工具 你需要先在计算机上安装gojson工具,可以通过以下命令安装: go get github.com/ChimeraCoder/gojson/gojson 步骤2 生成Go语言结构体 使用gojson工具,我们可以将JSON文件转换成Go语言结构体。…

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