自助点餐系统(三)

实现了管理员的权限后,现在弄了用户的菜单。

void user()
{
    menu();
}

一、菜单menu()

void menu()
{
    int sel;
    system("cls");
    printf("----------------------------------------\n");
    printf("|         欢迎来到米其林8星餐厅        |\n");
    printf("----------------------------------------\n");
    //餐桌信息
    printf("----------------------------------------\n");
    printf("|****          1.点餐              ****|\n");
    printf("|****          2.查询              ****|\n");
    printf("|****          3.退出              ****|\n");
    printf("----------------------------------------\n");
    printf("请输入你的选择【1 or 2 or 3】:");
    scanf("%d",&sel);
    //判断是否输入错误
    while(sel!=1 && sel!=2&&sel!=3)
    {
        printf("输入错误,请重新再输入:");
        scanf("%d",&sel);
    }
    switch(sel)
    {
    case 1:
        diancan();
        break;
    case 2:
        check();
        break;
    case 3:
        getchar();
        loads();
    }
}

二、点餐 diancan()

void diancan()
{
    system("cls");
    float money=0;
    int counts=0;
    int number,sel;
    int k,i,j;
    printf("请你输入你当前所坐桌的桌号【1~199】:");
tt:
    scanf("%d",&k);
    //判断一下输入的桌号是否正确
    if(custmer[k].people!=0)
    {
        printf("抱歉,这个餐桌号已经有人,请输入你自己所处的餐桌位:");
        goto tt;
    }
    custmer[k].seat=k;
    custmer[k].sum=0;
    printf("请你输入用餐人数:");
    scanf("%d",&custmer[k].people);
    printf("请你输入点菜的个数:");
    scanf("%d",&custmer[k].sl);
    int x=custmer[k].sl;
    printf("----------------------------------------\n");
    printf("今日菜品有如下:\n");
    output();
    printf("----------------------------------------\n");
    int count=reads();
    output();
    for(int j=0; j<x; j++)
    {
        printf("第%d个菜品的编码:",j+1);
here:
        scanf("%d",&custmer[k].counts[j]);
        //判断是否有此编码
        int flag=1;//假设为不存在的状态

        for(i=0; i<count; i++)
            if(custmer[k].counts[j]==caipin[i].bianma)
                flag=0;//寻找到就改变状态
        if(flag==1)
        {
            printf("非常抱歉亲爱的顾客,你所输入编码对应的菜品今日不供应!!!\n");
            printf("请重新输入你第%d道菜的编码:",j+1);
            goto here;
        }

        for(i=0; i<count; i++) //查找菜品的金额
            if(custmer[k].counts[j]==caipin[i].bianma)
                {
                    custmer[k].sum+=caipin[i].price;
                    caipin[i].hot++;
                }
    }
    qsort(caipin,count,sizeof(caipin[0]),comp);
    save(count);

    printf("你当前所需要支付的金额:%f\n",custmer[k].sum);
    printf("是否选择提交订单【1 or 2】:");
    scanf("%d",&sel);
    while(sel!=1 && sel!=2)
    {
        printf("输入错误,请重新再输入:");
        scanf("%d",&sel);
    }
    if(sel==1)
    {
        custmer[k].f=1;
        pay(k);
        printf("支付成功,祝您用餐愉快!!\n");
    }
    else
        menu();

}

(三)查询 check()

