1. 程式人生 > >餐廳管理系統——計算機軟體技術基礎課程設計

餐廳管理系統——計算機軟體技術基礎課程設計

內容說明:C語言編寫,大一計算機軟體技術基礎課程設計課題,參考https://blog.csdn.net/kiddingstreet/article/details/78258787完成。題目:網上訂餐系統設計

設計一個小程式,維護某家餐廳的客戶資訊和訂餐資訊。客戶資訊包括:姓名,電話,餘額。可以查詢這些資訊。可以充值,充值後餘額相應改變。菜品包括酸菜魚,15元。豆花魚,12元。紅燒魚,8元。客戶預定某項菜品後,餘額相應改變,訂購的菜品亦可查詢。

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 

//建立關於選單的結構體 
typedef struct food
{
    char name[20];
    int price;
    struct food *next; 
}food,*link_food;

//建立關於使用者的結構體
typedef struct user
{
	char name[10];
	char tel[10];
	int balance;
	struct user *next;
}user,*link_user;

//建立關於訂單的結構體 
typedef struct foodw
{
    char namef[20];
    int price;
    char yonghu[20];
    struct foodw *nextf; 
}foodw,*link_foodw;

//開始介面
void welcome()
{
    int i=0;
    char a[52]="\t\t->>WELCOME TO RESTAURANT MANAGEMENT SYSTEM<<--";
    printf("\n\n\n\n\t\t");
    while(a[i])
    {
        printf("%c",a[i]);
        i++;
    }
    printf("\n\n\n\n\t\t");
	printf("\n\n\n\n\t\t\t\t\t--------------------------------\n");
    printf("\t\t\t\t\t     餐  廳  管  理  系  統     \n");
    printf("\t\t\t\t\t          1.選單                \n");
    printf("\t\t\t\t\t          2.使用者                \n");
    printf("\t\t\t\t\t--------------------------------\n");
}

//建立使用者
void *creats()
{
    char a[30],b[20];
	int d;
    link_user LU;
    user *s,*r;
    LU=r=(user *)malloc(sizeof(user));
    LU->next=NULL;
    r=LU;
    while(1)
    {
        printf("請輸入使用者資訊:\n");
        printf("\t\t●    使用者姓名:");
        scanf("%s",a);
        printf("\n\t\t●    使用者電話:");
        scanf("%s",b);
        if(strcmp(a,"0")!=0)
        {
            printf("\n\t\t●    使用者餘額:");  
            scanf("%d",&d);
            s=(user *)malloc(sizeof(user));
            strcpy(s->name,a);
            strcpy(s->tel,b);
            s->balance=d;
            r->next=s;
            s->next=NULL;
            r=s;
        }
        else
            break;
    }
    return LU; 
}

//建立訂單
void *creatsfw(link_user LU)
{
    char a[30],d[20];
	int b;
    link_foodw LFW;
    foodw *s,*r;
    LFW=r=(foodw *)malloc(sizeof(foodw));
    LFW->nextf=NULL;
    r=LFW;
    while(1)
    {
        printf("請輸入訂單資訊:\n");
        printf("\t\t●    訂單:");
        scanf("%s",a);
        printf("\n\t\t●    訂單價格:");
        scanf("%d",&b);
        if(strcmp(a,"0")!=0)
        {
            printf("\n\t\t●    使用者姓名:");  
            scanf("%s",d);
            s=(foodw *)malloc(sizeof(foodw));
            strcpy(s->namef,a);
			s->price=b;
            strcpy(s->yonghu,d);
            r->nextf=s;
            s->nextf=NULL;
            r=s;
			disvalue(LU,b,d);
		}
        else
            break;
    }
    return LFW; 
}

//輸出訂單
void outputuserw(link_foodw LFW)
{
    foodw *x;
    x=LFW->nextf;
    printf("\n\t\t\t\t\t        訂       單                        "); 
    printf("\n\t\t\t\t\t------------------------------------\n");
    printf("\t\t\t\t\t使用者        訂單         價格\n"); 
    printf("\t\t\t\t\t------------------------------------\n");
    while(x!=NULL)
    {
        printf("\t\t\t\t\t%-13s%-12s%-12d元\n",x->yonghu,x->namef,x->price);
        printf("\t\t\t\t\t------------------------------------\n");
        x=x->nextf;
    }
}

//輸出使用者列表
void outputuser(link_user LU)
{
    user *x;
    x=LU->next;
    printf("\n\t\t\t\t\t        用       戶                        "); 
    printf("\n\t\t\t\t\t------------------------------------\n");
    printf("\t\t\t\t\t姓名        電話         餘額\n"); 
    printf("\t\t\t\t\t------------------------------------\n");
    while(x!=NULL)
    {
        printf("\t\t\t\t\t%-13s%-12s%-12d元\n",x->name,x->tel,x->balance);
        printf("\t\t\t\t\t------------------------------------\n");
        x=x->next;
    }
}

