欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)餐廳點餐系統(tǒng)

 更新時間:2022年06月16日 10:47:02   作者:噫吁汐  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)餐廳點餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)餐廳點餐系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

這應(yīng)該是比較簡單的c語言程序了,因為學(xué)校c語言結(jié)課結(jié)的早,我當(dāng)時才學(xué)到結(jié)構(gòu)體指針,所以我就把我當(dāng)時能運用的知識點全用在這個程序上了。雖說這個程序?qū)Ξ?dāng)時的我來說是天花板,但是當(dāng)我繼續(xù)學(xué)習(xí),我逐漸發(fā)現(xiàn)這個程序能升級的點實在是太多了。但我也一直沒去完善。所以就硬著頭皮把他發(fā)出來了。

代碼涉及的知識點:順序結(jié)構(gòu),選擇分支結(jié)構(gòu),循環(huán)結(jié)構(gòu),數(shù)組,自定義函數(shù),指針和結(jié)構(gòu)體。

主要思路:

定義的一個結(jié)構(gòu)體數(shù)組,包含了三個成員,分別是菜品編號(serial_number),菜品名稱(dishes_name[50]),和餐品價格(money)。定義一個結(jié)構(gòu)體數(shù)組dishes[50],并給他賦值。然后再定義多個函數(shù),使用多個printf分別輸出交互后的頁面。比如:開始的界面,命名為outside,歡迎界面,命名為welcome,菜單函數(shù),命名為menu,等待函數(shù),命名為waiting,賬單函數(shù),命名為bill,送客函數(shù),命名為goodbye,后臺函數(shù),命名為backstage_welcome。這些是主函數(shù)需要的部分。

程序中多次設(shè)置可供goto使用的節(jié)點,用于使用后的返回,使程序更加完整。并合理使用清屏函數(shù)system("cls");,使程序保持簡介的頁面。

點餐系統(tǒng)的主要實現(xiàn)的功能是:

(1)點餐前輸入桌號和人數(shù)

(2)菜單瀏覽功能

(3)輸入選的菜單

(4)計算賬單總金額;

(5)按點菜的順序進行排序等功能;

(6)菜品信息的刪除與修改;

難理解的知識點:

在菜單函數(shù)中,輸入的值為結(jié)構(gòu)體地址,方便表格中數(shù)值引用。\t的作用是對齊,讓界面更加整潔。\n是回車。struct menu* b中的b表示結(jié)構(gòu)體struct menu的地址,b指向結(jié)構(gòu)體的首地址,即結(jié)構(gòu)體數(shù)組dishes[1],b+1指向結(jié)構(gòu)體數(shù)組dishes[2],以此類推。->表示引用該地址下某一成員的值。用%d,%s輸出結(jié)構(gòu)體數(shù)組中對應(yīng)的值。

在自定義賬單函數(shù)中,用于輸出菜品編號,名稱,并計算總金額。NUM[50]中存放用戶輸入的菜品編號,struct menu* b用于輸出菜單時對應(yīng)菜品名稱的調(diào)用,PAYMONEY用于輸入主函數(shù)中已經(jīng)計算好的總金額。然后再定義一個整型變量i,用于for循環(huán)計數(shù)。將i賦為0,執(zhí)行后面的循環(huán)結(jié)構(gòu),if是判斷結(jié)束循環(huán)的關(guān)鍵,循環(huán)到輸入的數(shù)組int NUM[50]中的0后break結(jié)束本次循環(huán),如果不是0,則持續(xù)輸出菜單。循環(huán)結(jié)束后,輸出總金額。

清屏函數(shù)在#include<conio.h>中。

實驗問題

數(shù)組賦值問題應(yīng)使用strcmp函數(shù),而且不能調(diào)用結(jié)構(gòu)體指針,因為結(jié)構(gòu)體內(nèi)的數(shù)組名就是他的首地址,再用地址會報錯。

在使用清屏函數(shù)時,應(yīng)該加一個getch或者scanf,防止還未輸出就已經(jīng)被清屏的情況。

解決了程序后臺系統(tǒng)中,修改菜品名稱時無法輸入的問題,應(yīng)加一行g(shù)etch,把輸入的回車吃掉。

代碼如下:

