最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易訂餐系統(tǒng)

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

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

主要功能:

(1)菜單維護(hù)(餐廳管理人員使用)采用順序表實(shí)現(xiàn)

1、添加新菜

2、刪除菜品

3、修改菜品信息

4、打印現(xiàn)有的菜品信息

(2)點(diǎn)餐(客戶(hù)使用)  采用鏈表實(shí)現(xiàn)

1、訂單菜品添加、刪除、顯示

2、計(jì)算顯示訂單總價(jià).........

對(duì)此我們可以創(chuàng)建一個(gè)結(jié)構(gòu)體類(lèi)型,并將其重命名為ElemType,結(jié)構(gòu)體里面存放有id,name,price分別表示菜品的id號(hào),菜名和價(jià)格。接著分別定義一個(gè)順序表和鏈表。接著我們就可以開(kāi)始實(shí)現(xiàn)代碼啦!

這里我采用的是多文件編程的方式,總共包含七個(gè)文件,三個(gè).h文件,四個(gè).c文件。

你只需要?jiǎng)?chuàng)建一個(gè)工程,然后分別創(chuàng)建下列七個(gè)文件并命名好就可以啦。

main.c文件中代碼如下:

#include"run.h"
?
int main()
{
? ? run_init();
? ? return 0;
}

main函數(shù)里只調(diào)用了一個(gè)run_init()函數(shù)

run.h文件代碼如下:

#ifndef __RUN_H
#define __RUN_H
?
#include"list.h"
#include"link.h"
?
void run_init();
SqList * menu_mt(SqList * List);
void menu_help();
Link_Node * order_mt(Link_Node *Head,SqList *List);
void order_help();
?
#endif

run.c文件代碼:

#include"run.h"
#include"stdlib.h"
void run_init()
{
? ? int a;
? ? SqList * List;
? ? Link_Node * Head;
? ? while(1)
? ? {
? ? ? ? printf("\t\t****輸入1進(jìn)入菜單維護(hù)模式****\n\t\t****輸入2進(jìn)入點(diǎn)餐模式****\n");
? ? ? ? printf("\t\t****輸入3退出程序****\n");
? ? ? ? printf("請(qǐng)進(jìn)行模式選擇:\n");
? ? ? ? scanf("%d",&a);
? ? ? ? switch(a)
? ? ? ? {
? ? ? ? ? ? case 1: List = menu_mt(List);break;
? ? ? ? ? ? case 2: Head = order_mt(Head,List);break; ?
? ? ? ? ? ? case 3: printf("謝謝使用本程序!期待下次與你會(huì)見(jiàn)!\n");
? ? ? ? ? ? if(List != NULL) free(List);return ; ?//結(jié)束程序
? ? ? ? ? ? default:printf("error,沒(méi)有這個(gè)選項(xiàng)!請(qǐng)重新選擇!\n");break;
? ? ? ? }
? ? }
}
?
SqList * menu_mt(SqList * List)
{
? ? int flag = 1,a;//flag為退出標(biāo)志
? ? while(flag)
? ? {
? ? ? ? menu_help();
? ? ? ? printf("請(qǐng)進(jìn)行模式選擇:");
? ? ? ? scanf("%d",&a);
? ? ? ? switch(a)
? ? ? ? {
? ? ? ? ? ? case 1:List = Create_List();break;
? ? ? ? ? ? case 2: ? ? ? Display_List(List);break;
? ? ? ? ? ? case 3:List = Add_List(List);break;
? ? ? ? ? ? case 4:List = Delete_List(List);break;
? ? ? ? ? ? case 5:List = Updata_List(List);break;
? ? ? ? ? ? case 6:flag = 0;break;
? ? ? ? ? ? default:printf("error,沒(méi)有這個(gè)選項(xiàng),請(qǐng)重新選擇!\n");break;
? ? ? ? }
? ? }
? ? printf("已成功退出菜單維護(hù)模式!\n");
? ? return List;
}
?
void menu_help()
{
? ? printf("\t\t******1------>創(chuàng)建菜單表------******\n");
? ? printf("\t\t******2------>打印菜單表------******\n");
? ? printf("\t\t******3------> 添加菜品 ------******\n");
? ? printf("\t\t******4------> 刪除菜品 ------******\n");
? ? printf("\t\t******5------> 修改菜品 ------******\n");
? ? printf("\t\t******6------> 返回上級(jí) ------******\n");
}
?
void order_help()
{
? ? printf("\t\t******1------>開(kāi)始點(diǎn)餐(創(chuàng)建鏈表)------******\n");
? ? printf("\t\t******2------> 顯示所有菜品信息 ------******\n");
? ? printf("\t\t******3------> ? 訂單菜品添加 ? ------******\n");
? ? printf("\t\t******4------> ? 訂單菜品刪除 ? ------******\n");
? ? printf("\t\t******5------> 顯示已點(diǎn)菜品信息 ------******\n");
? ? printf("\t\t******6------> ? 計(jì)算訂單價(jià)格 ? ------******\n");
? ? printf("\t\t******7------> ? ? 返回上級(jí) ? ? ------******\n");
}
?
Link_Node * order_mt(Link_Node *Head,SqList *List)
{
? ? int flag = 1,a;//flag為退出標(biāo)志
? ? while(flag)
? ? {
? ? ? ? order_help();
? ? ? ? printf("請(qǐng)進(jìn)行模式選擇:");
? ? ? ? scanf("%d",&a);
? ? ? ? switch(a)
? ? ? ? {
? ? ? ? ? ? case 1:Head = Create_Link(Head);break;
? ? ? ? ? ? case 2: ? ? ? Display_List(List);break;
? ? ? ? ? ? case 3:Head = Add_Link(Head,List);break;
? ? ? ? ? ? case 4:Head = Delete_Link(Head);break;
? ? ? ? ? ? case 5: ? ? ? Display_Link(Head);break;
? ? ? ? ? ? case 6: ? ? ? Count_Link(Head);break;
? ? ? ? ? ? case 7:flag = 0;break;
? ? ? ? ? ? default:printf("error,沒(méi)有這個(gè)選項(xiàng),請(qǐng)重新選擇!\n");break;
? ? ? ? }
? ? }
? ? Destory_Link(Head);
? ? printf("已成功退出點(diǎn)餐模式!\n");
? ? return Head;
}

