iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言实现餐厅点餐系统
  • 407
分享到

C语言实现餐厅点餐系统

2024-04-02 19:04:59 407人浏览 八月长安
摘要

本文实例为大家分享了C语言实现餐厅点餐系统的具体代码,供大家参考,具体内容如下 这应该是比较简单的c语言程序了,因为学校c语言结课结的早,我当时才学到结构体指针,所以我就把我当时能运

本文实例为大家分享了C语言实现餐厅点餐系统的具体代码,供大家参考,具体内容如下

这应该是比较简单的c语言程序了,因为学校c语言结课结的早,我当时才学到结构体指针,所以我就把我当时能运用的知识点全用在这个程序上了。虽说这个程序对当时的我来说是天花板,但是当我继续学习,我逐渐发现这个程序能升级的点实在是太多了。但我也一直没去完善。所以就硬着头皮把他发出来了。

代码涉及的知识点:顺序结构,选择分支结构,循环结构,数组,自定义函数,指针和结构体。

主要思路:

定义的一个结构体数组,包含了三个成员,分别是菜品编号(serial_number),菜品名称(dishes_name[50]),和餐品价格(money)。定义一个结构体数组dishes[50],并给他赋值。然后再定义多个函数,使用多个printf分别输出交互后的页面。比如:开始的界面,命名为outside,欢迎界面,命名为welcome,菜单函数,命名为menu,等待函数,命名为waiting,账单函数,命名为bill,送客函数,命名为Goodbye,后台函数,命名为backstage_welcome。这些是主函数需要的部分。

程序中多次设置可供goto使用的节点,用于使用后的返回,使程序更加完整。并合理使用清屏函数system("cls");,使程序保持简介的页面。

点餐系统的主要实现的功能是:

(1)点餐前输入桌号和人数

(2)菜单浏览功能

(3)输入选的菜单

(4)计算账单总金额;

(5)按点菜的顺序进行排序等功能;

(6)菜品信息的删除与修改;

难理解的知识点:

在菜单函数中,输入的值为结构体地址,方便表格中数值引用。\t的作用是对齐,让界面更加整洁。\n是回车。struct menu* b中的b表示结构体struct menu的地址,b指向结构体的首地址,即结构体数组dishes[1],b+1指向结构体数组dishes[2],以此类推。->表示引用该地址下某一成员的值。用%d,%s输出结构体数组中对应的值。

在自定义账单函数中,用于输出菜品编号,名称,并计算总金额。NUM[50]中存放用户输入的菜品编号,struct menu* b用于输出菜单时对应菜品名称的调用,PAYMONEY用于输入主函数中已经计算好的总金额。然后再定义一个整型变量i,用于for循环计数。将i赋为0,执行后面的循环结构,if是判断结束循环的关键,循环到输入的数组int NUM[50]中的0后break结束本次循环,如果不是0,则持续输出菜单。循环结束后,输出总金额。

清屏函数在#include<coNIO.h>中。

实验问题

数组赋值问题应使用strcmp函数,而且不能调用结构体指针,因为结构体内的数组名就是他的首地址,再用地址会报错。

在使用清屏函数时,应该加一个getch或者scanf,防止还未输出就已经被清屏的情况。

解决了程序后台系统中,修改菜品名称时无法输入的问题,应加一行getch,把输入的回车吃掉。

代码如下:

#include<stdio.h>
#include<conio.h>
#include<string.h>
struct menu
{
    int serial_number;
    char dishes_name[50];
    int money;
}dishes[50]={    
                {1,"麻婆豆腐",20},
                {2,"鱼香鸡丝",25},
                {3,"北京烤鸭",67},
                {4,"乱炖",54},
                {5,"海带丝",12},
                {6,"土豆丝",12},
                {7,"可乐鸡翅",44},
                {8,"分米鸡",77},
                {9,"牛肉面",24},
                {10,"葱油饼",5},
                {11,"米饭",3}
                                };
int outside(void)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|     欢迎来到餐厅点餐系统     |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
}
int welcome(int PEOPLENUMBER,int DESK)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|    第%d号的%d位客人,欢迎光临 |\n",PEOPLENUMBER,DESK);
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
}
 