#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("| ? ? 歡迎來到餐廳點餐系統(tǒng) ? ? |\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("| ? ? ?如有異議請聯(lián)系服務(wù)員 ? ?|\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("| ? ? 歡迎進入后臺管理系統(tǒng) ? ? |\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("請輸入就餐人數(shù)");
?? ?scanf("%d",&human);
?? ?system("cls");
?? ?welcome(human,desknumber);?
?? ?printf("輸入任意阿拉伯?dāng)?shù)字點擊回車進入下一步");
?? ?scanf("%d");
?? ?system("cls");
?? ?menu(pmenu);
?? ?pmenu=&dishes;
?? ?printf("請輸入想吃的菜的編號,可一次輸入多個編號,每個編號后請輸入“,”,最后以0結(jié)束\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("已經(jīng)幫您聯(lián)系服務(wù)員,服務(wù)員將很快到達,請您稍等\n");
?? ?printf("請服務(wù)員確認(rèn)后輸入密碼(1111)\n");
?? ?scanf("%d",&keyword);
?? ?system("cls");
?? ?if(keyword==1111)
?? ?{
?? ??? ?goodbye();
?? ??? ?printf("請輸入任意一個阿拉伯?dāng)?shù)字,重置點餐系統(tǒng)\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("密碼錯誤,隨意輸入一個阿拉伯?dāng)?shù)字返回");
?? ??? ?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("修改成功,輸入任意阿拉伯?dāng)?shù)字返回管理員界面\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("修改成功,輸入任意阿拉伯?dāng)?shù)字返回管理員界面\n");
?? ??? ?scanf("%d");
?? ??? ?system("cls");
?? ??? ?goto start_manage;
?? ?}
?? ?else
?? ?{
?? ??? ?printf("請輸入有效的數(shù)");
?? ??? ?system("cls");
?? ??? ?goto start_manage;?
?? ?}
}

這個程序能升級的點還是有很多的,比如:可以寫一個鏈表,自動錄入菜品的名稱和價格;還可以定義一個文件指針,用fopen和fclose,將菜單和流水保存在txt文件中,方便后續(xù)查閱。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++計算每個字符出現(xiàn)的次數(shù)

    C++計算每個字符出現(xiàn)的次數(shù)

    這篇文章主要介紹了C++計算每個字符出現(xiàn)的次數(shù)的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • C/C++實現(xiàn)快速排序算法的兩種方式實例

    C/C++實現(xiàn)快速排序算法的兩種方式實例

    快速排序是一種采用分治思想,在實踐中通常運行較快一種排序算法,這篇文章主要給大家介紹了關(guān)于C/C++實現(xiàn)快速排序的兩種方式的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下
    2021-08-08
  • opencv實現(xiàn)視場轉(zhuǎn)換

    opencv實現(xiàn)視場轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了opencv實現(xiàn)視場轉(zhuǎn)換,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • 基于Opencv實現(xiàn)雙目攝像頭拍照程序

    基于Opencv實現(xiàn)雙目攝像頭拍照程序

    這篇文章主要為大家詳細(xì)介紹了基于Opencv實現(xiàn)雙目攝像頭拍照程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 簡要對比C語言中三個用于退出進程的函數(shù)

    簡要對比C語言中三個用于退出進程的函數(shù)

    這篇文章主要介紹了C語言中三個用于退出進程的函數(shù)的對比,分別為_exit()函數(shù)和on_exit()函數(shù)以及atexit()函數(shù),需要的朋友可以參考下
    2015-08-08
  • 詳解C++中stoi/stol/stoll函數(shù)的用法

    詳解C++中stoi/stol/stoll函數(shù)的用法

    這篇文章主要為大家詳細(xì)介紹了C++中stoi、stol、stoll函數(shù)的具體用法,文中的示例代碼講解詳細(xì),對我們學(xué)校C++有一點的幫助,需要的可以參考一下
    2023-03-03
  • C++實現(xiàn)LeetCode(84.直方圖中最大的矩形)

    C++實現(xiàn)LeetCode(84.直方圖中最大的矩形)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(84.直方圖中最大的矩形),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言計算余數(shù)的圖文步驟

    C語言計算余數(shù)的圖文步驟

    在本篇文章里小編給大家整理了一篇關(guān)于C語言計算余數(shù)的圖文步驟內(nèi)容,有需要的朋友們可以參考下。
    2020-02-02
  • C++中allocator類使用示例

    C++中allocator類使用示例

    大家好,本篇文章主要講的是C++中allocator類使用示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 華為云開發(fā)工具CodeArts IDE for C/C++開發(fā)使用指南

    華為云開發(fā)工具CodeArts IDE for C/C++開發(fā)使用指南

    CodeArts IDE是一個集成開發(fā)環(huán)境(IDE),它提供了開發(fā)語言和調(diào)試服務(wù),本文主要介紹了華為云開發(fā)工具CodeArts IDE for C/C++ 開發(fā)使用指南,感興趣的可以了解一下
    2023-08-08

最新評論