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");
}
删除结点,使用二叉搜索树存储!!