int menu(struct menu* b)
{
    printf("------编号------名称-----价格---\n");
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b)->serial_number,(b)->dishes_name,(b)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+1)->serial_number,(b+1)->dishes_name,(b+1)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+2)->serial_number,(b+2)->dishes_name,(b+2)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+3)->serial_number,(b+3)->dishes_name,(b+3)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+4)->serial_number,(b+4)->dishes_name,(b+4)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+5)->serial_number,(b+5)->dishes_name,(b+5)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+6)->serial_number,(b+6)->dishes_name,(b+6)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+7)->serial_number,(b+7)->dishes_name,(b+7)->money);
    printf("|     %d\t      %s\t    %d\t   |\t\n",(b+8)->serial_number,(b+8)->dishes_name,(b+8)->money);
    printf("|     %d\t%s\t      %d\t   |\t\n",(b+9)->serial_number,(b+9)->dishes_name,(b+9)->money);
    printf("|     %d\t%s\t      %d\t   |\t\n",(b+10)->serial_number,(b+10)->dishes_name,(b+10)->money);
    printf("--------------------------------\n");
    
}
int waiting(void)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|  已收到您的菜单,请等待上餐  |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
}
int bill(int NUM[50],struct menu* b,int PAYMONEY)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|        请查收您的账单        |\n");
    printf("|      如有异议请联系服务员    |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
    int i;
    for(i=0;;i++)
    {
        if(NUM[i]==0)
        {
            break;
        }
        printf("   %d\t     %s\t   %d\t\n",NUM[i],(b+NUM[i]-1)->dishes_name,(b+NUM[i]-1)->money);
    }
    printf("总共为%d元\n",PAYMONEY);
}
int goodbye(void)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|         谢谢您的回顾         |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
}
int backstage_welcome(void)
{
    printf("--------------------------------\n");
    printf("|                              |\n");
    printf("|     欢迎进入后台管理系统     |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("|        修改价格请输入1       |\n");
    printf("|                              |\n");
    printf("|        修改菜品请输入2       |\n");
    printf("|                              |\n");
    printf("|     退出管理员界面请输入3    |\n");
    printf("|                              |\n");
    printf("|                              |\n");
    printf("--------------------------------\n");
}
 
int main()
{
    start:
    outside();
    int desknumber,human;
    int n,i,num[50],paymoney=0;
    int keyWord;
    int change;
    struct menu* pmenu=&dishes;
    printf("请输入餐桌号(输入1009进入管理界面)");
    scanf("%d",&desknumber);
    if(desknumber==1009)
    {
        goto start_backstage;
    }
    printf("请输入就餐人数");
    scanf("%d",&human);
    system("cls");
    welcome(human,desknumber); 
    printf("输入任意阿拉伯数字点击回车进入下一步");
    scanf("%d");
    system("cls");
    menu(pmenu);
    pmenu=&dishes;
    printf("请输入想吃的菜的编号,可一次输入多个编号,每个编号后请输入“,”,最后以0结束\n");
    for(i=0;;i++)
    {
        scanf("%d,",&num[i]);
        if(num[i]==0)
        {
            break;
        }
        else
        {
            paymoney+=((pmenu+num[i]-1)->money);
        }
    }
    system("cls");
    waiting();
    start_to_bill:
    printf("查看账单请输入1\n");
    scanf("%d",&n);
    system("cls");
    start_to_pay:
    if(n==1)
    {
        bill(num,pmenu,paymoney);
    }
    else
    {
        printf("输入有误,请重新输入\n");
        goto start_to_bill;
    }
    printf("已经帮您联系服务员,服务员将很快到达,请您稍等\n");
    printf("请服务员确认后输入密码(1111)\n");
    scanf("%d",&keyword);
    system("cls");
    if(keyword==1111)
    {
        goodbye();
        printf("请输入任意一个阿拉伯数字,重置点餐系统\n");
        scanf("%d");
        system("cls");
        goto start;
    }
    else
    {
        printf("输入错误,请重新输入\n");
        goto start_to_pay;
    }
    
    
    start_backstage:
    printf("请输入管理员密码(1111)"); 
    scanf("%d",&keyword);
    if(keyword!=1111)
    {
        printf("密码错误,随意输入一个阿拉伯数字返回");
        scanf("%d");
        system("cls");
        goto start;
    }
    system("cls");
    start_manage:
    backstage_welcome();
    scanf("%d",&change);
    if(change==1)
    {
        int bianhao,changemoney;
        printf("请输入菜品编号");
        scanf("%d",&bianhao);
        printf("\n请输入修改的价格\n");
        scanf("%d",&changemoney);
        (pmenu+bianhao-1)->money=changemoney;
        printf("修改成功,输入任意阿拉伯数字返回管理员界面\n");
        scanf("%d");
        system("cls");
        goto start_manage;
        
    }
    else if(change==3)
    {
        system("cls");
        goto start;
    }
    else if(change==2)
    {
        int bianhao;
        char dish_name[50];
        char *pname=&(pmenu+bianhao-1)->dishes_name;
        printf("请输入菜品编号");
        scanf("%d",&bianhao);
        getchar();
        printf("\n请输入修改的名称\n");
        gets(dish_name);
        strcpy(dishes[bianhao-1].dishes_name,dish_name);
        //strcpy(pname,dish_name);
        printf("修改成功,输入任意阿拉伯数字返回管理员界面\n");
        scanf("%d");
        system("cls");
        goto start_manage;
    }
    else
    {
        printf("请输入有效的数");
        system("cls");
        goto start_manage; 
    }
}

这个程序能升级的点还是有很多的,比如:可以写一个链表,自动录入菜品的名称和价格;还可以定义一个文件指针,用fopen和fclose,将菜单和流水保存在txt文件中,方便后续查阅。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C语言实现餐厅点餐系统

本文链接: https://www.lsjlt.com/news/151679.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言实现餐厅点餐系统
    本文实例为大家分享了C语言实现餐厅点餐系统的具体代码,供大家参考,具体内容如下 这应该是比较简单的c语言程序了,因为学校c语言结课结的早,我当时才学到结构体指针,所以我就把我当时能运...
    99+
    2024-04-02
  • C语言实现餐厅管理系统
    本文实例为大家分享了C语言实现餐厅管理系统的具体代码,供大家参考,具体内容如下 在学习完C语言之后,写了一个小程序,涉及到单链表,文件,排序,等内容。 这个对新手指针,函数等方面的掌...
    99+
    2024-04-02
  • 如何利用C++实现一个简单的餐厅点餐系统?
    如何利用C++实现一个简单的餐厅点餐系统?餐厅点餐系统是现代餐饮行业中非常重要的一环。通过使用计算机程序来管理和处理点餐、结算等操作,可以提高餐厅的效率和服务质量。本文将介绍如何利用C++编程语言实现一个简单的餐厅点餐系统。首先,我们需要定...
    99+
    2023-11-02
    系统 餐厅 点餐
  • C语言实现简单餐饮管理与点餐系统
    本文实例为大家分享了C语言实现餐饮管理与点餐系统的具体代码,供大家参考,具体内容如下     //当注册用户名为:root,密码为:root的账号时,系统默认为初始管理员...
    99+
    2024-04-02
  • Go语言开发点餐系统中的餐厅排队功能详解
    Go语言开发点餐系统中的餐厅排队功能详解餐厅排队功能是现代点餐系统中不可或缺的一部分。这个功能可以让顾客在不用等待餐桌的情况下提前进行点餐,然后在指定的时间到达餐厅取餐。这不仅能提高餐厅的效率,还可以减少顾客等待时间,提升顾客的用餐体验。本...
    99+
    2023-11-01
    开发 Go语言 餐厅排队
  • 如何使用Go语言开发点餐系统的餐厅搜索功能
    如何使用Go语言开发点餐系统的餐厅搜索功能在现代社会,人们对于点餐越来越依赖于互联网和移动设备。随着外卖和餐饮行业的快速发展,一个高效准确的餐厅搜索功能对于点餐系统的用户体验来说显得尤为重要。本文将介绍如何使用Go语言来开发点餐系统的餐厅搜...
    99+
    2023-11-02
    Go语言 点餐系统 餐厅搜索功能
  • 如何利用Go语言开发点餐系统的预定餐厅功能
    如何利用Go语言开发点餐系统的预定餐厅功能,需要具体代码示例餐厅预定功能是现代点餐系统中非常重要的一部分,它可以让顾客提前预约餐厅的就餐时间,有效避免了等位的情况,提升了顾客的就餐体验。在本文中,我们将使用Go语言来开发一个简单的餐厅预定功...
    99+
    2023-11-01
    Go语言开发 点餐系统 预定餐厅功能
  • C语言实现简易订餐系统
    本文实例为大家分享了C语言实现简易订餐系统的具体代码,供大家参考,具体内容如下 主要功能: (1)菜单维护(餐厅管理人员使用)采用顺序表实现 1、添加新菜 2、删除菜品 3、修改菜品...
    99+
    2024-04-02
  • C语言实现餐饮管理系统
    本文实例为大家分享了C语言实现餐饮管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> ...
    99+
    2024-04-02
  • 数据库课设--基于Python+MySQL的餐厅点餐系统
    文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4...
    99+
    2023-09-09
    数据库 mysql
  • C#实现简单点餐系统
    本文实例为大家分享了C#实现简单点餐系统的具体代码,供大家参考,具体内容如下 实现简单点餐系统剖析 1、设计界面(给菜品的序号(index),名称(name),单价(money)加上...
    99+
    2024-04-02
  • C#窗体实现点餐系统
    本文实例为大家分享了C#窗体实现点餐系统的具体代码,供大家参考,具体内容如下 一、概述 美食行业现如今也越利用信息化技术来提高点餐的效率和质量,小小的一个系统不仅可以提高餐厅的档次,...
    99+
    2022-11-13
    C# 点餐系统
  • C#实现简单的点餐系统
    本文项目为大家分享了C#实现点餐系统,供大家参考,具体内容如下 项目介绍:一家店铺使用的外卖点餐系统本项目分三大模块:登录注册模块,用户模块,店家模块 1.登录注册模块 登录分为用户...
    99+
    2024-04-02
  • Go语言开发点餐系统中的预约点餐功能实现方法
    随着数字化时代的到来,各个行业都在加速数字化转型,餐饮业也不例外。越来越多的餐厅开始使用点餐系统,为顾客提供更加便捷、高效的用餐体验。其中,预约点餐是一种很受欢迎的点餐方式,它可以让顾客在到店前就预先下单并付款,减少顾客等待时间,同时也能为...
    99+
    2023-11-01
    Go语言 系统实现 预约点餐
  • 如何使用PHP开发点餐系统的餐厅预订功能?
    如何使用PHP开发点餐系统的餐厅预订功能?随着互联网和智能手机的普及,餐厅预订系统逐渐成为许多餐厅必备的功能之一。这种系统可以让顾客通过网络或手机应用程序方便地预订餐厅,并提前选择菜单、座位和时间。在这篇文章中,我们将讨论如何使用PHP开发...
    99+
    2023-11-01
    PHP 餐厅预订 点餐系统
  • 如何利用PHP开发点餐系统的餐厅管理功能?
    如何利用PHP开发点餐系统的餐厅管理功能?近年来,随着餐饮行业的迅速发展,点餐系统已成为餐厅必备的软件之一。利用PHP开发的点餐系统,不仅可以提高餐厅的工作效率和管理水平,还可以提供更好的顾客体验。本文将介绍如何利用PHP开发点餐系统的餐厅...
    99+
    2023-11-01
    PHP 餐厅管理 点餐系统
  • PHP开发点餐系统的餐厅公告管理功能实现方法是什么?
    PHP开发点餐系统的餐厅公告管理功能实现方法是什么?随着网络技术的快速发展,餐厅点餐系统已经成为餐饮行业中不可或缺的一部分。对于开发者来说,实现餐厅公告管理功能是开发点餐系统的重要组成部分之一。而使用PHP来开发这一功能则是相对简单和高效的...
    99+
    2023-11-02
    PHP开发 餐厅公告管理 系统实现方法
  • C语言实现电话订餐管理系统
    本文实例为大家分享了C语言实现电话订餐管理系统的具体代码,供大家参考,具体内容如下 这是我C语言课程设计的题目。非常奇怪啊,下面的代码能在C-Free中跑起来,却没办法在vc++6....
    99+
    2024-04-02
  • 餐厅座位预定系统设计与实现
        项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于java的公司企业网站,整体基于B/S架构,技术上使用基于java的springboot框架来实现;通过后台添加公司资讯、公司产品、公司产品案例、查看注册用户、查看留...
    99+
    2023-09-25
    java 开发语言
  • C#如何实现简单点餐系统
    小编给大家分享一下C#如何实现简单点餐系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下实现简单点餐系统剖析设计界面(给菜品的序号(index),名称...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作