餐厅管理系统——计算机软件技术基础课程设计

内容
说明: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);
	}
}


猜你喜欢

转载自blog.csdn.net/qq_42034995/article/details/80772311