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语言函数栈帧的创建与销毁详解

    C语言函数栈帧的创建与销毁详解 概述 在C语言中,当一个函数被调用时,系统会为这个函数创建一个函数栈帧(也称为活动记录),用于保存函数内部的变量、参数和函数返回地址等信息。当函数执行完毕后,系统会销毁该函数栈帧,释放内存。 函数栈帧的组成部分 函数栈帧一般由以下几部分组成: 函数参数:函数在调用时所传递的参数,存放在栈帧的底部; 函数局部变量:函数内部定义的…

    C 2023年5月23日
    00
  • 汇编语言入门教程(这一篇足矣)

    《汇编语言入门教程(这一篇足矣)》是一篇介绍汇编语言基础知识的文章,适合初学者入门。下面我将按照文章的结构进行详细讲解。 一、前言 本文介绍汇编语言基础知识和相关工具的使用,重点讲解x86汇编语言。同时要求读者有一定的基础知识,建议了解计算机系统、数据结构和算法。本文主要内容包括汇编语言基本语法、寄存器和指令等。 二、汇编语言基础 本节主要讲解汇编语言的基本…

    C 2023年5月22日
    00
  • C++实现简单的通讯录管理系统

    下面我来详细讲解“C++实现简单的通讯录管理系统”的完整攻略。 系统概述 通讯录管理系统是一个简单的信息管理系统。该系统可以实现以下功能: 添加联系人 显示联系人 删除联系人 查找联系人 修改联系人 清空联系人 退出通讯录管理系统 系统实现过程 设计流程 分析需求,确定功能模块 绘制流程图,确定各模块的处理流程 完成代码实现 运行测试 编写代码 首先,我们需…

    C 2023年5月23日
    00
  • 如何在java中正确使用注释

    下面我将详细讲解如何在Java中正确使用注释。 为什么需要注释 注释是代码中一个非常重要且必不可少的组成部分,它可以对代码进行完善的解释和说明,提高代码的可读性、可维护性和可扩展性。同时,注释还可以对代码的某些问题或待优化之处进行标注,为日后的程序优化和代码重构提供参考。 Java注释类型 Java中支持三种方式的注释: 1.单行注释 单行注释可用于在一行代…

    C 2023年5月22日
    00
  • C 语言基础教程(我的C之旅开始了)[十]

    下面是“C 语言基础教程(我的C之旅开始了)[十]”的完整攻略,主要包含以下几个部分: 标题 文章的标题应该简明、准确地反映文章的主题。在本篇文章中,标题为“C 语言基础教程(我的C之旅开始了)[十]”,可知该文章是系统讲解 C 语言基础知识的系列文章的第十篇。 章节 要做到篇章设计清晰,特别是对于长篇文章来说,应该对其进行章节划分。在本篇文章中,可以根据文…

    C 2023年5月23日
    00
  • 怎样竖着选择Word中的文字 Word中Alt与Ctrl的冷门技巧

    怎样竖着选择Word中的文字 在Word中,我们可以使用鼠标和键盘操作来竖着选择文字。以下是具体步骤: 首先,在Word中打开需要编辑的文档。 将光标移动到要选择的起始位置。 按住Alt键,在键盘上按下鼠标右键,此时会出现光标箭头的横向和纵向选择线。 同时按住Shift键,按下方向键进行选择。可以选择向上、向下、向左和向右。 当选择到想要的位置后,松开Shi…

    C 2023年5月23日
    00
  • 深入了解C++优先队列(priority_queue)的使用方法

    深入了解C++优先队列(priority_queue)的使用方法 什么是优先队列? 优先队列(Priority Queue)是一种数据结构,其本质是一个队列,但是队列中的元素都被赋予了优先级。优先级最高的元素最先被取出。 C++的优先队列(priority_queue)的用法 在C++中,优先队列(priority_queue)类定义在头文件中,其基本用法如…

    C 2023年5月22日
    00
  • 一篇文章教你3分钟如何发布Qt程序

    一篇文章教你3分钟如何发布Qt程序 在开始这个教程之前,请确保你已经完成了Qt程序的开发,并且准备好将其发布出去。 步骤一:构建Qt程序 首先,我们需要构建我们的Qt程序,以便我们能够将其发布出去。我们可以使用Qt Creator来构建程序,具体步骤如下: 打开Qt Creator,并打开你的Qt项目。 点击“构建”菜单,选择“构建项目”选项。 等待构建完成…

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