link.h代碼如下:

#ifndef __LINK_H
#define __LINK_H
?
#include "list.h"
?
typedef struct LNode
{
? ? ElemType data;
? ? struct LNode *next;
}Link_Node;
?
Link_Node *Create_Link(Link_Node * Head);
Link_Node *Add_Link(Link_Node *Head,SqList *List);
Link_Node *Delete_Link(Link_Node *Head);
void Count_Link(Link_Node *Head);
void Display_Link(Link_Node *Head);
void Destory_Link(Link_Node *Head);
#endif

link.c代碼如下:

#include"link.h"
#include "stdlib.h"
?
//創(chuàng)建鏈表
Link_Node *Create_Link(Link_Node * Head)
{
? ? Head = (Link_Node*)malloc(sizeof(Link_Node));
? ? if(Head == NULL)
? ? ? ? printf("申請(qǐng)空間失??!\n");
? ? else?
? ? {
? ? ? ? Head->next = NULL;
? ? ? ? printf("訂單申請(qǐng)成功,您現(xiàn)在可以開(kāi)始點(diǎn)餐啦!\n");
? ? }
? ? return Head;
}
?
//添加結(jié)點(diǎn)
Link_Node *Add_Link(Link_Node *Head,SqList *List)
{
? ? int id_input,a;
? ? Link_Node *Ptemp = NULL;
? ? Ptemp = (Link_Node*)malloc(sizeof(Link_Node));
? ? if(Ptemp == NULL)
? ? ? ? printf("申請(qǐng)空間失?。n");
? ? else
? ? {
? ? ? ? printf("輸入你想添加菜品的id:");
? ? ? ? scanf("%d",&id_input);
? ? ? ? a = Searchid_List(List,id_input);
? ? ? ? if(a == -1)
? ? ? ? {
? ? ? ? ? ? printf("暫時(shí)還沒(méi)有這個(gè)菜呀,請(qǐng)您重新選擇。\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? ?Ptemp->data = List->data[a];
? ? ? ? ? ? Ptemp->next = Head->next;
? ? ? ? ? ? Head->next = Ptemp;
? ? ? ? ? ? printf("菜品已成功添加到您的訂單!\n");
? ? ? ? }
? ? }
? ? return Head;
}
?
//刪除結(jié)點(diǎn)
Link_Node *Delete_Link(Link_Node *Head)
{
? ? int id_input;
? ? Link_Node *Pt=Head->next,*Pq=Head;
? ? printf("請(qǐng)輸入你想刪除菜品的id:");
? ? scanf("%d",&id_input);
? ? while (Pt!=NULL)
? ? {
? ? ? ? if(id_input == (Pt->data).id) //找到便刪除
? ? ? ? {
? ? ? ? ? ? Pq->next = Pt->next;
? ? ? ? ? ? free(Pt);
? ? ? ? ? ? printf("已成功刪除!\n");
? ? ? ? ? ? break;
? ? ? ? }
? ? ? ? Pt = Pt->next;
? ? ? ? Pq = Pq->next;//向后走鏈
? ? }
? ? if(Pt==NULL)
? ? {
? ? ? ? printf("刪除失敗,您的訂單中沒(méi)有這個(gè)菜喔.\n");
? ? }
? ? return Head;
}
?
//打印訂單
void Display_Link(Link_Node *Head)
{
? ? Link_Node *Pt=Head->next;
? ? printf("已點(diǎn)菜品如下:\n");
? ? while (Pt!=NULL)
? ? {
? ? ? ? printf("id:%d\t",(Pt->data).id);
? ? ? ? printf("name:%s\t",(Pt->data).name);
? ? ? ? printf("price:%d\n",(Pt->data).price);
? ? ? ? Pt = Pt->next;
? ? } ?
}
?
//計(jì)算訂單總價(jià)
void Count_Link(Link_Node *Head)
{
? ? int sum = 0;
? ? Link_Node *Pt=Head->next;
? ? while (Pt!=NULL)
? ? {
? ? ? ? sum += (Pt->data).price;
? ? ? ? Pt = Pt->next;
? ? }
? ? printf("您的訂單總價(jià)格為:%d元\n",sum);
}
?
//銷(xiāo)毀鏈表
void Destory_Link(Link_Node *Head)
{
? ? ?Link_Node *Pt=Head;
? ? ?while(Head!=NULL)
? ? ?{
? ? ? ? Head = Head->next;
? ? ? ? free(Pt);
? ? ? ? Pt = Head;
? ? ?}
? ? ?printf("鏈表空間已釋放!\n");
}

list.h文件代碼如下:

#ifndef __LIST_H
#define __LIST_H
?
#include "stdio.h"
#define MaxSize 100
typedef struct
{
? ? int id;
? ? char name[50];
? ? int price;
}ElemType;
?
typedef struct?
{
? ? ElemType data[MaxSize];
? ? int length;
}SqList;
?
SqList * Create_List();
void input_one(SqList *List,int i);
void Display_List(SqList *List);
SqList * ?Add_List(SqList *List);
SqList * Delete_List(SqList *List);
SqList * Updata_List(SqList *List);
int Searchid_List(SqList *List,int id_input);
int Searchname_List(SqList *List,char *name_input);
int mode_choose(SqList *List);
?
#endif

list.c文件代碼如下:

#include "list.h"
#include "stdlib.h"
#include "string.h"
?
//創(chuàng)建順序表并初始化
SqList * Create_List()
{
? ? int num;
? ? SqList * List;
? ? List = (SqList*)malloc(sizeof(SqList));
? ? if(List == NULL)
? ? {
? ? ? ? printf("申請(qǐng)空間失?。n");
? ? ? ? return 0;
? ? }
? ? printf("請(qǐng)輸入你要初始化的菜品個(gè)數(shù):");
? ? scanf("%d",&num);
? ? if(num == 0)
? ? {
? ? ? ? printf("初始化錯(cuò)誤!\n");
? ? ? ? free(List);
? ? ? ? return 0;
? ? }
? ? for(int i=0;i<num;i++)
? ? {
? ? ? ?input_one(List, i);
? ? }
? ? List->length = num;
? ? return List;
}
?
//輸入一個(gè)菜品信息
void input_one(SqList *List,int i)
{
? ? int flag = 0;//flag=0表示第一次輸入id、name
? ? int id_temp;
? ? char name_temp[50];
? ? ?do{
? ? ? ? ? ? if(flag)
? ? ? ? ? ? ? ? printf("輸入的id已被占用,請(qǐng)重新輸入!\n");
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? printf("請(qǐng)輸入第%d個(gè)菜品的id:",i+1);
? ? ? ? ? ? scanf("%d",&id_temp); ?
? ? ? ? }while( Searchid_List(List,id_temp) != -1); //沒(méi)找到返回-1
?
? ? ? ? (List->data[i]).id = id_temp;
? ? ? ? flag = 0; //flag=0表示第一次輸入id、name
? ? ? ? ?do{
? ? ? ? ? ? if(flag)
? ? ? ? ? ? ? ? printf("輸入的name已被占用,請(qǐng)重新輸入!\n");
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? ?printf("請(qǐng)輸入第%d個(gè)菜品的名字:",i+1);
? ? ? ? ? ? ?scanf("%s",name_temp);
? ? ? ? }while( Searchname_List(List,name_temp) != -1); ?//沒(méi)找到返回-1
?
? ? ? ? strcpy((List->data[i]).name, name_temp);
? ? ? ? printf("請(qǐng)輸入第%d個(gè)菜品的價(jià)格:",i+1);
? ? ? ? scanf("%d",&(List->data[i]).price);
}
//打印順序表中所有信息
void Display_List(SqList *List)
{
? ? int len = List->length;
? ? printf("已有如下菜品:\n");
? ? for(int i=0;i<len;i++)
? ? {
? ? ? ? printf("id:%d\t",(List->data[i]).id);
? ? ? ? printf("name:%s\t",(List->data[i]).name);
? ? ? ? printf("price:%d\n",(List->data[i]).price);
? ? }
}
?
//添加一個(gè)新菜品
SqList * ?Add_List(SqList *List)
{
? ? int i = List->length;
? ? if(i==MaxSize)
? ? {
? ? ? ? printf("空間已滿(mǎn),正在返回上級(jí)\n");
? ? ? ? return List;
? ? }
? ? Display_List(List);
? ? input_one(List, i);
? ? (List->length)++;
? ? return List;
}
?
int mode_choose(SqList *List)
{
? ? int a,flag = 1;
? ? while(flag)
? ? {
? ? ? ? printf("******1----> ?按id刪除/修改 ?----******\n");
? ? ? ? printf("******2----> 按name刪除/修改 ----******\n");
? ? ? ? printf("******3----> ?退出刪除/修改 ?----******\n");
? ? ? ? printf("請(qǐng)進(jìn)行模式選擇:");
? ? ? ? scanf("%d",&a);
? ? ? ? switch(a)
? ? ? ? {
? ? ? ? ? ? case 1: return Searchid_List(List,-1);break;
? ? ? ? ? ? case 2: return Searchname_List(List,"-1");break;
? ? ? ? ? ? case 3:flag = 0;break;
? ? ? ? ? ? default:printf("error,沒(méi)有這個(gè)選項(xiàng)請(qǐng)重新選擇!\n");break;
? ? ? ? }
? ? }
? ? return -2; ?//取消刪除/修改 返回上級(jí)
}
?
//刪除一個(gè)菜品
SqList * Delete_List(SqList *List)
{
? ? int a; //用來(lái)保存找到的下標(biāo)
? ? a = mode_choose(List);
? ? if(a == -1)
? ? {
? ? ? ? printf("沒(méi)有查詢(xún)到這個(gè)id/name!\n");
? ? }
? ? else if(a == -2)
? ? {
? ? ? ? printf("正在返回上一級(jí)!\n");
? ? }
? ? else
? ? {
? ? ? ? for(int i=a;i<List->length - 1;i++) ?//前移刪除
? ? ? ? {
? ? ? ? ? ? List->data[i] = List->data[i+1];
? ? ? ? }
? ? ? ? (List->length)-- ;
? ? ? ? printf("刪除成功!\n");
? ? }
? ? return List;
}
?
//修該菜品
SqList * Updata_List(SqList *List)
{
? ? int a,flag = 0; //用來(lái)保存找到的下標(biāo)
? ? a = mode_choose(List);
? ? if(a == -1)
? ? {
? ? ? ? printf("沒(méi)有查詢(xún)到這個(gè)id/name!\n");
? ? }
? ? else if(a == -2)
? ? {
? ? ? ? printf("正在返回上一級(jí)!\n");
? ? }
? ? else
? ? {
? ? ? ? printf("原菜品信息為:");
? ? ? ? printf("id:%d\t",(List->data[a]).id);
? ? ? ? printf("name:%s\t",(List->data[a]).name);
? ? ? ? printf("price:%d\n",(List->data[a]).price);
? ? ? ? input_one(List, a);
? ? }
? ? return List;
}
?
//按id查找 ?id_input == -1為輸入查找 ?否則為傳參查找
int Searchid_List(SqList *List,int id_input)
{
? ? int ret = -1;
? ? if(id_input == -1)
? ? {
? ? ? ? printf("請(qǐng)輸入你想查詢(xún)并修改/刪除的id:");
? ? ? ? scanf("%d",&id_input);
? ? }
? ? for(int i=0;i<List->length;i++)
? ? {
? ? ? ? if((List->data[i]).id == id_input)
? ? ? ? {
? ? ? ? ? ? ret = i; ? //找到返回下標(biāo)
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? return ret; //沒(méi)找到
}
?
//按菜名查找
int Searchname_List(SqList *List,char *name_input0)
{
? ? int ret = -1;
? ? char name_input1[50];
? ? if(strcmp(name_input0,"-1")==0)
? ? {
? ? ? ? printf("請(qǐng)輸入你想查找并修改/刪除的name:");
? ? ? ? scanf("%s",name_input1);
? ? }
? ? else
? ? {
? ? ? ? strcpy(name_input1,name_input0);
? ? }
? ? for(int i=0;i<List->length;i++)
? ? {
? ? ? ? if(strcmp( (List->data[i]).name, name_input1) == 0 )
? ? ? ? {
? ? ? ? ? ? ret = i; ? //找到返回下標(biāo)
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? return ret;
}

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

相關(guān)文章

  • C/C++實(shí)現(xiàn)圖書(shū)信息管理系統(tǒng)

    C/C++實(shí)現(xiàn)圖書(shū)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了c/c++實(shí)現(xiàn)圖書(shū)信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 用C++實(shí)現(xiàn)隊(duì)列的程序代碼

    用C++實(shí)現(xiàn)隊(duì)列的程序代碼

    本篇文章是對(duì)使用C++實(shí)現(xiàn)隊(duì)列的程序代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)RSA加密解密算法是示例代碼

    C++實(shí)現(xiàn)RSA加密解密算法是示例代碼

    非對(duì)稱(chēng)加密方式可以使通信雙方無(wú)需事先交換密鑰就可以建立安全通信,因此被廣泛應(yīng)用于身份認(rèn)證、數(shù)字簽名、等信息交換領(lǐng)域。其中最具有代表性的非對(duì)稱(chēng)加密方式就是RSA公鑰密碼體制。本文將用C++實(shí)現(xiàn)RSA加密解密算法,需要的可以參考一下
    2022-09-09
  • C/C++實(shí)現(xiàn)蛇形矩陣的示例代碼

    C/C++實(shí)現(xiàn)蛇形矩陣的示例代碼

    本文主要介紹了C/C++實(shí)現(xiàn)蛇形矩陣的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • set_new_handler(0)有什么用

    set_new_handler(0)有什么用

    本文主要介紹了set_new_handler(0)有什么用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn)

    C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn)

    大家好,本篇文章主要講的是C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下
    2021-12-12
  • C++類(lèi)的定義與實(shí)現(xiàn)

    C++類(lèi)的定義與實(shí)現(xiàn)

    這篇文章主要介紹了C++類(lèi)的定義與實(shí)現(xiàn),違章圍繞C++類(lèi)的定義的相關(guān)資料展開(kāi)全文內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-01-01
  • C++實(shí)現(xiàn)softmax函數(shù)的面試經(jīng)驗(yàn)

    C++實(shí)現(xiàn)softmax函數(shù)的面試經(jīng)驗(yàn)

    這篇文章主要為大家介紹了C++實(shí)現(xiàn)softmax函數(shù)的面試經(jīng)驗(yàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • VC定制個(gè)性化的MessageBox解決方法

    VC定制個(gè)性化的MessageBox解決方法

    這篇文章主要介紹了VC定制個(gè)性化的MessageBox解決方法,有助于進(jìn)一步的了解windows應(yīng)用程序的消息機(jī)制及運(yùn)行原理,需要的朋友可以參考下
    2014-07-07
  • 深入了解C++11中promise和future的使用

    深入了解C++11中promise和future的使用

    C++11中promise和future機(jī)制是用于并發(fā)編程的一種解決方案,用于在不同線(xiàn)程完成數(shù)據(jù)傳遞(異步操作)。Promise和Future提供了訪(fǎng)問(wèn)異步操作結(jié)果的機(jī)制,可以在線(xiàn)程之間傳遞數(shù)據(jù)和異常消息。本文就來(lái)聊聊二者的使用,希望對(duì)大家有所幫助
    2022-11-11

最新評(píng)論

常山县| 紫金县| 黔西县| 南安市| 五指山市| 石楼县| 安达市| 丹东市| 遵化市| 都江堰市| 丰顺县| 桐柏县| 中超| 贺兰县| 宁国市| 丹寨县| 宁城县| 吉木萨尔县| 津南区| 卢氏县| 大悟县| 临夏县| 霍林郭勒市| 阳朔县| 武山县| 滁州市| 莱西市| 夏津县| 奇台县| 古交市| 永寿县| 紫阳县| 嘉义县| 龙山县| 高淳县| 大连市| 墨竹工卡县| 阿巴嘎旗| 佛学| 巴里| 高邮市|