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

C語言實現(xiàn)簡易訂餐系統(tǒng)

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

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

主要功能:

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

1、添加新菜

2、刪除菜品

3、修改菜品信息

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

(2)點餐(客戶使用)  采用鏈表實現(xiàn)

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

2、計算顯示訂單總價.........

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

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

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

main.c文件中代碼如下:

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

main函數(shù)里只調(diào)用了一個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進入菜單維護模式****\n\t\t****輸入2進入點餐模式****\n");
? ? ? ? printf("\t\t****輸入3退出程序****\n");
? ? ? ? printf("請進行模式選擇:\n");
? ? ? ? scanf("%d",&a);
? ? ? ? switch(a)
? ? ? ? {
? ? ? ? ? ? case 1: List = menu_mt(List);break;
? ? ? ? ? ? case 2: Head = order_mt(Head,List);break; ?
? ? ? ? ? ? case 3: printf("謝謝使用本程序!期待下次與你會見!\n");
? ? ? ? ? ? if(List != NULL) free(List);return ; ?//結束程序
? ? ? ? ? ? default:printf("error,沒有這個選項!請重新選擇!\n");break;
? ? ? ? }
? ? }
}
?
SqList * menu_mt(SqList * List)
{
? ? int flag = 1,a;//flag為退出標志
? ? while(flag)
? ? {
? ? ? ? menu_help();
? ? ? ? printf("請進行模式選擇:");
? ? ? ? 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,沒有這個選項,請重新選擇!\n");break;
? ? ? ? }
? ? }
? ? printf("已成功退出菜單維護模式!\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------> 返回上級 ------******\n");
}
?
void order_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------> ? 計算訂單價格 ? ------******\n");
? ? printf("\t\t******7------> ? ? 返回上級 ? ? ------******\n");
}
?
Link_Node * order_mt(Link_Node *Head,SqList *List)
{
? ? int flag = 1,a;//flag為退出標志
? ? while(flag)
? ? {
? ? ? ? order_help();
? ? ? ? printf("請進行模式選擇:");
? ? ? ? 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,沒有這個選項,請重新選擇!\n");break;
? ? ? ? }
? ? }
? ? Destory_Link(Head);
? ? printf("已成功退出點餐模式!\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("申請空間失??!\n");
? ? else?
? ? {
? ? ? ? Head->next = NULL;
? ? ? ? printf("訂單申請成功,您現(xiàn)在可以開始點餐啦!\n");
? ? }
? ? return Head;
}
?
//添加結點
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("申請空間失?。n");
? ? else
? ? {
? ? ? ? printf("輸入你想添加菜品的id:");
? ? ? ? scanf("%d",&id_input);
? ? ? ? a = Searchid_List(List,id_input);
? ? ? ? if(a == -1)
? ? ? ? {
? ? ? ? ? ? printf("暫時還沒有這個菜呀,請您重新選擇。\n");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? ?Ptemp->data = List->data[a];
? ? ? ? ? ? Ptemp->next = Head->next;
? ? ? ? ? ? Head->next = Ptemp;
? ? ? ? ? ? printf("菜品已成功添加到您的訂單!\n");
? ? ? ? }
? ? }
? ? return Head;
}
?
//刪除結點
Link_Node *Delete_Link(Link_Node *Head)
{
? ? int id_input;
? ? Link_Node *Pt=Head->next,*Pq=Head;
? ? printf("請輸入你想刪除菜品的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("刪除失敗,您的訂單中沒有這個菜喔.\n");
? ? }
? ? return Head;
}
?
//打印訂單
void Display_Link(Link_Node *Head)
{
? ? Link_Node *Pt=Head->next;
? ? printf("已點菜品如下:\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;
? ? } ?
}
?
//計算訂單總價
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("您的訂單總價格為:%d元\n",sum);
}
?
//銷毀鏈表
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("申請空間失敗!\n");
? ? ? ? return 0;
? ? }
? ? printf("請輸入你要初始化的菜品個數(shù):");
? ? scanf("%d",&num);
? ? if(num == 0)
? ? {
? ? ? ? printf("初始化錯誤!\n");
? ? ? ? free(List);
? ? ? ? return 0;
? ? }
? ? for(int i=0;i<num;i++)
? ? {
? ? ? ?input_one(List, i);
? ? }
? ? List->length = num;
? ? return List;
}
?
//輸入一個菜品信息
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已被占用,請重新輸入!\n");
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? printf("請輸入第%d個菜品的id:",i+1);
? ? ? ? ? ? scanf("%d",&id_temp); ?
? ? ? ? }while( Searchid_List(List,id_temp) != -1); //沒找到返回-1
?
? ? ? ? (List->data[i]).id = id_temp;
? ? ? ? flag = 0; //flag=0表示第一次輸入id、name
? ? ? ? ?do{
? ? ? ? ? ? if(flag)
? ? ? ? ? ? ? ? printf("輸入的name已被占用,請重新輸入!\n");
? ? ? ? ? ? flag = 1;
? ? ? ? ? ? ?printf("請輸入第%d個菜品的名字:",i+1);
? ? ? ? ? ? ?scanf("%s",name_temp);
? ? ? ? }while( Searchname_List(List,name_temp) != -1); ?//沒找到返回-1
?
? ? ? ? strcpy((List->data[i]).name, name_temp);
? ? ? ? printf("請輸入第%d個菜品的價格:",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);
? ? }
}
?
//添加一個新菜品
SqList * ?Add_List(SqList *List)
{
? ? int i = List->length;
? ? if(i==MaxSize)
? ? {
? ? ? ? printf("空間已滿,正在返回上級\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("請進行模式選擇:");
? ? ? ? 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,沒有這個選項請重新選擇!\n");break;
? ? ? ? }
? ? }
? ? return -2; ?//取消刪除/修改 返回上級
}
?
//刪除一個菜品
SqList * Delete_List(SqList *List)
{
? ? int a; //用來保存找到的下標
? ? a = mode_choose(List);
? ? if(a == -1)
? ? {
? ? ? ? printf("沒有查詢到這個id/name!\n");
? ? }
? ? else if(a == -2)
? ? {
? ? ? ? printf("正在返回上一級!\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; //用來保存找到的下標
? ? a = mode_choose(List);
? ? if(a == -1)
? ? {
? ? ? ? printf("沒有查詢到這個id/name!\n");
? ? }
? ? else if(a == -2)
? ? {
? ? ? ? printf("正在返回上一級!\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("請輸入你想查詢并修改/刪除的id:");
? ? ? ? scanf("%d",&id_input);
? ? }
? ? for(int i=0;i<List->length;i++)
? ? {
? ? ? ? if((List->data[i]).id == id_input)
? ? ? ? {
? ? ? ? ? ? ret = i; ? //找到返回下標
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? return ret; //沒找到
}
?
//按菜名查找
int Searchname_List(SqList *List,char *name_input0)
{
? ? int ret = -1;
? ? char name_input1[50];
? ? if(strcmp(name_input0,"-1")==0)
? ? {
? ? ? ? printf("請輸入你想查找并修改/刪除的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; ? //找到返回下標
? ? ? ? ? ? break;
? ? ? ? }
? ? }
? ? return ret;
}

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

相關文章

最新評論