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

C語(yǔ)言實(shí)現(xiàn)餐廳點(diǎn)餐系統(tǒng)

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

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

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

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

主要思路:

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

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

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

(1)點(diǎn)餐前輸入桌號(hào)和人數(shù)

(2)菜單瀏覽功能

(3)輸入選的菜單

(4)計(jì)算賬單總金額;

(5)按點(diǎn)菜的順序進(jìn)行排序等功能;

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

難理解的知識(shí)點(diǎn):

在菜單函數(shù)中,輸入的值為結(jié)構(gòu)體地址,方便表格中數(shù)值引用。\t的作用是對(duì)齊,讓界面更加整潔。\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ù)組中對(duì)應(yīng)的值。

在自定義賬單函數(shù)中,用于輸出菜品編號(hào),名稱,并計(jì)算總金額。NUM[50]中存放用戶輸入的菜品編號(hào),struct menu* b用于輸出菜單時(shí)對(duì)應(yīng)菜品名稱的調(diào)用,PAYMONEY用于輸入主函數(shù)中已經(jīng)計(jì)算好的總金額。然后再定義一個(gè)整型變量i,用于for循環(huán)計(jì)數(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àn)問(wèn)題

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

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

解決了程序后臺(tái)系統(tǒng)中,修改菜品名稱時(shí)無(wú)法輸入的問(wèn)題,應(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,"可樂(lè)雞翅",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("| ? ? 歡迎來(lái)到餐廳點(diǎn)餐系統(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號(hào)的%d位客人,歡迎光臨 |\n",PEOPLENUMBER,DESK);
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("--------------------------------\n");
}
?
int menu(struct menu* b)
{
?? ?printf("------編號(hào)------名稱-----價(jià)格---\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("| ?已收到您的菜單,請(qǐng)等待上餐 ?|\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("| ? ? ? ?請(qǐng)查收您的賬單 ? ? ? ?|\n");
?? ?printf("| ? ? ?如有異議請(qǐng)聯(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("| ? ? 歡迎進(jìn)入后臺(tái)管理系統(tǒng) ? ? |\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ?修改價(jià)格請(qǐng)輸入1 ? ? ? |\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? ? ?修改菜品請(qǐng)輸入2 ? ? ? |\n");
?? ?printf("| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|\n");
?? ?printf("| ? ? 退出管理員界面請(qǐng)輸入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("請(qǐng)輸入餐桌號(hào)(輸入1009進(jìn)入管理界面)");
?? ?scanf("%d",&desknumber);
?? ?if(desknumber==1009)
?? ?{
?? ??? ?goto start_backstage;
?? ?}
?? ?printf("請(qǐng)輸入就餐人數(shù)");
?? ?scanf("%d",&human);
?? ?system("cls");
?? ?welcome(human,desknumber);?
?? ?printf("輸入任意阿拉伯?dāng)?shù)字點(diǎn)擊回車進(jìn)入下一步");
?? ?scanf("%d");
?? ?system("cls");
?? ?menu(pmenu);
?? ?pmenu=&dishes;
?? ?printf("請(qǐng)輸入想吃的菜的編號(hào),可一次輸入多個(gè)編號(hào),每個(gè)編號(hào)后請(qǐng)輸入“,”,最后以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("查看賬單請(qǐng)輸入1\n");
?? ?scanf("%d",&n);
?? ?system("cls");
?? ?start_to_pay:
?? ?if(n==1)
?? ?{
?? ??? ?bill(num,pmenu,paymoney);
?? ?}
?? ?else
?? ?{
?? ??? ?printf("輸入有誤,請(qǐng)重新輸入\n");
?? ??? ?goto start_to_bill;
?? ?}
?? ?printf("已經(jīng)幫您聯(lián)系服務(wù)員,服務(wù)員將很快到達(dá),請(qǐng)您稍等\n");
?? ?printf("請(qǐng)服務(wù)員確認(rèn)后輸入密碼(1111)\n");
?? ?scanf("%d",&keyword);
?? ?system("cls");
?? ?if(keyword==1111)
?? ?{
?? ??? ?goodbye();
?? ??? ?printf("請(qǐng)輸入任意一個(gè)阿拉伯?dāng)?shù)字,重置點(diǎn)餐系統(tǒng)\n");
?? ??? ?scanf("%d");
?? ??? ?system("cls");
?? ??? ?goto start;
?? ?}
?? ?else
?? ?{
?? ??? ?printf("輸入錯(cuò)誤,請(qǐng)重新輸入\n");
?? ??? ?goto start_to_pay;
?? ?}
?? ?
?? ?
?? ?start_backstage:
?? ?printf("請(qǐng)輸入管理員密碼(1111)");?
?? ?scanf("%d",&keyword);
?? ?if(keyword!=1111)
?? ?{
?? ??? ?printf("密碼錯(cuò)誤,隨意輸入一個(gè)阿拉伯?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("請(qǐng)輸入菜品編號(hào)");
?? ??? ?scanf("%d",&bianhao);
?? ??? ?printf("\n請(qǐng)輸入修改的價(jià)格\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("請(qǐng)輸入菜品編號(hào)");
?? ??? ?scanf("%d",&bianhao);
?? ??? ?getchar();
?? ??? ?printf("\n請(qǐng)輸入修改的名稱\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("請(qǐng)輸入有效的數(shù)");
?? ??? ?system("cls");
?? ??? ?goto start_manage;?
?? ?}
}

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

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

相關(guān)文章

最新評(píng)論