C语言实现简易订餐系统

C语言实现简易订餐系统

介绍

本文将详细讲解如何使用C语言实现简易订餐系统的完整攻略。这个简易订餐系统可以让用户选择菜单,订餐,结算和显示账单等功能。

步骤

步骤一:规划程序结构

在实现程序之前,我们可以先规划程序的整体架构,以此确定程序需要实现的功能和模块。我们大致可以将程序分成以下模块:

  1. 菜单模块:展示可选菜品列表。
  2. 点餐模块:让用户选择菜品和数量。
  3. 结算模块:计算总价并展示账单。
  4. 主程序模块:管理以上所有的模块。

经过以上规划,我们就可以着手实现各个模块了。

步骤二:实现菜单模块

让我们先来实现菜单模块。在这个模块中,我们需要展示一个菜单列表,并让用户选择菜品编号。我们可以使用以下代码实现:

void show_menu() {
    printf("------------Menu------------\n");
    printf(" 1. 麻辣烤鱼        30元\n");
    printf(" 2. 拍黄瓜         10元\n");
    printf(" 3. 麻婆豆腐        15元\n");
    printf(" 4. 红烧肉         20元\n");
    printf("-----------------------------\n");
}

int get_choice() {
    int ch;
    printf("请输入菜品编号: ");
    scanf("%d", &ch);
    return ch;
}

以上代码中,show_menu函数用于展示菜单列表,get_choice函数用于让用户选择菜品编号。

步骤三:实现点餐模块

在点餐模块中,我们需要让用户选择需要订购的菜品和数量。我们可以使用以下代码实现:

typedef struct {
    int id;
    char name[20];
    int price;
    int count;
} Dish;

void order_dishes(Dish dishes[], int size) {
    printf("请选择您的菜品:\n");
    for (int i = 0; i < size; ++i) {
        printf("%d. %-10s %5d元\n", dishes[i].id, dishes[i].name, dishes[i].price);
    }

    int ch, num;
    printf("请输入菜品编号: ");
    scanf("%d", &ch);
    printf("请输入菜品数量: ");
    scanf("%d", &num);

    if (ch < 1 || ch > size) {
        printf("输入有误,请重新输入.\n");
        order_dishes(dishes, size);
    } else {
        int index = ch - 1;
        dishes[index].count += num;
        printf("%s已成功加入购物车,共%d份.\n", dishes[index].name, dishes[index].count);
    }
}

以上代码中,Dish结构体表示一个菜品,order_dishes函数让用户选择要订购的菜品编号和数量,并将用户选择的菜品和数量保存到每个菜品的结构体中。

步骤四:实现结算模块

在结算模块中,我们需要将用户选择的菜品和数量计算出总金额,并将其展示给用户。我们可以使用以下代码实现:

void check_out(Dish dishes[], int size) {
    printf("------账单-------\n");
    int total_price = 0;
    for (int i = 0; i < size; ++i) {
        if (dishes[i].count > 0) {
            printf("%-10s %2dx%d = %d元\n", dishes[i].name, dishes[i].price, dishes[i].count, dishes[i].price * dishes[i].count);
            total_price += dishes[i].price * dishes[i].count;
        }
    }
    printf("------------------\n");
    printf("  总计: %d元\n", total_price);
}

以上代码中,check_out函数将遍历保存的每个菜品,如果有数量大于0的菜品,就将其价格乘以数量计算出总金额,并展示给用户。

步骤五:实现主程序模块

在主程序模块中,我们需要将所有模块整合起来,使得程序可以正常运行。我们可以使用以下代码来实现主程序:

int main() {
    Dish dishes[] = {
            {1, "麻辣烤鱼", 30, 0},
            {2, "拍黄瓜", 10, 0},
            {3, "麻婆豆腐", 15, 0},
            {4, "红烧肉", 20, 0}
    };

    while (1) {
        show_menu();
        int choice = get_choice();
        if (choice == 0) {
            printf("欢迎下次光临!\n");
            break;
        }
        order_dishes(dishes, 4);
        check_out(dishes, 4);
    }

    return 0;
}

以上代码中,我们定义了一个数组dishes用于保存菜品列表,然后在一个无限循环中,用户可以选择菜品编号,然后进行订餐和结算。

示例说明

示例一

当用户运行程序时,会看到如下菜单:

------------Menu------------
 1. 麻辣烤鱼        30元
 2. 拍黄瓜         10元
 3. 麻婆豆腐        15元
 4. 红烧肉         20元
-----------------------------
请输入菜品编号:

然后用户输入1,选择了麻辣烤鱼,接着程序展示:

------------Menu------------
 1. 麻辣烤鱼        30元
 2. 拍黄瓜         10元
 3. 麻婆豆腐        15元
 4. 红烧肉         20元
-----------------------------
请输入菜品编号: 1
请输入菜品数量: 2
麻辣烤鱼已成功加入购物车,共2份.
------账单-------
麻辣烤鱼     2x30 = 60元
------------------
  总计: 60元