//充值
void value(link_user LU)
{
    user *x;
	char a[10];
	int b;
    x=LU->next;
	printf("輸入使用者電話:\n");
	scanf("%s",a);
	printf("輸入充值價格:\n");
	scanf("%d",&b);
    if(strcmp(a,x->tel)!=0)
    {
        x=x->next;
    }
	else
	{
		x->balance=x->balance+b;
	}
}

//餘額減少
int disvalue(link_user LU,int b,char a[])
{
    user *x;
    x=LU->next;
    if(strcmp(a,x->name)!=0)
    {
        x=x->next;
    }
	else
	{
		x->balance=x->balance-b;
	}
	return 0;
}

//選擇介面
void choose(int x)
{
		if(x==1)
		{
			meun();
		}
		if(x==2)
		{
		  users();
		}
}

//訂單介面
void foodwrite(link_user LU)
{
	int x;
	link_foodw LFW;
	printf("\n\n\n\n\t\t\t\t\t--------------------------------\n");
    printf("\t\t\t\t\t     訂  單  管  理  系  統     \n");
    printf("\t\t\t\t\t          1.建立訂單            \n");
    printf("\t\t\t\t\t          2.檢視訂單            \n");
	printf("\t\t\t\t\t          0.返回                \n");
    printf("\t\t\t\t\t--------------------------------\n");
	while(scanf("%d",&x)!=0)
	{
		if(x==1)
		{
			LFW=creatsfw(LU);
		}
		if(x==2)
		{
			outputuserw(LFW);
		}
		if(x==0)
			break;
	}
	return 0;
}

//使用者介面
int users()
{
	int x;
	link_user LU;
	printf("\n\n\n\n\t\t\t\t\t--------------------------------\n");
    printf("\t\t\t\t\t     用  戶  管  理  系  統     \n");
    printf("\t\t\t\t\t          1.新使用者              \n");
    printf("\t\t\t\t\t          2.使用者名稱單            \n");
    printf("\t\t\t\t\t          3.充值                \n");
	printf("\t\t\t\t\t          4.訂單                \n");
	printf("\t\t\t\t\t          0.返回                \n");
    printf("\t\t\t\t\t--------------------------------\n");
	while(scanf("%d",&x)!=0)
	{
		if(x==1)
		{
			LU=creats();
		}
		if(x==2)
		{
			outputuser(LU);
		}
		if(x==3)
		{
			value(LU);
		}
		if(x==4)
		{
			foodwrite(LU);
		}
		if(x==0)
			break;
	}
	return 0;
}

//輸出菜譜
void outputfood(link_food LF)
{
    food *p;
    p=LF->next;
    printf("\n\t\t\t\t\t        菜       譜                        "); 
    printf("\n\t\t\t\t\t-------------------------\n");
    printf("\t\t\t\t\t\t菜名        菜價         \n"); 
    printf("\t\t\t\t\t-------------------------\n");
    while(p)
    {
        printf("\t\t\t\t\t%-13s%-12d元%\n",p->name,p->price);
        printf("\t\t\t\t\t-------------------------\n");
        p=p->next;
    }
}

//菜譜
int meun()
{
	int i=0,j=0,k;
    link_food LF;
    food *s,*r;
    char a[10][10]={"酸菜魚","豆花魚","紅燒魚"};
	int b[10]={15,12,8};
    LF=(food *)malloc(sizeof(food));
    LF->next=NULL;
    r=LF;
	printf("需要增加新菜品嗎?\n");
	printf("1.YES     2,NO\n");
	scanf("%d",&k);
	if(k==1)
	{
		int q,p;
		q=j+3;
		for(p=0;p<7;p++)
		{
			printf("請輸入菜名:\n");
			scanf("%s",a[q]);
			printf("請輸入價格:\n");
			scanf("%d",&b[q]);
			if(strcmp(a[q],"0")==0)
				break;
			q++;
			j++;
		}
	}
	for(j=0;j<10;j++)
	{
		if(strcmp(a[j],"0")!=0)
		{
			s=(food *)malloc(sizeof(food));
			s->price=b[j];
			strcpy(s->name,a[j]);
			r->next=s;
			s->next=NULL;
			r=s;
		} 
		else
			break;
	}
	outputfood(LF);
	return 0;
}

//主函式
void main()
{
	int x;
	welcome();
	while(scanf("%d",&x)!=EOF)
	{
		choose(x);
	}
}