void check()
{
    int n,sel;
    int count;
    count=reads();
    printf("输入当前的所在桌位:");
    scanf("%d",&n);
    printf("%5s","餐桌号码");
    printf("%15s","餐桌人数");
    printf("%13s","点菜道数");
    printf("%11s","需付金额");
    printf("%20s","所点菜品");
    printf("\n");

    printf("%4d号",n);
    printf("%11d人",custmer[n].people);
    printf("%11d道",custmer[n].sl);
    printf("%11.2fRmb",custmer[n].sum);
    //找菜名
    int flag=1,x,i;//标记一下,用来美化一下界面
    for(x=0; x<custmer[n].sl; x++)
        for(i=0; i<count; i++)
            if(custmer[n].counts[x]==caipin[i].bianma)
            {
                if(flag==1)
                {
                    printf("%20s",caipin[i].name);
                    flag=0;
                }
                else
                    printf(" %s",caipin[i].name);
            }
    printf("\n");
    //顾客点单完查看后,根据需要加餐和减餐
    printf("----------------------------------------\n");
    printf("|****          1.加菜              ****|\n");
    printf("|****          2.减菜              ****|\n");
    printf("|****          3.返回              ****|\n");
    printf("----------------------------------------\n");
    printf("请输入你的选择【1 or 2 or 3】:");
    scanf("%d",&sel);
    //判断是否输入错误
    while(sel!=1 && sel!=2 && sel!=3)
    {
        printf("输入错误,请重新再输入:");
        scanf("%d",&sel);
    }
    printf("----------------------------------------\n");
    switch(sel)
    {
    //加菜
    case 1:
    {
        x=custmer[n].sl;
        int c;
        output();
        printf("请输入您想添加菜的编码:");
aaa:
        scanf("%d",&custmer[n].counts[x]);
        //判断是否有此编码
        flag=1;//假设为不存在的状态
        for(i=0; i<count; i++)
            if(custmer[n].counts[x]==caipin[i].bianma)
                flag=0;//寻找到就改变状态
        if(flag==1)
        {
            printf("非常抱歉亲爱的顾客,你所输入编码对应的菜品今日不供应!!!\n");
            printf("请重新输入你第%d道菜的编码:",x+1);
            goto aaa;
        }

        custmer[n].sl++;//菜数增加
        for(i=0; i<count; i++) //查找菜品的金额
            if(custmer[n].counts[x]==caipin[i].bianma)
                {
                    custmer[n].sum+=caipin[i].price;
                    caipin[caipin[i].bianma].hot++;
                }
        save(count);
        //保存
        printf("是否选择提交订单【1 or 2】:");
        scanf("%d",&sel);
        while(sel!=1 && sel!=2)
        {
            printf("输入错误,请重新再输入:");
            scanf("%d",&sel);
        }
        if(sel==1)
        {
            if(custmer[n].f==0)
            {
                custmer[n].f=1;
                pay(n);
            }
            printf("支付成功,祝您用餐愉快\n");
        }
        else menu();
    }
    break;
    case 2:	//减菜
    {
        int code;
        int x=custmer[n].sl;
        for(int k=0; k<x; k++)
            printf("%-15d%-15s\n",custmer[n].counts[k],caipin[custmer[n].counts[k]]);
        printf("请输入你想删去菜品的编码:");
        scanf("%d",&code);
        flag=1;//给标记看是否能找到
        for(i=0; i<custmer[n].sl; i++)
        {
            if(code==custmer[n].counts[x])
            {
                flag=0;
                int j;
                for(j=i; j<custmer[n].sl; j++)
                {
                    if(j<custmer[n].sl-1)
                        custmer[n].counts[j]=custmer[n].counts[j+1];
                    if(j==custmer[n].sl-1)
                        custmer[n].counts[j]=0;
                }
                caipin[code].hot--;
            }
        }
        save(count);
        if(flag==1)
            printf("您的订单中尚未添加该菜\n");
        else
        {
            custmer[n].sl--;//所点菜品数减去一道
            //再把所需要的金额减去所删去的菜品对应的价格
            for(i=0; i<count; i++) //查找菜品的金额
                if(code==caipin[i].bianma)
                    custmer[n].sum-=caipin[i].price;
        }

        printf("是否选择提交订单【1 or 2】:");
        scanf("%d",&sel);
        while(sel!=1 && sel!=2)
        {
            printf("输入错误,请重新再输入:");
            scanf("%d",&sel);
        }
        if(sel==1)
        {
            if(custmer[n].f==0)
            {
                custmer[n].f=1;
                pay(n);
            }
            printf("支付成功!\n");
        }
        else
            menu();
    }
    break;
    case 3:
        menu();
        break;
    }

}

目前还少了一些功能以及内容:热销菜,保存就餐者的点菜信息等等。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值