自助点餐系统

    system("color 9f");
    用于修改控制台背景颜色,包含在inlucde<windows.h>


点餐函数

// 点餐
void Ordering(struct tree *t) 
{
    char order[20][20]; // 一桌最多上20份菜
    int count = 0;
    printf("\t\t请点餐:\n");
    while (1) 
	{
        printf("\t\t请输入要点的菜品名称(按q结束):");
        char name[20];
        scanf("%s", name);
        if (strcmp(name, "q") == 0) 
		{
            break;
        } 
		else 
		{
            strcpy(order[count], name);//将菜名保存
            count++;
        }
    }
    if (count > 0) 
	{
		calculate_bill(order,count,t);	
    } 
	else
	{
        printf("\t\t你没有点任何菜品\n");
    }
}


结账函数:

void checkout()
{
	printf("\t\t您一共消费%f元\n",total_price);
	printf("\t\t请输入支付金额:");
	float paid;
	scanf("%f", &paid);
	while (paid < total_price) 
	{
	    printf("\t\t支付金额不足,请重新输入:");
	    scanf("%f", &paid);
	}
	printf("\t\t找零:%.2f元\n", paid-total_price);
	today_price+=total_price;
	total_price=0;
	printf("\t\t结账完成,欢迎再次光临!\n");
}


//删除节点(将菜)
struct dish *delete_node(struct dish *p, char *name) 
{
    struct dish *temp;
    if (p == NULL) 
	{
        return NULL;
    } 
	else if (strcmp(name, p->name) < 0) 
	{
        p->left = delete_node(p->left, name);
    } 
	else if (strcmp(name, p->name) > 0)
	{
        p->right = delete_node(p->right, name);
    } 
	else //找到要删除的结点p了
	{
        if (p->left == NULL) 
		{
            temp = p->right;
            free(p);
            return temp;
        } 
		else if (p->right == NULL) 
		{
            temp = p->left;
            free(p);
            return temp;
        } 
		else //找到的菜品左右结点都不为空
		{
            temp = p->right;//指向p的右孩子
            while (temp->left != NULL) 
			{
                temp = temp->left;
            }
            strcpy(p->name, temp->name);
            p->price = temp->price;
            p->right = delete_node(p->right, temp->name);
        }
    }
    return p;
}

// 将菜品从"树"里删除
void delete_dish(struct tree *t) {
    char name[20];
    printf("\t\t请输入要删除的菜品名称:");
    scanf("%s", name);
    t->root = delete_node(t->root, name);
    printf("\t\t菜品已经成功删除\n\n");
}

删除结点,使用二叉搜索树存储!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值