用户可以不断选择菜品和数量,直到选择结束,程序会计算总金额并展示给用户,最后用户可以输入0退出程序。

示例二

用户可以选择一个菜品后,重新选择该菜品的数量。比如当用户选择了麻辣烤鱼,然后输入了2,程序展示:

麻辣烤鱼已成功加入购物车,共2份.

此时,用户可以再次选择麻辣烤鱼,并再次输入2,程序将会展示:

麻辣烤鱼已成功加入购物车,共4份.

这种方式可以让用户方便地修改已经选择的菜品。

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

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

相关文章

  • c++非变易算法-stl算法

    当我们需要对一些数据集合进行一些固定的操作的时候,我们就可以使用STL(标准模板库)提供的算法来简化我们的代码并提高效率。STL算法主要包括三种,分别是变易算法、非变易算法和排序算法。其中,非变易算法指的是在执行算法的过程中不更改输入的数据集的内容。 在C++的STL库中,STL算法被封装在Algorithm头文件中。下面是一些常用的非变易算法: for_e…

    C 2023年5月22日
    00
  • 解析Node.js异常处理中domain模块的使用方法

    解析Node.js异常处理中domain模块的使用方法 在Node.js中,异常处理是一个非常重要的话题,因为错误的产生是运行环境的本质。Node.js提供了一系列的异常处理工具来帮助我们处理错误,其中就包括domain模块。 什么是domain模块 domain模块是Node.js用于处理异步代码中错误的模块。它允许我们将多个异步操作绑定到一个错误处理上下…

    C 2023年5月23日
    00
  • Win10安装打印机驱动出现错误代码0xc000007b的原因及解决方法

    Win10安装打印机驱动出现错误代码0xc000007b的原因及解决方法攻略 引言 在进行Windows 10系统安装打印机驱动程序时,常会出现错误代码0xc000007b的问题,该问题会影响到您正常的打印操作,需要得到有效的解决。 原因分析 错误代码0xc000007b的出现通常是由于打印机驱动程序文件缺少或不完整,无法正确运行。而导致打印机驱动程序缺少或…

    C 2023年5月23日
    00
  • VC6.0常见编译错误提示附解决方法

    VC6.0常见编译错误提示附解决方法 一、背景介绍 VC6.0是微软推出的一款经典的C++集成开发环境,是许多老程序员所熟悉的开发工具之一。然而,随着技术的不断更新,VC6.0的使用逐渐减少,但是仍有部分老项目需要在VC6.0上进行编译和维护。在VC6.0的编译过程中,常见的编译错误提示往往会使开发者感到困惑,本文将就VC6.0的常见编译错误提示进行详细的解…

    C 2023年5月23日
    00
  • C语言 不使用strcat函数实现连接两个字符串功能代码

    为了连接两个字符串,我们需要实现以下几个步骤: 确定第一个字符串长度,然后创建到第一个字符串长度加上第二个字符串长度的字符缓冲区。 将第一个字符串复制到缓冲区。 将第二个字符串追加到缓冲区。 将缓冲区中的内容赋值回第一个字符串。 因此,我们可以按照以下方式实现连接两个字符串的代码: #include<stdio.h> void string_co…

    C 2023年5月24日
    00
  • C#实现任意数据类型转成json格式输出

    C#是一种强类型语言,而JSON是一种轻量级的数据交换格式。在C#中,将任意数据类型转换为JSON格式可以便于进行数据传输、数据存储和Web服务请求等操作。下面是实现任意数据类型转换为JSON格式的攻略: 第一步:导入Json.NET库 在C#中,我们可以使用Json.NET库来实现JSON格式的转换。我们可以在Visual Studio中通过NuGet包管…

    C 2023年5月23日
    00
  • C++使用递归方法求n阶勒让德多项式完整实例

    C++使用递归方法求n阶勒让德多项式 什么是勒让德多项式 勒让德多项式是一种数学函数,定义在实数上,常用于解决物理学中的问题。它们表示为:$$ P_n(x) = \frac{1}{2^n n!} \frac{d^n}{dx^n} [(x^2 – 1)^n] $$ 其中,n是多项式的阶数。 递归实现n阶勒让德多项式 通过递归实现n阶勒让德多项式,是一种简便的方…

    C 2023年5月22日
    00
  • C语言实现简易文本编辑器

    C语言实现简易文本编辑器攻略 1. 需求概述 本项目的目标是使用C语言实现一个简易的文本编辑器,能够实现以下基本功能: 读取文本文档并将其显示在屏幕上。 在文档中插入、删除字符及行。 将编辑后的文档保存至本地。 2. 设计思路 为了实现上述功能,我们考虑按照以下步骤执行: 读取文本文档并将其显示在屏幕上:使用C语言的文件操作方式读取文档内容,然后通过标准输出…

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